В этой заметке речь пойдет о рисках полной или частичной компрометации EKS кластера, а в особо запущенных случаях и всего аккаунта AWS, с помощью эксплуатации SSRF (Server Side Request Forgery) уязвимого веб приложения, с использованием сервиса Instance Metadata (IMDSv1). Для начала несколько слов о самом сервисе метаданных, основной задачей которого является предоставление информации о конфигурации сервисов, включая IAM credentials, настройки Security-groups и пр. Сервис IMDS доступен только по не маршрутизируемому (link local) адресу 169.254.169.254 по умолчанию из любого контейнера/пода кластера AWS EKS.



Предположим, что в одном из подов развернуто веб приложение уязвимое к SSRF атаке, успешная эксплуатация этой уязвимости предоставляет атакующему возможность обратиться к сервису IMDS, чтобы получить temporary credentials для IAM роли worker ноды, чтобы далее проанализировать конфигурацию IAM политик с целью повышения привилегии. При этом даже если используется настроенная AWS в традициях лучших практик - managed IAM политика EKSWorkerNodePolicy, потенциальный злодей все равно может нанести ущерб, просто удалив все сетевые интерфейсы ec2:DeleteNetworkInterface, нарушив доступность и reliability ресурсов кластера.



Поэтому, единственным возможным решением данной проблемы является переход на использованием новой версии сервиса IMDSv2, реализация которой предполагает наличие session token при обращении к сервису метаданных, что обеспечивает надежную защиту от SSRF атак. Но несмотря на то, что прошел уже почти год с момента, когда AWS анонсировал полную поддержку IMDSv2 в EKS, подавляющие большинство клиентов пока не спешат переходить на использование новой версии сервиса...😢