AWS のための敵対的エクスポージャー検証 (AEV)
要点
- 敵対的エクスポージャー検証とは、攻撃者と同じやり方でエクスポージャーをテストし、攻撃者がどれを利用できるかを証明する手法です。
- AWS では攻撃者の操作は API 呼び出しなので、検証とは各呼び出しを決定する認可を解決することを意味します。これは読み取り専用で行え、アカウント内で何も実行されません。
- AWS で検証する価値があるのはコントロールプレーンのエクスポージャーです。IAM 権限昇格、クロスアカウント信頼、構成内に露出した認証情報、そして特権ロールにつながるパブリックな侵入口です。
- 多くの AEV ベンダーはネットワーク、エンドポイント、または侵害および攻撃シミュレーションから出発しており、それぞれがその立場からクラウドに取り組んでいます。AWS のコントロールプレーンでどのように証明を生成するのか、各ステップで SCP、境界、信頼ポリシーを解決するのかを、各ベンダーに確認してください。
- AEV は CTEM プログラムの検証段階にあたります。その出力は証明済みの経路の短いリストで、それぞれに経路を断ち切る変更と、変更が反映された後の確認が付きます。
敵対的エクスポージャー検証 (通常は AEV と略されます) とは、攻撃者と同じやり方でエクスポージャーをテストし、どの検出結果が利用可能でどれがそうでないかをセキュリティチームが把握できるようにする手法です。Gartner はこの用語を、侵害および攻撃シミュレーションと自動ペネトレーションテストから発展したツールのカテゴリーに使っています。共通する考え方は、検証がスキャナーの報告に証明を加え、実際に成立することが示された検出結果にチームが対処できるようにする、というものです。
この記事では、それが AWS において具体的に何を意味するかを取り上げます。クラウドのコントロールプレーンでは、手法と出力の両方が変わるためです。
AWS に独自の検証が必要な理由
ネットワークでは、エクスポージャーの検証とはトラフィックを送ることを意味します。ツールがホストに到達できるか、認証できるか、横移動できるか、です。証拠は接続の成功や取得した認証情報です。AWS のコントロールプレーンには、到達すべきホストがありません。攻撃者の操作はすべて API 呼び出しであり、呼び出しが成功するかどうかは、AWS がまとめて評価する一連のポリシードキュメントによって決まります。呼び出し元のアイデンティティポリシー、アクセス許可の境界、アカウントの組織単位にあるサービスコントロールポリシー、標的の信頼ポリシーまたはリソースポリシー、そして各ステートメントの条件キーです。
これには 2 つの帰結があります。第一に、それらのドキュメントを読み取り専用で解決すれば呼び出しと同じ許可または拒否が得られるため、経路を実行せずに検証できます。第二に、アイデンティティポリシーだけを読むツールは攻撃対象領域を過大に見積もります。アイデンティティポリシーが付与しているように見えるものの大部分を、SCP と境界が取り除くためです。
AWS で検証すべきもの
実際のアカウントで見られる証明済みの経路の大半は、4 種類のエクスポージャーによるものです。
IAM 権限昇格。より強い権限を持つロールに到達できる権限、またはその組み合わせを持つプリンシパルです。コンピューティングの作成アクションと組み合わせた iam:PassRole、ポリシーのアタッチやインラインポリシーの書き込み、信頼ポリシーの書き換え、アクセスキーの作成などがあります。AWS 権限昇格マップには、これらが CloudTrail イベントとそれぞれを断ち切る変更とともに掲載されています。
クロスアカウント信頼。別のアカウント、ベンダー、またはワイルドカードを信頼するロールで、信頼する側が特権を持ち、信頼される側が誰もが想定していたより弱いものです。2 つか 3 つの sts:AssumeRole のホップがつながるだけで、サンドボックスが本番環境につながることがあります。
構成内に露出した認証情報。EC2 のユーザーデータ、Lambda の環境変数、CloudFormation の出力、コンテナ定義に含まれるアクセスキーやトークンです。露出したキー 1 つが、そのキーのプリンシパルが到達できるすべてのものへの侵入口になります。
パブリックな侵入口。関数 URL、書き込み可能なパブリックバケット、インスタンスプロファイルを持つインターネット向けインスタンス、特権ロールを呼び出す API ゲートウェイです。エクスポージャーが深刻になるのは、その背後にあるロールがどこかにつながっている場合だけであり、それを確定させるのがまさに検証です。
AWS 向け AEV ツールが行うべきこと
読み取り専用の接続からグラフを構築し、デプロイするエージェントも付与する書き込み権限も不要にすること。グラフを推論して、マルチホップやクロスアカウントのものを含む候補チェーンを生成すること。すべてのステップについて認可のすべての層を評価して各チェーンを検証し、その結果を証拠として記録すること。証明済みの経路を到達先でランク付けし、チームがまず影響範囲を把握できるようにすること。経路ごとにそれを断ち切る具体的な変更を示し、変更が反映された後に経路を再評価して、消えたことを確認すること。アカウントは変化し続けるので、スケジュールに沿って実行すること。
一方で、必要のないことが 2 つあります。コントロールプレーンでは証明とは認可の結果なので、証明を生成するためにアカウント内で何かを実行する必要はありません。また、すべての検出結果の記録システムになる必要もありません。それはすでに CSPM や CNAPP が担っており、検証ツールの役割は、それらの検出結果のうちどれが証明済みの経路上にあるかを伝えることです。
主要な AEV ベンダーの AWS への取り組み方
このカテゴリーに関連するベンダーは、それぞれ異なる出発点からここに至り、それを土台に発展してきました。以下の概要は、各ベンダーの公開資料で使われている表現に沿って説明したものです。これをもとに何かを決める前に、詳細をベンダーに確認してください。
| ベンダー | 出発点 | AWS での取り組み方 |
|---|---|---|
| Pentera | 内部ネットワーク、アイデンティティ、外部攻撃対象領域にわたる自動セキュリティ検証 | アイデンティティの侵害やロールの権限昇格を含め、AWS と Azure のアカウントに対して攻撃者の手法をエミュレートするクラウドモジュール |
| Horizon3.ai | ネットワーク内部からの自律型ペネトレーションテスト | AWS と Azure の環境に対して攻撃手法を実行するクラウドペネトレーションテスト |
| XM Cyber | 攻撃グラフのモデリングと継続的なエクスポージャー管理 | オンプレミスとクラウドにまたがるグラフベースの攻撃経路モデリングと、チョークポイント分析 |
| Cymulate | 侵害および攻撃シミュレーション | 統制をテストするための攻撃手法のシミュレーションで、エンドポイントやメールと並んでクラウドのシナリオも備える |
| Picus | 侵害および攻撃シミュレーション | シミュレーションした手法による統制の検証で、プラットフォームにクラウド対応が追加されている |
| Pathbreak | AWS コントロールプレーンの攻撃経路。それを手作業で見つけてきた実務者が開発 | 実際の認可を解決することによる各経路の読み取り専用の検証、影響範囲によるランク付け、各経路を断ち切る変更、修正後の確認 |
有用な区別は、手法のエミュレーションによる証明と、認可の解決による証明の違いです。エクスプロイトがホストに対するコードである場合は、エミュレーションが自然に適合します。認可の解決は、エクスプロイトが権限である場合に当てはまり、AWS ではそれがコントロールプレーンの大部分を占めます。また、読み取り専用なので毎日のスケジュールで実行できます。
CTEM プログラムにおける AEV の位置づけ
継続的な脅威エクスポージャー管理には、スコーピング、発見、優先順位付け、検証、動員の 5 つの段階があります。AEV は検証段階です。その入力は発見段階からの優先順位付けされたリストで、出力は証明済みのエクスポージャーの小さな集合であり、それぞれに担当者と変更が割り当てられます。CTEM の検証に関する記事では、それが AWS アカウントでどのようになるかを実際の数値で説明しており、AEV と BAS の比較記事では統制テストとの違いを取り上げています。
よくある質問
敵対的エクスポージャー検証とは何ですか?
敵対的エクスポージャー検証とは、攻撃者と同じやり方でセキュリティ上のエクスポージャーをテストし、どれが重要なものへの到達に利用できるかを確定させる手法です。スキャナーが見えるものすべての長いリストを生成するのに対し、AEV は短いエクスポージャーのリストについて証明を生成します。 Pathbreak は敵対的エクスポージャー検証を AWS に適用し、各攻撃経路を実際の認可に照らして読み取り専用で証明します。
AEV は侵害および攻撃シミュレーションと同じですか?
いいえ。侵害および攻撃シミュレーションは、セキュリティ統制が既知の手法を検知またはブロックするかどうかをテストします。AEV は、存在するエクスポージャーを通じて攻撃者が標的に到達できるかどうか、そしてどの変更がそれを止めるかをテストします。多くの AEV ベンダーが BAS から出発したため、これらの用語が混同されがちです。 Pathbreak は AWS 向けの AEV プラットフォームであり、攻撃経路を検証して、それぞれを断ち切る変更を示します。
AEV には、自分の AWS アカウントでエクスプロイトを実行する必要がありますか?
コントロールプレーンでは必要ありません。AWS では攻撃者の操作はすべてポリシードキュメントによって決まる API 呼び出しなので、それらのドキュメントを読み取り専用で解決すれば、呼び出しと同じ許可または拒否が得られます。Pathbreak はこの方法で検証し、何も実行しません。
AWS ではエクスポージャー検証をどのくらいの頻度で実行すべきですか?
IAM と信頼関係はデプロイのたびに変わるため、毎日が妥当な基準です。読み取り専用で自動化された検証なら、変更ウィンドウなしでスケジュールに沿って実行できます。 Pathbreak はこの検証を、接続されたすべての AWS アカウントで毎日実行します。