В программном наборе для разработки (SDK) Vertex AI для Python, управляемой платформе Google Cloud для создания, обучения и развертывания ИИ-агентов, обнаружен конструктивный недостаток, который мог позволить перехватить и отравить модели за пределами собственного проекта Google Cloud разработчика.
По данным исследователей Unit 42, сочетание некорректной логики именования бакетов и отсутствия аутентификации позволило злоумышленнику захватить проект жертвы, зная только идентификатор и регион ее проекта.
«Поскольку ни один бакет во всем Google Cloud не может иметь одинаковое имя, злоумышленник, способный предсказать имя бакета, может заблаговременно создать его в своем проекте», — заявили исследователи в посте в блоге. «Любая последующая попытка использовать бакет с таким именем, даже из другого проекта, будет незаметно перенаправлена на бакет злоумышленника».
Исследователи отметили, что это известный класс уязвимостей, который «использует глобальную уникальность» имен бакетов облачного хранилища. Они назвали это «Bucket Squatting» (захват бакетов).
Успешная эксплуатация могла привести к внедрению вредоносной модели, которая загружалась бы инфраструктурой Vertex AI, что повлекло бы за собой выполнение кода в разных средах (cross-tenant). Об уязвимости было сообщено Google, которая, как сообщается, устранила основную проблему.
Google не сразу ответила на запрос CSO о комментариях.
Десериализация pickle для RCE в разных средах
По данным Unit 42, уязвимый рабочий процесс модели в Vertex AI SDK для Python версий 1.139.0 и 1.140.0 зависел от имени промежуточного (staging) бакета, которое формировалось исключительно на основе идентификатора проекта и региона клиента. Когда бакет с таким именем уже существовал, SDK только проверял его наличие, но не подтверждал право собственности.
Это создавало сценарий захвата бакетов, при котором злоумышленник мог предварительно создать бакет, соответствующий ожидаемому промежуточному бакету жертвы, и дожидаться, пока туда будут загружены артефакты модели. Как только артефакт модели загружался в бакет, контролируемый злоумышленником, он мог заменить его вредоносной версией в узком временном окне гонки состояний, прежде чем агент службы Vertex AI успевал его извлечь.
Атака могла обернуться удаленным выполнением кода (RCE), поскольку модели машинного обучения на Python часто сохраняются с использованием форматов сериализации pickle или Joblib. Поскольку десериализация pickle может выполнять произвольный код через специально созданные объекты, отравленная модель могла запустить удаленный код при загрузке инфраструктурой развертывания Vertec AI.
Этот процесс эксплуатации в разных средах был назван исследователями «Pickle in the Middle», поскольку он частично зависел от десериализации встроенного в Python модуля pickle.
Google исправила баг, найденный ИИ
В рамках исследования Unit 42 интегрировала большую языковую модель (LLM) в свой рабочий процесс анализа кода для ускорения обнаружения уязвимостей.
«Анализ, который раньше занимал дни, теперь может выполняться значительно быстрее», — заявили исследователи. «Итеративно сужая фокус модели и инструктируя ее искать определенные шаблоны, мы находили пути, ведущие к ресурсам, выделенным в облаке, на которые влияли вводимые данные, контролируемые пользователем или производные от проекта».
Сообщается, что Google изменила затронутый рабочий процесс, и теперь промежуточные бакеты проверяются перед использованием, что не позволяет злоумышленникам регистрировать имена бакетов, которые могут быть ошибочно приняты за ресурсы, принадлежащие другим проектам.
Исправления были развернуты в версиях SDK 1.144.0 и 1.148.0, и пользователям необходимо обновиться до одной из исправленных версий.
Facebook*, Instagram* и WhatsApp* принадлежат компании Meta* Platforms Inc., деятельность которой признана экстремистской и запрещена на территории Российской Федерации.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Shweta Sharma




