Контейнер заговорил от имени системы — и облако поверило.
На конференции Black Hat USA в Лас-Вегасе исследователь из компании Sweet Security Наор Хазиз представил атаку под названием ECScape, способную полностью нарушить доверительную модель безопасности в Amazon ECS. Уязвимость открывает злоумышленнику путь к эскалации привилегий, доступу к чужим IAM-ролям и захвату контроля над контейнерами в облачной среде AWS.
Amazon ECS — это управляемая система оркестрации контейнеров, позволяющая пользователям развертывать и масштабировать приложения. Однако при работе в режиме EC2, где несколько задач запускаются на одном экземпляре виртуальной машины, открывается возможность для скрытой атаки внутри самого хоста. Хазизу удалось доказать, что контейнер с низким уровнем доступа может получить права другой задачи с более широкими полномочиями, если они работают на одной EC2-машине.
В основе атаки лежит злоупотребление внутренним, не документированным протоколом ECS. Сначала злоумышленник получает доступ к роли IAM для самой EC2, что позволяет ему притвориться агентом ECS. Далее он определяет адрес управления кластерами, собирает ключевые метаданные (включая имя кластера, версии Docker и агента, а также уникальные идентификаторы) и формирует поддельный WebSocket-запрос от имени агента к службе ACS. В этом запросе включается параметр sendCredentials
, заставляющий облако передать временные учетные данные IAM для всех задач на хосте.
Для маскировки своей активности подлинный агент подделывается до мельчайших деталей: фальшивый клиент отвечает на сообщения, отправляет «пульсы» активности и соблюдает правильную последовательность команд. В результате создаётся полная иллюзия законного подключения, а вредоносный контейнер в фоновом режиме получает доступ ко всем ролям IAM, используемым другими контейнерами на той же машине.
Хазиз подчёркивает, что в текущей архитектуре Amazon ECS на EC2 нет изоляции между задачами. Это значит, что даже временные права, выданные безопасным способом через службу метаданных на IP 169.254.170.2, могут быть похищены и использованы несанкционированным контейнером. Такое поведение разрушает фундаментальное предположение о том, что роли задач являются независимыми и недоступными извне.
В ответ на обнаруженную угрозу Amazon обновила документацию и рекомендовала применять более строгие модели изоляции. В частности, не запускать задачи с разным уровнем доверия на одной машине, использовать Fargate для обеспечения полной изоляции, ограничить доступ к службе метаданных (IMDS), сократить полномочия агента ECS и внедрить системы обнаружения подозрительного использования IAM-ролей через CloudTrail.