c2.7 EC2 インスタンスで IMDSv2 を強制する
EC2 のインスタンスメタデータサービス(IMDS)は、キーをハードコードせずに済むよう、一時的でローテーションされる認証情報をインスタンスに渡します。あらゆる場所で IMDSv2 を必須にしてください。IMDSv2 はセッション保護を追加し、IMDSv1 が脆弱だった SSRF 経由の認証情報窃取を防ぎます。
実装ガイダンス
なぜ IMDSv2 か
インスタンスメタデータサービスは、ハードコードや配布をせずに、一時的で頻繁にローテーションされる認証情報をインスタンスに提供します。IMDSv2 はリクエストをセッション指向(トークンが必要)にするため、攻撃者が server-side request forgery(SSRF)の脆弱性を通じてメタデータエンドポイントに到達し、その認証情報を盗むことを防ぎます。
実施すべきこと
1. 新規インスタンスの起動は現在 IMDSv2 がデフォルトですが、その変更より前に作成されたインスタンスは IMDSv1 を許可したままの場合があります。新規起動がデフォルトで IMDSv2 を必須にすることを確認し、古いインスタンスを再構成してください。 2. AWS Security Hub CSPM のコントロール EC2.8 または AWS Config の ec2-imdsv2-check ルールで非準拠を検出します。 3. まだ IMDSv1 を許可しているインスタンスを IMDSv2 必須に設定し、フリート全体で IMDSv1 を無効化します。Get the full benefits of IMDSv2 を参照してください。
CLI で実行する
既存のインスタンスで IMDSv2 を必須にする(IMDSv1 を無効化する):
aws ec2 modify-instance-metadata-options \
--instance-id i-0123456789abcdef0 \
--http-tokens required \
--http-endpoint enabled
アカウント内のすべての新規起動でデフォルトで IMDSv2 を必須にする:
aws ec2 modify-instance-metadata-defaults \
--http-tokens required \
--http-endpoint enabledHow to validate
- インスタンスは IMDSv2 を必須にするよう構成されていますか?
- 新規の EC2 起動がデフォルトで IMDSv2 を必須にすることを確認しましたか?
- まだ IMDSv1 を許可しているインスタンスを検出するために AWS Security Hub CSPM または AWS Config を使っていますか?
Threats addressed
- IMDSv1 をまだ許可しているインスタンス上で SSRF に脆弱なアプリケーションは、メタデータエンドポイントからインスタンスの認証情報を読み取らされ、インスタンス外部で悪用される可能性があります。
AWS サービス
料金
Amazon EC2 での IMDSv2 の適用は追加料金なしで提供されます。
Cloud Security Maturity Model