AWS IMDSv2
¿Qué es AWS IMDSv2?
AWS IMDSv2El reemplazo basado en tokens de sesión del servicio de metadatos de instancias de AWS EC2, diseñado para frustrar el robo de credenciales del rol de instancia EC2 mediante SSRF, exigiendo un token efímero emitido por PUT en cada solicitud.
IMDSv2 es la segunda versión del servicio de metadatos de instancias de EC2, introducida por AWS en noviembre de 2019 como respuesta directa a la filtración de Capital One y a otros robos de credenciales en la nube impulsados por SSRF. En esa filtración, revelada el 19 de julio de 2019, Paige Thompson ("erratic") abusó de una vulnerabilidad de Server-Side Request Forgery en un cortafuegos de aplicaciones web mal configurado para alcanzar el endpoint de enlace local http://169.254.169.254/latest/meta-data/iam/security-credentials/. El rol de IAM con privilegios excesivos del WAF, ISRM-WAF-Role, devolvió credenciales temporales de STS que le permitieron enumerar y copiar datos de más de 700 buckets de S3: aproximadamente 106 millones de registros de clientes. El incidente costó posteriormente a Capital One una sanción de 80 millones de dólares de la OCC y un acuerdo de demanda colectiva de 190 millones de dólares.
Cómo IMDSv2 frustra el SSRF
Con IMDSv1, cualquier GET a la IP de metadatos devolvía credenciales, por lo que bastaba con una falsificación de solicitud reflejada o del lado del servidor. IMDSv2 hace que el flujo sea orientado a sesión: el cliente primero debe hacer PUT /latest/api/token con una cabecera X-aws-ec2-metadata-token-ttl-seconds y, después, enviar el token devuelto en cada lectura mediante X-aws-ec2-metadata-token. Un SSRF ingenuo no puede emitir fácilmente un PUT con una cabecera personalizada, y establecer HttpPutResponseHopLimit: 1 impide que los contenedores situados a un salto de red de distancia alcancen el servicio.
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]Defensas
Aplique HttpTokens: required en toda la organización mediante una SCP o la configuración instance-metadata-defaults a nivel de cuenta, fije el límite de saltos en 1 y utilice hallazgos de CSPM/Wiz para rastrear las AMI heredadas que aún permiten IMDSv1. Acote las políticas de IAM del rol de instancia al mínimo privilegio para que un token filtrado aporte poco.
● Ejemplos
- 01
Una plantilla de lanzamiento de EC2 establece `HttpTokens: required` y `HttpPutResponseHopLimit: 1`, bloqueando tanto el acceso a IMDSv1 como el robo de metadatos desde el contenedor.
- 02
Un hallazgo de CSPM marca cada instancia EC2 que aún permite IMDSv1 porque la AMI heredada de CentOS se lanzó antes de la política a nivel de organización.
● Preguntas frecuentes
¿Qué es AWS IMDSv2?
El reemplazo basado en tokens de sesión del servicio de metadatos de instancias de AWS EC2, diseñado para frustrar el robo de credenciales del rol de instancia EC2 mediante SSRF, exigiendo un token efímero emitido por PUT en cada solicitud. Pertenece a la categoría de Seguridad en la nube en ciberseguridad.
¿Qué significa AWS IMDSv2?
El reemplazo basado en tokens de sesión del servicio de metadatos de instancias de AWS EC2, diseñado para frustrar el robo de credenciales del rol de instancia EC2 mediante SSRF, exigiendo un token efímero emitido por PUT en cada solicitud.
¿Cómo defenderse de AWS IMDSv2?
Las defensas contra AWS IMDSv2 combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para AWS IMDSv2?
Nombres alternativos comunes: Servicio de metadatos de instancias EC2 v2, IMDSv2.