Новости 2,5 секунды на взлом. Предсказуемые имена хранилищ Google сами отдавали ИИ-модели хакерам

NewsMaker

I'm just a script
Премиум
27,637
46
8 Ноя 2022
Рутинная операция открывала путь туда, куда посторонних никто не звал.


b951thajewd4klhnxvruhzh6ahejk8e3.jpg

Облачные сервисы машинного обучения часто прячут сложную инфраструктуру за несколькими строками кода, и именно такая автоматизация создала опасную ошибку в Google Vertex AI SDK для Python. Специалисты Palo Alto Networks Unit 42 выявили уязвимость , которая позволяла постороннему перехватить загрузку модели и запустить код внутри инфраструктуры Google, которая обслуживает модели.

Проблема возникала, когда разработчик не указывал собственный промежуточный бакет Cloud Storage для загрузки модели. SDK сам создавал имя хранилища по предсказуемой схеме из идентификатора проекта и региона, затем проверял только наличие бакета, но не владельца. Поскольку имена бакетов в Cloud Storage глобально уникальны, атакующий мог заранее создать нужное хранилище в своём проекте.

После такой подстановки SDK жертвы отправлял файлы модели в чужой бакет. Затем атакующий быстро подменял загруженную модель вредоносной версией. Риск усиливал распространённый в Python способ сохранения моделей через pickle и joblib: такие файлы могут выполнять код при загрузке и десериализации , если файл содержит вредоносную логику.

Unit 42 проверила сценарий в тестовой среде. Между загрузкой модели и чтением файла Vertex AI проходило около 2,5 секунды. В демонстрации Cloud Function срабатывала после загрузки и подменяла модель за 1,4 секунды, то есть до того, как Vertex AI успевал прочитать исходный файл. После запуска подменённая модель похищала OAuth-токен с сервера метаданных обслуживающего контейнера.

В тесте полученный токен открывал доступ не только к скомпрометированному развёртыванию модели. Через него удалось получить сведения о других артефактах моделей в том же проекте под управлением Google, включая модель TensorFlow с обученными весами, метаданные BigQuery, списки доступа, журналы, имена кластеров GKE и внутренние пути контейнерных образов. Unit 42 не нашла признаков реальных атак.

Атака работала только при двух условиях: стандартный промежуточный бакет жертвы ещё не существовал в выбранном регионе, а параметр staging_bucket оставался пустым. Google получила отчёт 5 марта 2026 года, добавила случайный uuid4 в имена бакетов в версии 1.144.0 от 31 марта и завершила исправление в версии 1.148.0 от 15 апреля, где появилась проверка владельца бакета в Model.upload().

Пользователям Google Vertex AI SDK для Python рекомендуется обновить google-cloud-aiplatform до версии 1.148.0 или новее, явно задавать staging_bucket в контролируемом Cloud Storage и проверить версии SDK там, где библиотека запускается, включая интерактивные среды, CI-задачи и процессы обучения моделей.
 
Источник новости
www.securitylab.ru

Похожие темы