
S3オブジェクトの実効権限をホワイトボックス評価し、公開アクセス可能なファイルを特定します。
S3 オブジェクトの実効権限をホワイトボックス評価し、公開アクセス可能なオブジェクトを特定します。
公開アクセス可能なオブジェクトに加えて、AuthenticatedUsers(AuthenticatedUsers)に対してアクセス可能なオブジェクトを(セカンダリプロファイルを使用して)特定できます。
バケットの権限をチェックするツールは多数存在しますが、IAM リソースポリシーと ACL の組み合わせが複雑なため、特定オブジェクトに対する実効権限を評価するのは難しいことがよくあります。
このツールは asyncio と aiobotocore を使用しているため、高速に動作します。
このツールは、2つの 名前付きプロファイル を利用します。
WHITEBOX_PROFILE - このプロファイルは S3 サービスへの読み取りアクセス権を持つ必要があります。バケットとオブジェクトの一覧取得に使用され、その後ツールは 未認証 リクエストによるアクセスを試行します。オブジェクトへのアクセスには使用されず、一覧取得のみに使用されます。BLACKBOX_PROFILE - 未認証リクエストに加えて、このプロファイルを使用して "Authenticated Users group"(AuthenticatedUsers)がアクセス可能なオブジェクトを特定します。このプロファイルは S3 バケット/オブジェクトへのアクセス権を 持たない 必要があります。持っている場合、誤検知が発生します。仮想環境をセットアップし、依存関係をインストールします:
$ virtualenv -p python3 venv
$ source venv/bin/activate
$ pip -r requirements.txt
オプション:
$ python s3-objects-check.py -h
usage: s3-objects-check.py [-h] -p WHITEBOX_PROFILE -e BLACKBOX_PROFILE [-d]
Whitebox evaluation of effective S3 object permissions, to identify publicly
accessible files.
optional arguments:
-h, --help show this help message and exit
-p WHITEBOX_PROFILE, --profile WHITEBOX_PROFILE
The profile with access to the desired AWS account and
buckets
-e BLACKBOX_PROFILE, --profile-external BLACKBOX_PROFILE
An "external" profile to test for 'AuthenticatedUsers'
permissions. This principal should not have
permissions to read bucket objects.
-d, --debug Verbose output. Will also create a log file
ツールを実行します:
$ python s3-objects-check.py -p whitebox-profile -e blackbox-profile
2020-11-24 11:19:56 host object-check[371] INFO Starting
2020-11-24 11:20:08 host object-check[371] WARNING Found https://<bucket>.s3.us-east-1.amazonaws.com/<object> allowing "AllUsers"
2020-11-24 11:20:09 host object-check[371] WARNING Found https://<bucket>.s3.eu-west-2.amazonaws.com/<object> allowing "AuthenticatedUsers"
2020-11-24 11:21:34 host object-check[371] INFO Done