Google закрыл уязвимость в Vertex AI SDK, которая могла позволить злоумышленникам получать доступ к загружаемым моделям машинного обучения и запускать код на серверах Google. Эта угроза оставалась неуловимой, так как злоумышленники не нуждались в доступе к проекту жертвы — им достаточно было лишь идентификатора.
Суть проблемы
Уязвимость, обнаруженная подразделением Palo Alto Networks Unit 42, связана с некорректной настраиваемостью временных Cloud Storage бакетов для загрузки моделей. Если пользователь не указал конкретный бакет, SDK генерировал его имя, используя идентификатор проекта и регион. Это позволяло злоумышленникам создавать ожидаемые названия бакетов и «перехватывать» загружаемые модели, заменяя их на вредоносные.
Исследование показало, что атака могла реализовываться менее чем за 2,5 секунды между загрузкой файла и его чтением Vertex AI. Это позволяло злоумышленникам использовать, например, Cloud Functions для быстрой замены загружаемой модели на свою вредоносную версию.
Последствия для разработчиков
В результате атаки могли быть украдены конфиденциальные данные, такие как OAuth токены, дающие доступ к различным ресурсам проекта, включая BigQuery и контейнеры GKE. Это создает серьезные риски для безопасности, особенно для начинающих проектов, где настройки могут быть дефолтными.
Google официально выпустил патч 15 апреля 2026 года, добавив в SDK проверку владения бакетами и изменив алгоритм генерации их имен. Разработчикам настоятельно рекомендуется обновить SDK до версии 1.148.0 или выше, а также задать собственные имена бакетов при загрузках.
Рекомендации и будущие шаги
Пользователи, использующие Google Cloud Vertex AI, должны немедленно обновить свои версии SDK, чтобы защитить свои проекты от потенциальных атак. Учитывая, что подобные уязвимости уже дважды подвергались обнаружению, рекомендуется периодически проверять доступные обновления системы безопасности.