Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 095

AWS IMDSv2

审核人Cybersecurity entrepreneur & security researcher

AWS IMDSv2 是什么?

AWS IMDSv2基于会话令牌的 AWS EC2 实例元数据服务替代方案,通过要求每次请求都携带由 PUT 签发的短时令牌,来挫败基于 SSRF 的 EC2 实例角色令牌凭据窃取。


IMDSv2 是 EC2 实例元数据服务的第二个版本,由 AWS 于 2019 年 11 月推出,直接回应了 Capital One 数据泄露事件以及其他由 SSRF 驱动的云凭据窃取。在这起于 2019 年 7 月 19 日披露的泄露事件中,Paige Thompson(网名 "erratic")利用一处配置错误的 Web 应用防火墙中的服务器端请求伪造(SSRF)缺陷,访问了链路本地端点 http://169.254.169.254/latest/meta-data/iam/security-credentials/。该 WAF 那个权限过高的 IAM 角色 ISRM-WAF-Role 返回了临时 STS 凭据,使她得以列出并复制超过 700 个 S3 存储桶中的数据——约 1.06 亿条客户记录。这一事件后来使 Capital One 付出了 8000 万美元的 OCC 罚款和 1.9 亿美元的集体诉讼和解金。

IMDSv2 如何挫败 SSRF

在 IMDSv1 下,对元数据 IP 的任何 GET 请求都会返回凭据,因此一次反射型或服务器端请求伪造即可得手。IMDSv2 将这一流程改为面向会话:客户端必须先带上 X-aws-ec2-metadata-token-ttl-seconds 头执行 PUT /latest/api/token,然后在每次读取时通过 X-aws-ec2-metadata-token 头携带返回的令牌。一次简单的 SSRF 无法轻易发出带自定义头的 PUT 请求,而设置 HttpPutResponseHopLimit: 1 则会阻止相隔一个网络跳的容器访问该服务。

flowchart TD
  A[App with SSRF flaw] -->|GET 169.254.169.254| B{Metadata mode?}
  B -->|IMDSv1 optional| C[Returns IAM credentials]
  C --> D[Attacker exfiltrates S3 data]
  B -->|IMDSv2 required| E[Rejected: no session token]
  E --> F[PUT /latest/api/token + TTL header needed]
  F -->|SSRF cannot issue PUT| G[Credential theft blocked]

防御措施

通过 SCP 或账户级 instance-metadata-defaults 设置,在全组织范围内强制启用 HttpTokens: required,将跳数限制固定为 1,并利用 CSPM/Wiz 检测项排查仍允许 IMDSv1 的老旧 AMI。将实例角色的 IAM 策略收敛到最小权限,这样即使令牌泄露也所获甚微。

示例

  1. 01

    某 EC2 启动模板设置 `HttpTokens: required` 与 `HttpPutResponseHopLimit: 1`,同时阻断 IMDSv1 访问和容器侧的元数据窃取。

  2. 02

    某 CSPM 检测项标记出所有仍允许 IMDSv1 的 EC2 实例,原因是该老旧 CentOS AMI 是在全组织策略生效之前启动的。

常见问题

AWS IMDSv2 是什么?

基于会话令牌的 AWS EC2 实例元数据服务替代方案,通过要求每次请求都携带由 PUT 签发的短时令牌,来挫败基于 SSRF 的 EC2 实例角色令牌凭据窃取。 它属于网络安全的 云安全 分类。

AWS IMDSv2 是什么意思?

基于会话令牌的 AWS EC2 实例元数据服务替代方案,通过要求每次请求都携带由 PUT 签发的短时令牌,来挫败基于 SSRF 的 EC2 实例角色令牌凭据窃取。

如何防御 AWS IMDSv2?

针对 AWS IMDSv2 的防御通常结合技术控制与运营实践,详见上方完整定义。

AWS IMDSv2 还有哪些其他名称?

常见的别称包括: EC2 实例元数据服务 v2, IMDSv2。

相关术语