Уязвимость Pickle in the Middle в Google Cloud Vertex AI позволяет удаленно выполнять код

Vertex AI

В программном обеспечении Google Cloud Vertex AI обнаружена критическая уязвимость, затрагивающая Python SDK (библиотека google-cloud-aiplatform). Она получила название Pickle in the Middle от исследователей из Palo Alto Networks Unit 42. Уязвимость позволяет злоумышленнику перехватывать загрузку моделей машинного обучения, подменять артефакты и выполнять код в инфраструктуре другого арендатора (cross-tenant) без предварительного доступа к целевой среде. Идентификатор CVE на момент публикации не присвоен. Исправления выпущены в версиях 1.144.0 и 1.148.0.

Детали уязимости

Vertex AI широко используется для построения и развертывания моделей машинного обучения. Его компонент Model Registry (реестр моделей) опирается на корзины Google Cloud Storage (GCS) для размещения артефактов перед развертыванием. Проблема кроется в том, что SDK автоматически генерирует имя корзины для размещения по умолчанию на основе идентификатора проекта и региона в детерминированном формате. Уязвимы версии SDK 1.139.0 и 1.140.0.

При проверке корзины SDK лишь удостоверяется в ее существовании, но не проверяет, принадлежит ли она тому проекту, в котором работает пользователь. Эта особенность позволяет атакующему создать корзину с предсказуемым именем в своем собственном проекте (bucket squatting). Поскольку имена корзин глобально уникальны, SDK жертвы взаимодействует с корзиной, контролируемой злоумышленником. Атакующий устанавливает разрешающие роли IAM (управление доступом к ресурсам Google Cloud), чтобы внешние операции с корзиной были возможны.

Процесс эксплуатации состоит из шести фаз. На первом этапе атакующий предсказывает имя корзины для размещения жертвы и создает ее в своем проекте. Затем он развертывает облачную функцию (Cloud Function), которая срабатывает на события создания объектов в этой корзине. Функция мониторит загрузки и подменяет легитимные файлы модели на вредоносные. Ключевое значение имеет временной интервал: между загрузкой артефакта и его обработкой Vertex AI остается около 2,5 секунд, в течение которых функция злоумышленника успевает заменить файл.

На третьем этапе жертва загружает модель с помощью стандартных операций SDK, не указывая пользовательскую корзину. SDK находит корзину, подтверждает ее существование и выгружает артефакты напрямую в контролируемую атакующим корзину. Четвертый этап: облачная функция злоумышленника срабатывает немедленно после загрузки и заменяет легитимный файл (обычно сериализованный с помощью joblib или pickle) на вредоносный в течение миллисекунд. Агент сервиса Vertex AI еще не обратился к артефакту, поэтому подмена происходит до того, как данные будут использованы.

Пятый этап: жертва развертывает модель на конечной точке Vertex AI. Поскольку целостность размещенных артефактов не проверяется, отравленная модель воспринимается как легитимная и загружается в обслуживающую инфраструктуру. Шестой этап: удаленное выполнение кода возникает в момент десериализации модели. Эксплойт использует механизм pickle, а именно метод _reduce_, который позволяет выполнить произвольный код при загрузке через joblib.load(). В доказательстве концепции исследователи добились кража токенов OAuth от управляемого Google сервисного аккаунта, что дало доступ к чувствительным ресурсам, включая другие артефакты моделей, метаданные BigQuery и внутреннюю инфраструктуру других арендаторов.

Последствия выходят за рамки единичного развертывания. Исследователи продемонстрировали возможность получить доступ к данным между развертываниями, украсть модели и провести разведку с помощью скомпрометированного токена сервисного аккаунта, имеющего широкий облачный охват. Это подрывает предположения об изоляции арендаторов в управляемой среде Vertex AI.

Уязвимость была обнаружена и сообщена Google 5 марта 2026 года. Исправления полностью развернуты к 15 апреля 2026 года. В обновлениях (версии 1.144.0 и 1.148.0) реализована рандомизация имен корзин с использованием UUID, а также добавлена явная проверка владения корзины перед ее использованием. Специалисты по безопасности настоятельно рекомендуют обновиться до исправленных версий SDK и при работе с Vertex AI явно задавать корзины для размещения, чтобы избежать автоматического выбора имени по умолчанию. Данная уязвимость показывает, как традиционные ошибки конфигурации облачных сервисов пересекаются с механизмами сериализации моделей, создавая новые мощные векторы атак в конвейерах искусственного интеллекта и машинного обучения.

Ссылки

Комментарии: 0