IAMの設定ミス
過剰に許可されたロール
「IAMの設定ミス」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
IAMが真の境界である理由
クラウドでは、アイデンティティが新たな境界です。IAM(Identity and Access Management)は、誰が何を実行できるかを決定します。IAMの欠陥により、攻撃者は低権限の足掛かりからアカウント全体の制御へ移行できます。
- ユーザー、ロール、サービスアカウントはアイデンティティです
- ポリシーが権限を定義します
- 設定ミスのあるポリシーは、クラウドにおける最大のリスクです
クラウドでの権限昇格の多くは、IAMの問題です。
ユーザー、ロール、ポリシー
AWS IAMについて、次の3つの基本要素を理解する必要があります。
- Users — アクセスキーを持つ、長期間有効なアイデンティティ
- Roles — ユーザーやサービスが引き受けられる、一時的なアイデンティティ
- Policies — リソースに対するアクションを許可または拒否するJSONドキュメント
ポリシーが広範囲に割り当てられると、過剰な権限付与が発生します。
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::reports-bucket/*"
}ワイルドカードの危険性
IAMで最も危険なパターンは、ワイルドカードポリシーです。これはすべてのリソースに対するすべてのアクションを許可します。
攻撃者がこのポリシーを持つアイデンティティを侵害すると、アカウント全体を掌握できます。
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
# Action:* Resource:* = full administrative control.
# Flag this everywhere it appears outside a break-glass admin role.自分の権限を列挙する
認証情報を取得したら、それで何ができるかを一覧化します。IAMには、割り当てられたポリシーを明らかにする読み取り用APIがあります。
アカウントによっては、一般ユーザーにiam:Get*やiam:List*まで許可されており、権限構成を把握するための情報を簡単に得られます。
# List policies attached to a user
aws iam list-attached-user-policies --user-name devuser
# Get the JSON of a managed policy version
aws iam get-policy-version \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--version-id v1iam:PassRoleによる権限昇格
典型的な昇格手法は、ユーザーがiam:PassRoleとサービス作成権限を持っているケースです。このユーザーは、高権限ロールを引き受けるリソースを起動し、そのアクセス権を継承できます。
- ユーザーが
ec2:RunInstancesとiam:PassRoleを持っている - 管理者ロールを割り当てたEC2インスタンスを起動する
- インスタンスが管理者認証情報を保持するため、それを取得する
ユーザーが管理者権限を直接持っていなくても、そこまで昇格できてしまいます。
危険な権限の組み合わせ
個々の権限は無害でも、組み合わせると昇格経路になることがあります。既知の危険な組み合わせには、次のものがあります。
iam:CreatePolicyVersion— 既存のポリシーを書き換えて管理者権限を付与するiam:AttachUserPolicy— AdministratorAccessを自分自身に割り当てる- 他のユーザーに対する
iam:CreateAccessKey— そのユーザーのアイデンティティを奪う - 信頼しすぎるロールに対する
sts:AssumeRole
ツールを使えば、これらを自動的に列挙できます。
信頼ポリシーとAssumeRole
ロールには、誰が引き受けられるかを定義する信頼ポリシーがあります。範囲が広すぎる信頼ポリシーは、バックドアになります。
ロールがアカウント全体、あるいは誤って外部アカウントまで信頼していると、攻撃者はそのロールを引き受けられます。
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:root" },
"Action": "sts:AssumeRole"
}
# Trusting the entire account root means ANY identity in it can assume the role.昇格経路の検出を自動化する
すべてのポリシーの組み合わせを手作業で確認するのは大変です。ツールを使えば、昇格経路を自動的にマッピングできます。
- Pacu — privescモジュールを備えたAWSの攻撃フレームワーク
- PMapper — IAMの関係をグラフ化し、privescにつながるエッジを検出するツール
- enumerate-iam — キーで実行可能なAPI呼び出しを総当たりで調べるツール
# Run Pacu's IAM privilege escalation enumeration
pacu
# > run iam__privesc_scan
# Build an IAM access graph and query it
pmapper graph create
pmapper query 'preset privesc *'インラインポリシーと管理ポリシー
権限の付与方法は2種類あり、攻撃者は両方を確認します。
- Managed policies — 再利用可能で、複数のアイデンティティに割り当てられるポリシー
- Inline policies — 1つのユーザーまたはロールに直接埋め込まれるポリシー
インラインポリシーは監査で見落としやすく、過剰な権限が隠れていることがよくあります。アイデンティティを評価するときは、必ず両方を列挙します。
# Inline policies are listed separately from attached ones
aws iam list-user-policies --user-name devuser
aws iam get-user-policy --user-name devuser --policy-name custom-inline強化:最小権限
IAMの設定ミスを修正する方法は最小権限です。必要な権限だけを正確に付与します。
- ワイルドカードを、明示的なアクションとリソースARNに置き換えます
- 長期間有効なキーではなく、短期間有効な認証情報を持つロールを使用します
- Access Analyzerで未使用の権限を監査します
- 権限の強いアイデンティティにはMFAを必須にします
レポートでは、各検出事項を最小権限に基づく是正策に対応付けてください。
認可された範囲を守る
権限昇格のテストでは、アカウントの状態を実際に変更します。十分に注意してください。
- ポリシー、キー、ロールの作成は侵襲的な操作なので、書面による承認を得ます
- 元に戻せるよう、変更内容をすべて記録します
- 悪用する前に経路を証明できるよう、読み取り専用の列挙を優先します
privesc経路が存在することを示せれば十分な場合が多く、常に完全な悪用まで行う必要はありません。
クイックチェック
AWSで典型的な権限昇格経路となる権限の組み合わせはどれですか?
まとめ:IAMの設定ミス
IAMがクラウドの真の境界である理由と、攻撃者がIAMを悪用する方法について学びました。
- ワイルドカードの
Action:* Resource:*ポリシーは壊滅的な被害につながります iam:PassRoleとサービス作成権限の組み合わせにより、権限昇格が可能になります- 範囲が広すぎる信頼ポリシーにより、攻撃者はロールを引き受けられます
- PacuやPMapperなどのツールが経路の検出を自動化します
- 是正の基本は常に最小権限です
次は、S3とストレージの公開について見ていきます。
よくある質問
「IAMの設定ミス」レッスンは無料ですか?
はい。「IAMの設定ミス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「IAMの設定ミス」で何を学びますか?
過剰に許可されたロール ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「IAMの設定ミス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- クラウドの攻撃対象領域
- IAMの設定ミス
- S3とストレージの露出
- メタデータとSSRF