説明
IMDSv1 はセッショントークンなしでインスタンスメタデータにアクセスするため、SSRF などの攻撃に悪用される可能性があります。エンドポイントが有効な場合、http_tokens = "optional" は IMDSv1 も許可します。省略したオプションはアカウントや AMI の設定に影響されるため、実際の適用値を確認する必要があります。
想定される影響
- 脆弱なアプリケーションを通じて、メタデータやロールの一時的な認証情報が漏えいするおそれがあります。
- 盗まれた認証情報がインスタンスプロファイルの権限範囲で悪用される可能性があります。
対処方法
SDK、初期化スクリプト、コンテナーの互換性を確認し、必要なメタデータアクセスに http_tokens = "required" を設定してください。不要ならエンドポイントの無効化を検討してください。IMDSv2 に加えて SSRF の原因を修正し、ロール権限も最小限にしてください。
例
メタデータオプションの比較です。AMI は対象リージョンで有効な値に置き換え、起動テンプレートと Auto Scaling の設定も確認してください。
変更前
hcl
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
metadata_options {
http_tokens = "optional"
}
}
変更後
hcl
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
metadata_options {
http_endpoint = "enabled"
http_tokens = "required"
}
}
最初の設定は、エンドポイントが有効な場合に IMDSv1 を許可します。変更後はエンドポイントを有効にして IMDSv2 トークンを要求します。この変更だけですべての SSRF 攻撃を防げるわけではありません。