AWS IMDSv2
Qu'est-ce que AWS IMDSv2 ?
AWS IMDSv2Le remplaçant fondé sur des jetons de session du service de métadonnées d'instance EC2 d'AWS, conçu pour contrer le vol par SSRF des jetons de rôle d'instance EC2 en exigeant un jeton éphémère émis par PUT à chaque requête.
IMDSv2 est la deuxième version du service de métadonnées d'instance EC2, introduite par AWS en novembre 2019 en réponse directe à la fuite de données de Capital One et à d'autres vols d'identifiants cloud pilotés par SSRF. Lors de cette fuite, révélée le 19 juillet 2019, Paige Thompson (« erratic ») a exploité une faille de Server-Side Request Forgery dans un pare-feu applicatif mal configuré pour atteindre le point de terminaison link-local http://169.254.169.254/latest/meta-data/iam/security-credentials/. Le rôle IAM surprivilégié du WAF, ISRM-WAF-Role, a renvoyé des identifiants STS temporaires qui lui ont permis de lister et de copier des données de plus de 700 compartiments S3 — soit environ 106 millions d'enregistrements clients. L'incident a par la suite coûté à Capital One une pénalité de 80 M$ de l'OCC et un règlement de recours collectif de 190 M$.
Comment IMDSv2 contre les attaques SSRF
Avec IMDSv1, n'importe quel GET vers l'adresse IP des métadonnées renvoyait des identifiants, si bien qu'une falsification de requête réfléchie ou côté serveur suffisait. IMDSv2 rend le flux orienté session : le client doit d'abord effectuer un PUT /latest/api/token avec un en-tête X-aws-ec2-metadata-token-ttl-seconds, puis transmettre le jeton renvoyé à chaque lecture via X-aws-ec2-metadata-token. Une SSRF naïve ne peut pas facilement émettre un PUT avec un en-tête personnalisé, et définir HttpPutResponseHopLimit: 1 empêche les conteneurs situés à un saut réseau d'atteindre le service.
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]Défenses
Imposez HttpTokens: required à l'échelle de l'organisation via une SCP ou le paramètre instance-metadata-defaults au niveau du compte, fixez la limite de sauts à 1 et utilisez les découvertes CSPM/Wiz pour traquer les anciennes AMI autorisant encore IMDSv1. Restreignez les politiques IAM des rôles d'instance au moindre privilège afin qu'un jeton divulgué n'apporte que peu de chose.
● Exemples
- 01
Un modèle de lancement EC2 définit `HttpTokens: required` et `HttpPutResponseHopLimit: 1`, bloquant à la fois l'accès IMDSv1 et le vol de métadonnées depuis un conteneur.
- 02
Une découverte CSPM signale chaque instance EC2 autorisant encore IMDSv1 parce que l'ancienne AMI CentOS a été lancée avant la politique appliquée à l'échelle de l'organisation.
● Questions fréquentes
Qu'est-ce que AWS IMDSv2 ?
Le remplaçant fondé sur des jetons de session du service de métadonnées d'instance EC2 d'AWS, conçu pour contrer le vol par SSRF des jetons de rôle d'instance EC2 en exigeant un jeton éphémère émis par PUT à chaque requête. Cette notion relève de la catégorie Sécurité du cloud en cybersécurité.
Que signifie AWS IMDSv2 ?
Le remplaçant fondé sur des jetons de session du service de métadonnées d'instance EC2 d'AWS, conçu pour contrer le vol par SSRF des jetons de rôle d'instance EC2 en exigeant un jeton éphémère émis par PUT à chaque requête.
Comment se défendre contre AWS IMDSv2 ?
Les défenses contre AWS IMDSv2 combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de AWS IMDSv2 ?
Noms alternatifs courants : EC2 Instance Metadata Service v2, IMDSv2.