
2026/03/13 17:31
バケットスクワッティングは、ようやく終息したのです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
現在の要約はすべての主要な技術的詳細を網羅していますが、新しい名前空間ルールが遡及しないことを明示し、業界転換に関する広範な推論を除去することでさらに凝縮できます。以下に洗練されたバージョンを示します。
洗練された要約
AWSはS3バケット名の「名前空間」パターンを必須化しました:新しいバケットはすべて
<prefix>-<accountid>-<region>-an の形式に従う必要があります。 -an サフィックスはアカウント名前空間を示し、所有するアカウントのみがその名前でバケットを作成できるようにします。ユーザーが既存の名前を再利用したり、誤ったリージョンを指定すると、AWS は InvalidBucketNamespace エラーを返します。既存のバケットはこのパターンに合わせてリネームする必要がありますが、このルールは遡及しません。
この変更は、名前をアカウントとロケーションに強く結びつけることで「バケットスコッティング」を防止します。Google Cloud のドメイン検証や Azure のストレージアカウント名24文字制限など、他のクラウドでも類似した名前空間制御が存在します。管理者は
s3:x-amz-bucket-namespace 条件キーを使用したサービスコントロールポリシーでこのルールを強制できます。
組織はスクリプトを更新し、レガシーバケットの名前変更を行う必要があります。この動きにより、偶発的または悪意あるアクセスからの保護が強化され、クラウドストレージにおける標準化された命名規則への広範な推進も反映されています。
このバージョンではすべての主要ポイントを保持し、推測的な表現を除外しつつ読者にとって明確さを維持しています。
本文
十年間、AWS と第三者のセキュリティチームと協力して Amazon S3 のバケットスキャッティング/バケットスナイピング問題を解決してきました。
ついに AWS は、バケット名の付け方を変えるべきだというソリューションを公開しました。
バケットスキャッティングとは?
2019 年に初めて書いた「S3 Bucket Namesquatting – Abusing predictable S3 bucket names」で説明した通りです。
簡潔に言えば、S3 のバケット名は世界で一意です。バケット所有者が削除すると、その名前は他の誰でも登録できるようになります。攻撃者は同じ名前のバケットを作成し、機密データへアクセスしたりサービスを妨害したりする可能性があります。
多くの場合、
myapp-us-east-1 のように AWS リージョンを末尾に付ける という予測しやすい命名規則が使われます。これだと攻撃者が推測して以前に使用されたバケットを取得しやすく、内部チームの多くが被害に遭っています。私はこの問題について AWS Security Outreach チームと約十年にわたり多数のコミュニケーションを行ってきました。
新しい名前空間
AWS は S3 バケット用に 名前空間(namespace) を導入しました:
<yourprefix>-<accountid>-<region>-an
例
- アカウント ID が
、プレフィックスが123456789012
、リージョンがmyapp
の場合us-west-2
myapp-123456789012-us-west-2-an
末尾の
-an は「アカウント名前空間」を示します。この構文により、その名前空間を所有するアカウントだけが同名バケットを作成でき、バケットスキャッティング攻撃を効果的に防止できます。
他のアカウントが同じ名前でバケットを作ろうとすると InvalidBucketNamespace エラーが返されます。また、リージョンが名前に指定されたものと一致しない場合も同様です。
AWS はこの名前空間をデフォルトで使用することを推奨しています。
S3 には以前から
.mrap や --x-s3、-s3alias などの名前空間が存在していましたが、今回初めて 一般利用向けに推奨 される名前空間が登場します。
組織全体でこのパターンを強制したい場合は、SCP(Service Control Policy)内で
s3:x-amz-bucket-namespace 条件キーを使用できます。
注意点
- 既存のバケットやテンプレートには自動的に適用されません。
- 新規作成するバケットはこの名前空間パターンで作り、データを移行してください。
他クラウドプロバイダーでは?
| プロバイダー | 名前空間の概念 |
|---|---|
| Google Cloud Storage | ドメイン名検証に基づく名前空間。検証済みドメイン所有者だけが のようなドメイン形式でバケットを作成可能。非ドメイン形式ではスキャッティングは残るが、ドメイン形式の利用が対策です。 |
| Azure Blob Storage | ストレージアカウント名とコンテナ名で構成されます。ストレージアカウント名は 24 文字までに制限されているため、小さな名前空間となります。 |
TL;DR
- S3 バケットには 新しい名前空間 が導入され、バケットスキャッティング攻撃を防止します。
- 新規作成するすべてのバケットは
の形式で命名してください。prefix-accountid-region-an - 既存バケットはこのパターンに移行し、データを再配置する必要があります。
もしこの記事が役立ったと感じたら、LinkedIn や X(旧 Twitter)でご連絡ください。