Amazon Web Services ブログ
Amazon S3 でオブジェクトの意図しない暗号化を防止する
このブログは 2025 年 1 月 15 日に Steve de Vera(AWS Customer Incident Response Team)と Jennifer Paz(AWS Customer Incident Response Team)によって執筆された内容を日本語化したものです。原文はこちらを参照してください。
2025 年 1 月 17 日: 本投稿で詳解されている不正な方法のリスクを軽減するために、一時的な認証情報を使用することの重要性を強調するために、原文は更新されました。
Amazon Web Services(AWS)では、お客様のデータセキュリティが最優先事項であり、今後もそれは変わりません。AWS Customer Incident Response Team(CIRT)と当社の自動セキュリティ監視システムは、最近 Amazon Simple Storage Service(Amazon S3)バケットに関連する異常な暗号化アクティビティの増加を確認しました。
これらの行為は AWS サービス内の脆弱性を悪用するものではありません。権限のないユーザーが、意図しない方法で利用できる有効な認証情報を用いたものであることを認識する必要があります。これらの行為は責任共有モデルのお客様範囲で発生しますが、AWS では、お客様がこのようなアクティビティの影響を防止または軽減できる手順を推奨します。
私たちのセキュリティチームは、お客様と協力しながらカスタマー提供キーを使用したサーバーサイド暗号化(SSE-C)と呼ばれる暗号化方式を使用した、Amazon S3 におけるデータ暗号化イベントの増加を検出しました。これは多くのお客様が使用している機能ですが、SSE-C を使用した多数の S3 CopyObject
コマンドによってオブジェクトが上書きされ、新しい暗号化キーでお客様データを再暗号化するというパターンを私たちは検出しました。私たちの分析により、これはお客様の有効な認証情報を入手し、それを使用してオブジェクトを再暗号化した悪意のある人物によって実行されていたことが判明しました。
アクティブディフェンスツールを使用して、多くのケースにおけるこの種の不正なアクティビティを防止することに役立つ自動緩和策を実装しました。これらの緩和策により、お客様が保護措置を行わない場合でも、すでに高い確率で防止に成功しています。ただし、攻撃者は有効な認証情報を使用しており、AWS が正常なアクティビティと悪意のあるアクティビティを明確に区別することは困難です。したがって、リスクを軽減するためにベストプラクティスに従うことを推奨します。
SSE-C の不正使用を防ぐために、次の 4 つのセキュリティのベストプラクティスを実装することをお勧めします:
- 一時的な認証情報を利用する
- データ復旧手順を実装する
- AWS リソースの予期しないアクセスパターンを監視する
- アプリケーションで必要な場合を除き、SSE-C の使用をブロックする
1. 一時的な認証情報を利用する
上述したアクティビティでは SSE-C 暗号化が使用されていますが、この行為と多くのセキュリティイベントの根本的な原因は、長期的なアクセスキーの侵害にあります。認証情報の侵害リスクを軽減する最も効果的な方法は、そもそも長期的な認証情報を作成しないことです。存在しない認証情報は公開または盗難されることはありません。また、AWS は、ソースコードまたは設定ファイルに認証情報を保存しないで済むような豊富な機能を提供しています。
AWS IAM ロールを利用することで、アプリケーションは、一時的な認証情報を使用して、Amazon Elastic Compute Cloud(Amazon EC2)インスタンス、Amazon Elastic Container Service(Amazon ECS)または Amazon Elastic Kubernetes Service(Amazon EKS)コンテナ、AWS Lambda 関数からの署名された API リクエストを安全に実行できます。AWS クラウドの外部システムにおいても、AWS IAM Roles Anywhere を使用することで、長期的な AWS 認証情報がなくとも認証された API リクエストを実行できます。さらに、AWS IAM Identity Center を使用すると、開発者は多要素認証(MFA)によって保護された長期的なユーザー ID に裏付けられた一時的な認証情報を取得できます。
これらの技術はすべて AWS Security Token Service(AWS STS)を利用し、アプリケーション内のコードまたは設定ファイルで長期的な AWS セキュリティ認証情報を配布または埋め込むことなく、AWS リソースへのアクセスを制御できる一時的なセキュリティ認証情報を発行します。
2. データ復旧手順を実装する
データ保護メカニズムが整備されていない場合、データの復旧に時間がかかる可能性があります。データ保護のベストプラクティスとして、データが上書きされないように保護し、重要なデータのセカンダリコピーを保持することをお勧めします。
Amazon S3 でバージョニングを有効にすると、バケット内のオブジェクトの複数のバージョンが保持され、誤って削除または上書きされたオブジェクトを復元できます。特にバケット内のオブジェクトを頻繁に上書きするアプリケーションの場合には、バージョニングによってストレージコストが増加する可能性があることに注意する必要があります。この場合、古いバージョンを管理し、ストレージコストを制御するために Amazon S3 Lifecycle ポリシーを実装することを検討してください。
さらに、重要なデータを別のバケットにコピーしたり、バックアップを作成することもできます。また、別の AWS アカウントや AWS リージョンにコピーすることもできます。この場合、Amazon S3 のレプリケーション機能を使用してバケット間でオブジェクトを自動的にコピーします。これらのバケットは、同じ AWS アカウントまたは別の AWS アカウント、同じ AWS リージョンまたは別の AWS リージョンでも可能です。Amazon S3 におけるレプリケーションでは、より厳格な目標復旧時点(RPO)と目標復旧時間(RTO)を持つお客様向けに SLA を提供しています。また、Amazon S3 バケットの定期的なバックアップを自動化するマネージドサービス AWS Backup for Amazon S3 を使用することもできます。
3. AWS リソースの予期しないアクセスパターンを監視する
監視を行わない場合、Amazon S3 バケットに対する不正なアクティビティに気付かない可能性があります。AWS CloudTrail や Amazon S3 サーバーアクセスログなどのツールを使用して、データへのアクセスを監視することをお勧めします。
AWS CloudTrail を使用すると、Amazon S3 を含めた AWS リソース全体のイベントをログに記録したり、ログを 1 つのアカウントに統合して、セキュリティチームがアクセスして監視するなどのことが実現できます。また、特定の Amazon S3 メトリクスまたはログに基づいて Amazon CloudWatch アラームを作成し、異常なアクティビティを警告することもできます。これらのアラートは、異常な動作を迅速に特定するのに役立ちます。Amazon EventBridge と AWS Lambda を使用した是正措置の自動化も設定することができます。組織全体のすべてのバケットをスキャンし、Amazon S3 ブロックパブリックアクセスを適用するために使用できる実装例もあります。また、この記事では、オブジェクトのアップロードの暗号化方法をリアルタイムで監査する方法が説明されています。
4. アプリケーションで必要な場合を除き、SSE-C の使用をブロックする
アプリケーションが暗号化する際に SSE-C を使用していない場合は、Amazon S3 バケットのリソースポリシー、または AWS Organizations 内の組織に適用された Resource Control Policy(RCP)を使用して、SSE-C の使用をブロックできます。
Amazon S3 バケットのリソースポリシーは一般的にバケットポリシーと呼ばれ、お客様が個々の Amazon S3 バケットのアクセス許可を制御できるようにします。バケットポリシーは、S3 PutBucketPolicy
API コール、AWS Command Line Interface(CLI)、または AWS マネジメントコンソールを使用して適用できます。バケットポリシーの仕組みの詳細については、Amazon S3 のドキュメントを参照してください。次の例は、<your-bucket-name>
というバケットに対する SSE-C リクエストをブロックするバケットポリシーを示しています。
RCP を使用すると、AWS Organizations 内の組織全体のリソースに適用される、アクセス許可の最大範囲をお客様が指定できます。RCP は、AWS Organizations UpdatePolicy
API コール、AWS CLI、または AWS マネジメントコンソールを使用して適用できます。RCP の仕組みの詳細については、AWS Organizations のドキュメントを参照してください。次の例は、組織内のバケットに対する SSE-C リクエストをブロックする RCP を示しています。
まとめ
AWS 環境に対する一般的な攻撃から利用者の貴重なデータを守るために実行できる最も価値があり、本質的なことは、長期的な認証情報(アクセスキー/シークレットキー)の使用を控えるまたは最小限に抑えることです。その後、すべてのプリンシパルの権限を必要最小限に抑えるようにします(いわゆる「最小権限」分析)。さらに、このブログで説明した特定の攻撃パターンについては、最も一般的な指標を強調して示しました。お客様のセキュリティチームが環境を常に保護するために取り組んでいる間、AWS の多くのチーム (AWS CIRT、Amazon の脅威インテリジェンス、Amazon S3 チームなどのサービスチームなど)が、貴重なデータを保護するために革新、コラボレーション、インサイトの共有に熱心に取り組んでいることを知っておいてください。
この投稿では、お客様のデータに対する最近の脅威に関する最新情報を提供し、紛失または盗難された AWS 認証情報を使用して SSE-C でデータを暗号化する悪意のあるユーザーのリスクから、お客様を保護するために使用できる 4 つのセキュリティのベストプラクティスを紹介しました。
攻撃者の戦術が進化しても、お客様のセキュリティに対する私たちの取り組みは揺るぎません。私たちは協力して、より安全なクラウド環境を構築し、お客様が自信を持って革新できるようにしています。
不正なアクティビティが疑われる場合は、すぐに AWS サポートにご連絡ください。