S3とストレージの露出
公開バケット
「S3とストレージの露出」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
ストレージバケットから情報が漏れる理由
AWS S3、Azure Blob、GCP Cloud Storageなどのオブジェクトストレージは、クラウドでデータ侵害が発生する最も一般的な原因の1つです。バケットは簡単に作成できる一方、設定も簡単に誤る可能性があります。
- 誤ってパブリックな読み取りまたは書き込みに設定されている
- 推測しやすい名前が付けられている
- バケットポリシーやACLの範囲が広すぎる
1つのパブリックバケットだけで、数百万件のレコードが漏えいする可能性があります。
S3の命名方法
S3のバケット名はグローバルで一意で、予測可能なURLに対応します。この予測可能性が、列挙を可能にしています。
有効なバケット名を推測できれば、誰でもアクセスレベルを調べられます。
# Two equivalent S3 URL forms
https://my-bucket.s3.amazonaws.com/
https://s3.amazonaws.com/my-bucket/
# Region-specific endpoint
https://my-bucket.s3.eu-west-1.amazonaws.com/パブリックバケットの検出
最も速いテストは、認証なしでリクエストを送ることです。HTTPステータスコードからアクセス状態がわかります。
- XMLの一覧と200が返る — パブリックな一覧取得が可能
- 403 AccessDenied — バケットは存在するが、非公開
- 404 NoSuchBucket — バケットが存在しない
# Anonymous listing attempt
curl -s https://example-data.s3.amazonaws.com/
# Anonymous via the AWS CLI (no signing)
aws s3 ls s3://example-data --no-sign-requestバケット名の総当たり
攻撃者は、企業名に一般的な接尾辞を組み合わせて候補名を生成し、それぞれをテストします。ツールを使えば、これを大規模に自動化できます。
典型的なパターン:company-backups、company-dev、company-logs、company-assets。
# Permutate and probe bucket names from a keyword
cloud_enum -k example
# Dedicated S3 enumerator
s3scanner scan --bucket-file candidates.txtパブリックな読み取りと書き込み
パブリックアクセスには2種類あり、読み取りよりも書き込みのほうがはるかに危険です。
- パブリックな読み取り — 攻撃者がデータをダウンロードできる(データ侵害)
- パブリックな書き込み — 攻撃者がオブジェクトをアップロードまたは上書きできる
パブリックな書き込みが可能だと、改ざん、ドメイン上でのマルウェアホスティング、さらにはバケットがWebサイトやソフトウェアのアセットを配信している場合のサプライチェーン攻撃まで可能になります。
# Test for public write (DANGEROUS - only with authorization)
aws s3 cp test.txt s3://example-data/ --no-sign-request
# If this succeeds, the bucket allows anonymous uploads.誤解を招きやすい「Block Public Access」
AWSでは、アカウントレベルとバケットレベルの両方でBlock Public Access設定を利用できます。強力な機能ですが、誤解されていることも少なくありません。
- アカウントレベルの設定がバケットポリシーより優先されます
- BPAが有効なら、許可範囲の広いポリシーがあってもバケットは非公開になります
- 逆に、BPAを無効にすると多数のバケットが突然公開される可能性があります
1つのポリシーだけでなく、実効アクセスを必ず確認してください。
# Inspect block-public-access configuration
aws s3api get-public-access-block --bucket example-data
aws s3api get-bucket-policy-status --bucket example-dataAzure Blobの公開
Azureでは、オブジェクトをストレージアカウント内のコンテナーに保存します。設定を誤ると、コンテナーのパブリックアクセスレベルがblobまたはcontainerになります。
ストレージアカウント名もグローバルで一意かつ予測可能です。
# Azure blob URL pattern
https://exampleacct.blob.core.windows.net/container/file.txt
# Anonymous list attempt against a public container
curl -s 'https://exampleacct.blob.core.windows.net/backups?restype=container&comp=list'GCP Cloud Storageの公開
Google Cloud Storageのバケットは、allUsersまたはallAuthenticatedUsersプリンシパルに読み取りロールを付与することで公開状態になります。
公開のパターンはS3と同じで、予測可能な名前、匿名での調査、パブリックなIAMバインディングが特徴です。
# Anonymous list of a GCS bucket
curl -s https://storage.googleapis.com/example-bucket/
# Check IAM bindings for allUsers (authenticated)
gsutil iam get gs://example-bucket攻撃者が内部で探すもの
パブリックバケットは、単なる入口にすぎません。本当の目的はその中身です。
- データベースのダンプやバックアップ
- 秘密情報を含むソースコードや
.envファイル - クラウド認証情報やAPIキー
- 顧客のPII(個人データ)
- 社内文書や設定ファイル
小さな漏えいファイルであっても、アカウント全体へのアクセスにつながるキーが含まれている可能性があります。
是正と強化
ストレージの公開を修正するには、複数の対策を重ねます。
- アカウントレベルでBlock Public Accessを有効にします
- パブリックACLと
allUsers/allAuthenticatedUsersへの付与を削除します - 特定のプリンシパルに範囲を限定したバケットポリシーを使用します
- 暗号化とアクセスログを有効にします
- 継続的な設定スキャンを実行し、新たに公開されたバケットを検出します
公開データを責任を持って扱う
実際のデータが大量に入ったパブリックバケットを発見した場合、倫理面と法的な影響を伴います。
- 公開状態を証明するために必要な最小限を超えてダウンロードしないでください
- 顧客のPIIを持ち出したり保持したりしてはいけません
- 直ちに、安全な方法で報告します
- スコープと実施ルールの範囲内にとどまります
目的はデータを収集することではなく、アクセス可能であることを証明することです。
クイックチェック
S3バケットのURLに対する匿名リクエストが、HTTP 403 AccessDeniedを返しました。これは何を示していますか?
まとめ:S3とストレージの公開
オブジェクトストレージから情報が漏れる仕組みと、安全にテストする方法について学びました。
- バケット名はグローバルで一意かつ予測可能であるため、列挙が可能です
- HTTPステータスコードからアクセス状態がわかります:200(公開)、403(非公開)、404(存在しない)
- パブリックな書き込みは、パブリックな読み取りより危険です
- 同じパターンがAzure BlobとGCP Cloud Storageにも当てはまります
- Block Public Accessと最小権限ポリシーで是正します
次は、クラウド固有の攻撃チェーンであるメタデータサービスとSSRFについて学びます。
よくある質問
「S3とストレージの露出」レッスンは無料ですか?
はい。「S3とストレージの露出」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「S3とストレージの露出」で何を学びますか?
公開バケット ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「S3とストレージの露出」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラウドの攻撃対象領域
- IAMの設定ミス
- S3とストレージの露出
- メタデータとSSRF