Уязвимость в Google Cloud Platform позволяет получить контроль над инфраструктурой жертвы.
Уязвимость ConfusedComposer, обнаруженная специалистами Tenable, стала ещё одним примером того, как внутренняя логика облачных сервисов может быть использована для получения доступа, превышающего изначальные полномочия. Хотя ошибка уже устранена, её суть позволяет по-новому взглянуть на безопасность в среде Google Cloud Platform, особенно в тех случаях, когда автоматизация и оркестрация сервисов становятся ахиллесовой пятой.
Cloud Composer — это управляемый сервис от Google на базе Apache Airflow, предназначенный для создания и автоматизации рабочих процессов. Сервис тесно интегрирован с Cloud Build, который отвечает за сборку, тестирование и развертывание приложений. Уязвимость возникла именно на стыке двух решений.
Проблема заключалась в том, что при установке дополнительных Python-библиотек через Composer, он автоматически использовал Cloud Build для создания окружения. Процесс запускался от имени сервисного аккаунта Cloud Build по умолчанию, у которого есть расширенные права доступа ко многим ключевым сервисам, включая хранилища и реестры артефактов. Достаточно было иметь право на обновление Composer-окружения, чтобы вмешаться в процесс.
Злоумышленник мог добавить вредоносный PyPI-пакет в конфигурацию окружения. Во время установки Python-библиотек, инструмент Pip, задействованный Cloud Build, запускал установочные скрипты. Через них можно было выполнить произвольный код внутри окружения Cloud Build и получить доступ к его метаданным. Оттуда — токен авторизации сервисного аккаунта и, как следствие, полный контроль над частью облачной инфраструктуры жертвы.
Особенность атаки заключалась в том, что прямого доступа к сервисному аккаунту Composer или Cloud Build не требовалось. Достаточно было лишь права composer.environments.update — довольно распространённого в сценариях с DevOps и CI/CD. Таким образом, вполне легитимный пользователь мог превратиться в администратора всего проекта, не нарушая ни одного ограничения явно.
После обращения специалистов Tenable, Google изменила архитектуру установки дополнительных библиотек. Теперь вместо сервисного аккаунта Cloud Build используется менее привилегированный сервисный аккаунт самого окружения Composer. Кроме того, в обновлённой документации были пересмотрены разделы по управлению доступом и установке зависимостей.
Случай стал продолжением ранее обнаруженной уязвимости ConfusedFunction и позволил выделить отдельный класс атак, который исследователи называют «эффект Дженги». Как в популярной настольной игре, где неосторожное извлечение одного блока может привести к падению всей конструкции, так и в облаке — неочевидные зависимости и скрытые механизмы оркестрации могут обернуться критическими уязвимостями.