AWS IMDSv2
Что такое AWS IMDSv2?
AWS IMDSv2Основанная на сессионном токене замена службы метаданных экземпляров AWS EC2, разработанная для противодействия краже учётных данных роли экземпляра EC2 через SSRF за счёт требования выданного через PUT короткоживущего токена в каждом запросе.
IMDSv2 — это вторая версия службы метаданных экземпляров EC2 (EC2 Instance Metadata Service), представленная AWS в ноябре 2019 года как прямой ответ на взлом Capital One и другие случаи кражи облачных учётных данных через SSRF. В ходе того инцидента, раскрытого 19 июля 2019 года, Пейдж Томпсон («erratic») воспользовалась уязвимостью Server-Side Request Forgery в неправильно настроенном межсетевом экране веб-приложений, чтобы обратиться к link-local эндпоинту http://169.254.169.254/latest/meta-data/iam/security-credentials/. Чрезмерно привилегированная роль IAM у WAF, ISRM-WAF-Role, вернула временные учётные данные STS, которые позволили ей перечислить и скопировать данные более чем из 700 корзин S3 — около 106 миллионов записей клиентов. Впоследствии инцидент обошёлся Capital One в штраф OCC на 80 млн долларов и мировое соглашение по коллективному иску на 190 млн долларов.
Как IMDSv2 противодействует SSRF
При использовании IMDSv1 любой GET-запрос к IP-адресу метаданных возвращал учётные данные, поэтому достаточно было отражённого запроса или подделки запроса на стороне сервера. IMDSv2 делает поток сессионно-ориентированным: клиент сначала должен выполнить PUT /latest/api/token с заголовком X-aws-ec2-metadata-token-ttl-seconds, а затем отправлять возвращённый токен при каждом чтении через 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]Меры защиты
Принудительно установите HttpTokens: required в масштабах всей организации через SCP или настройку instance-metadata-defaults на уровне аккаунта, зафиксируйте лимит переходов на значении 1 и используйте обнаружения CSPM/Wiz для выявления устаревших AMI, всё ещё разрешающих IMDSv1. Ограничьте IAM-политики ролей экземпляров минимально необходимыми привилегиями, чтобы утёкший токен давал мало.
● Примеры
- 01
Шаблон запуска EC2 задаёт `HttpTokens: required` и `HttpPutResponseHopLimit: 1`, блокируя как доступ по IMDSv1, так и кражу метаданных со стороны контейнера.
- 02
Обнаружение CSPM отмечает каждый экземпляр EC2, всё ещё разрешающий IMDSv1, потому что устаревший AMI CentOS был запущен до введения политики на уровне всей организации.
● Частые вопросы
Что такое AWS IMDSv2?
Основанная на сессионном токене замена службы метаданных экземпляров AWS EC2, разработанная для противодействия краже учётных данных роли экземпляра EC2 через SSRF за счёт требования выданного через PUT короткоживущего токена в каждом запросе. Относится к категории Облачная безопасность в кибербезопасности.
Что означает AWS IMDSv2?
Основанная на сессионном токене замена службы метаданных экземпляров AWS EC2, разработанная для противодействия краже учётных данных роли экземпляра EC2 через SSRF за счёт требования выданного через PUT короткоживущего токена в каждом запросе.
Как защититься от AWS IMDSv2?
Защита от AWS IMDSv2 обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия AWS IMDSv2?
Распространённые альтернативные названия: EC2 Instance Metadata Service v2, IMDSv2.