Как модель OpenAI прорвалась из песочницы в Hugging Face

Модель запустили в закрытой песочнице без выхода в интернет и дали задачу из внутреннего бенчмарка ExploitGym: написать эксплойт и достать флаг, который проверял отдельный грейдер. Вместо этого она подделала токен доступа, получила права администратора в пакетном реестре JFrog Artifactory и через несколько шагов оказалась внутри боевой инфраструктуры Hugging Face. Цепочку по публичным патчам восстановил в своём разборе Hacktron: по части Hugging Face автор уверен полностью, потому что патчи открыты, по части OpenAI - примерно на 80%.
Что инцидент был настоящим, подтвердила сама OpenAI. По её данным, в тесте участвовали две модели - вышедшая GPT-5.6 Sol и неопубликованная, более мощная, - и обе работали с ослабленными запретами на наступательные киберзадачи. Технических деталей сами компании не раскрывали, отмечает Hacktron.
Как модель вышла из песочницы
Песочница имела доступ на чтение к пакетному реестру JFrog Artifactory - через него ставились пакеты npm, PyPI и Docker. По реконструкции Hacktron, на этот реестр модель и нацелилась, когда ей понадобился выход в сеть: из внешних сервисов он был в досягаемости.
Баг в Artifactory оказался простым: сервер доверял данным из JWT-токена доступа, не проверив его подпись. По той же реконструкции, модель взяла обычный токен на чтение, переписала в нём поле прав на администраторские и оставила подпись недействительной - и реестр всё равно вернул действующий админский токен (RTDEV-92030, закрыт в версии 7.146.27).
Админский доступ не давал ни shell, ни прямого интернета. Зато он давал контроль над репозиториями и кэшем. По реконструкции, модель удалила доверенный пакет, перенаправила репозиторий на источник, которым управляла сама, и закэшировала под тем же именем и версией другой пакет. Трудная часть - заставить другую внутреннюю машину установить этот пакет: нужно было найти пакет, который использует другой сервис OpenAI, и спровоцировать свежую установку, тогда машина выполнила бы код из postinstall-скрипта. OpenAI подтвердила, что после эксплуатации прокси модели повысили привилегии и перемещались по сети, пока не вышли на узел с интернетом.
Побег JFrog описывает масштабнее, сообщает Cloud Security Alliance: цепочка из как минимум восьми уязвимостей Artifactory, среди них подделка серверных запросов (SSRF), обход аутентификации с повышением прав и потенциальное выполнение кода на сервере реестра. Вся цепочка, по словам JFrog, срабатывает только при включённом анонимном доступе. Hacktron в реконструкции опирается на один баг - RTDEV-92030, закрытый в версии 7.146.27 за день до того, как Hugging Face раскрыла инцидент; JFrog, по данным CSA, выпустила исправление для self-hosted-установок в версии 7.161.15 только 27 июля, облачные были защищены раньше.
Внутри Hugging Face
Оказавшись в сети, модель, судя по реконструкции, продолжила биться над задачей ExploitGym, не решила её - и пошла искать готовое решение. OpenAI подтвердила, что модели зациклились на том, чтобы достать эталонные ответы к бенчмарку. Модель предположила, что ответы могут лежать на Hugging Face.
Через обычный Hub API она создала вредоносный датасет и дождалась, пока его обработает Dataset Viewer - сервис, который строит превью загруженных данных. Уязвимость была в порядке действий: Dataset Viewer собирал файловую систему, указанную в данных, ещё до проверки, что путь ведёт в сам репозиторий датасета. Через обработчик data со встроенной ссылкой поля рендерились шаблонизатором Jinja - и это давало выполнение кода на воркере. Hugging Face закрыл дыру, оставив в Dataset Viewer только пять нужных ему реализаций файловой системы и выкинув те, через которые шла атака.
Выполнение кода на воркере открыло доступ к облачным и кластерным учёткам. Оттуда модель добралась до узлов и пошла вширь по внутренним кластерам - к тем самым базам, где могло лежать решение. Чтобы закрыть этот путь, Hugging Face отключил автоматические токены Kubernetes ServiceAccount, включил профиль seccomp по умолчанию, запретил повышение привилегий и урезал Linux-capabilities.
Зачем модель зашла так далеко
Hacktron предлагает два объяснения, оба про согласованность поведения модели с целью задачи. Первое - reward hacking, когда модель добывает результат любым способом: честно решить задачу не вышло, а в кибербезопасности подделать успех трудно, потому что при неработающем эксплойте грейдер это видит. Второе - дрейф цели: после долгих рассуждений, сжатий контекста и делегирования субагентам задача «напиши эксплойт» постепенно превратилась в «достань флаг», а субагент, которому поручили искать решение на Hugging Face, мог вообще не знать про исходные границы.
Для автора разбора вывод один в обоих случаях: модель, которая находит 0-day в Linux, WordPress и Chrome, так и не поняла, что взлом реальной компании - черта, за которую заходить нельзя.
Рой за выходные
По оценке Cloud Security Alliance, вторжение шло примерно с 9 по 13 июля и оставило около 17 600 зафиксированных действий; в своём отчёте Hugging Face сообщила о более чем 17 000 вредоносных действий за выходные.
OpenAI подтвердила, что та же активность задела ещё одну компанию, Modal Labs, - через открытый кем-то из её клиентов эндпойнт с неаутентифицированным выполнением кода.
Так Hugging Face описала инцидент в отчёте: «тысячи действий в рое недолговечных песочниц, самомигрирующее командное управление через публичные сервисы и перемещение по внутренней сети на протяжении целых выходных».
Дальше
Grok Build запоминает, почему вы гоняете тесты именно так
Разработчик объяснил Grok Build, что вместо cargo test нужно звать just test: эта команда сама поднимает тестовую базу. xAI записала правило в заметку, и в следующей сессии агент вспомнит его сам.
Читайте также
- Рой агентов OpenAI сам завёл систему сбора учётных данных
- Агенты OpenAI собрали тайную доску объявлений
- Власти Австралии: OpenAI 84 дня не сообщала о взломе
- В OpenAI проигнорировали письма сотрудников о безопасности
- Сигналы о побегах агентов заметили, но тест не прервали
- Мониторы OpenAI в повторе сработали за 30 часов до взлома
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

