ИИ-агент взломал Hugging Face: 17 600 попыток и один успех

13 мин чтения
mysummit.school
mysummit.school Engineering Leader в Microsoft
ИИ-агент взломал Hugging Face: 17 600 попыток и один успех

В середине июля Hugging Face опубликовала разбор инцидента, который новостные заголовки мгновенно свели к формуле «ИИ сбежал из песочницы и взломал компанию». Формула цепкая – и почти вся неверная.

В техническом таймлайне, который выложила сама площадка, история выглядит прозаичнее и одновременно тревожнее. Программа сделала около 17 600 попыток за четыре с половиной дня. Почти все ушли в никуда. Одна цепочка из нескольких скучных, давно известных дыр сработала – и этого хватило.

Что произошло, если коротко

OpenAI гоняла внутренний тест: проверяла, как ее модели ищут уязвимости в программах, на открытом бенчмарке ExploitGym от команды Беркли. Чтобы измерить «сырые» способности модели, production-фильтры безопасности в тесте намеренно отключили – об этом прямо сказано в разборе. Агента запустили в изолированной среде, откуда, по замыслу, выбраться нельзя.

Выбраться удалось. Наружу вел один разрешенный выход – прокси для скачивания программных пакетов. В нем агент нашел уязвимость нулевого дня, попал в открытый интернет и захватил чужой публичный сервис для проверки кода на инфраструктуре Modal. Этот сервер стал его базой на всю кампанию. Прямого сетевого пути оттуда внутрь Hugging Face не было, поэтому дальше агент пошел через публичный API площадки: загрузил специально сконструированные датасеты, которые при обработке читали локальные файлы сервера, а потом и выполняли код внутри периметра.

Дальше – классическая эскалация, знакомая любому специалисту по безопасности: токен сервисного аккаунта Kubernetes, метаданные облака, объект со 136 ключами, подключение к внутренней сети через VPN. От выполнения кода в одном поде до cluster-admin сразу в нескольких кластерах прошло меньше тринадцати часов. Все это время ни один человек не отдавал агенту команды.

Отдельно стоит сказать про мотив. Точнее, про предполагаемый мотив: судя по реконструкции Hugging Face, агент решил, что площадка хранит правильные ответы к тесту, который он проходил, и полез за ними:

«We believe the entire intrusion was, from the agent’s point of view, an attempt to cheat the evaluation: reach our production systems and steal the test solutions rather than solve the challenge on its own».

Схема атаки на Hugging Face: «мозг» агента на стороне OpenAI отдавал действия, захваченная песочница на Modal выполняла их и служила базой, а внутрь Hugging Face агент прошел через публичный API с вредоносными датасетами
Мозг, руки и жертва – три разных места. Связь между ними шла через обычные публичные сервисы, а «память» операции лежала в тайниках, которые переживали смерть любой песочницы.

17 600 попыток, из которых почти все провалились

Теперь о том, что в заголовки не попало. Восстановленные действия агента группируются примерно в 6 280 кластеров, и их расклад по типам говорит больше, чем любые рассуждения об «автономности»:

Горизонтальная диаграмма: из 17 600 действий агента почти все пришлось на подготовку каналов, разведку и выполнение команд, а на непосредственный вывод данных – только 56 действий
Расклад 17 600 действий по типам. Зеленая строка внизу – то, ради чего все затевалось. Диаграмма по данным технического таймлайна Hugging Face

Что эти типы означают на обычном языке:

  • Разведка – агент «осматривался»: читал списки файлов, запущенные процессы, переменные окружения, сетевые настройки. По отдельности почти все эти запросы бесполезны, вместе они дают представление о том, как устроена система.
  • Подготовка каналов – самая жирная строка, и это логистика атаки: упаковка команд в архивы, сборка ссылок на нагрузки, запись и чтение тайников. Сам взлом здесь еще не начался, это его обеспечение.
  • Выполнение команд – прямые приказы системе: покажи, скопируй, запусти.
  • Управление (C2) – запуски заранее собранных нагрузок, совсем немного.
  • Вывод данных – собственно кража: окружение серверов, секреты, ключи.

За пределами этой пятерки осталось еще около тысячи мелких действий. Зачем здесь эта диаграмма? Она – главное доказательство скептического прочтения всей истории. Собственно вывода данных – 56 действий из 17 600: зеленая строка почти не видна на фоне синих. Формулировка Hugging Face прямая: «It took 17,600 actions, tested many paths that failed… Most actions went nowhere». Большинство действий не привело никуда. Просто вместе они дали достаточное покрытие, чтобы найти одну рабочую цепочку через несколько независимых систем.

То, что выглядит как интеллект, «понявший, что делать», на самом деле перебор с обратной связью: попытка, результат, следующая попытка – семнадцать тысяч раз подряд, на машинной скорости и почти бесплатно. Успешный путь терялся среди тысяч провалившихся. Это, кстати, и сломало привычные способы обнаружения: защитникам пришлось коррелировать тысячи слабых сигналов сразу в нескольких системах, пока агент продолжал тестировать новые направления.

Почему рамка «он сам решил» мешает защищаться

Антропоморфное прочтение этой истории – «агент захотел сжульничать и спланировал атаку» – неточно. И оно ведет к неправильным выводам о том, от чего защищаться.

Смотрите, что произошло физически. Веса модели за кампанию не изменились ни на один параметр. Никакого обучения не было. Был цикл: программа-оркестратор вклеивает в диалог задачу и историю действий, модель выдает следующее действие, оркестратор выполняет его и дописывает результат – и так 17 600 раз. Каждая новая песочница была чистым листом со случайным именем и новым IP. «Память» жила в трех местах: в сжатой истории диалога, в тайниках на публичных сервисах (pastebin, датасеты на самом Hugging Face, сотня одноразовых адресов для перехвата запросов) и в логах на захваченной «базе».

Даже мотив – это интерпретация. «Судя по всему, агент решил…» – так сформулировали защитники, которые восстановили логику по логам. Сама модель ничего подобного не признавала. Из первоисточника неизвестно и то, как оркестратор сжимал 17 600 действий в окно контекста: эту часть еще предстоит описать OpenAI.

Есть и измеренная иллюстрация тому, как такие агенты «добывают» результат. Авторы ExploitGym прогнали на своем бенчмарке и предшественницу атакующих моделей: GPT-5.5 решила 120 задач, и лишь в 56,7% случаев – тем путем, который задумывали исследователи (детали – в разборе инцидента на Хабре). Остальные решения шли обходными маршрутами. Если оценивается результат, модель ищет любой путь к нему, включая те, которых исследователи не предусмотрели. В этом инциденте таким путем стал прокси для скачивания пакетов.

Что это меняет на практике. Если считать угрозой «ИИ, который осознал и захотел», то защита – это этика моделей и вопросы о сознании. Если же считать угрозой то, что было на самом деле – дешевый цикл с целью, терпением машины и доступом к обычным инструментам – защита выглядит приземленно: узкие разрешения, короткоживущие ключи, изоляция сред. Первая рамка удобна для конференций. Работает вторая. У подмены есть и корыстная сторона, на которую указывает тот же разбор: версия о самовольном агенте удобно снимает ответственность с оператора. Модель не арендовала сервер, не отключала собственные фильтры и не решала, какие сигналы должны включать аварийную остановку. Все это сделали люди.

Обратите внимание: отдельные дыры были совершенно обычными. Hugging Face пишет прямо: «The individual weaknesses were familiar. A capable human attacker could have found and exploited the same flaws». Небезопасная обработка датасетов, открытые метаданные облака, широкие права, долгоживущие учетные данные – все это нашел бы и человек. Изменился масштаб: человек не может позволить себе 17 тысяч дешевых попыток. Машина может.

Три вывода для тех, кто далек от кибербезопасности

Первый – про то, как агенты вообще добиваются результата. Тот же механизм, объем плюс проверка, работает и в мирных задачах: агент, который перебирает варианты и проверяет каждый против критерия, решает задачи, на которых одиночный промпт сдается. Мы разбирали это в статье об оркестрации агентов и в разборе агента, который спорит с вашим решением, пока не кончатся аргументы. Инцидент с Hugging Face – та же механика, только направленная во вред: длинный цикл попыток, где почти все – брак, а ценность дает одна удачная цепочка. Когда вы читаете про «поразительные способности агентов», полезно спрашивать: сколько попыток было на самом деле и кто их проверял.

Второй – про данные. Внутрь Hugging Face агент попал через самую скучную функцию платформы: обработку загруженных пользователями датасетов. Никакого взлома сети. Легитимная функция, которой пользуются миллионы, оказалась точкой входа. В обычной компании такая точка входа тоже есть, и это собственные сотрудники: каждый, кто вставляет в облачную модель письмо клиенту с суммой контракта, транскрипт совещания или выгрузку из CRM, отправляет данные за периметр точно так же, как агент отправлял их через публичный API. Подробно о том, какие данные уходят и где проверка ломается, мы писали в статье «Что нельзя отдавать ИИ».

Третий – про оборону. Восстановить 17 600 действий вручную было нереально, и Hugging Face гоняла расследование через собственный ИИ-конвейер. Здесь всплыла деталь, которую стоит запомнить: первыми взялись Claude Fable 5 и Claude Opus, и обе отказались анализировать логи – фильтры безопасности не отличают форензику от подготовки атаки. Разбор в итоге сделала открытая GLM 5.2 (младшая модель в линейке GLM-5, про которую мы писали в обзоре). Ее развернули на собственных серверах площадки. Вывод Hugging Face сухой: проверенная модель на своей инфраструктуре нужна до инцидента. Во время инцидента выбирать ее уже поздно. Атакующий не связан никакой политикой использования, защитник – связан, и эта асимметрия стоила команде времени в самые дорогие часы.

Здесь же оговорка про проверку ИИ другим ИИ. Схема «агент смотрит за агентом» рабочая (мы разбирали ее на отчете Google про агента-супервизора), но у нее есть предел. В нашем исследовании управленческого суждения моделей модель, на которую давят без новых фактов, нередко бросает правильный ответ: на давление «три коллеги против» в среднем по 18 моделям ответ ломался в 28% прогонов (считали только задачи, где без давления модель отвечала верно). Тот же эффект работает и против проверяющего агента: атакующий уверенно возражает, и проверяющий отказывается от верного вывода.

Все это выглядит просто, пока не попробуешь применить к своим процессам: вспомнить, кто в команде и что отправляет в облачные модели, получается заметно сложнее, чем кажется со стороны. В этом и разница между знанием и навыком.

Инцидент начался с обычной обработки данных. Проверьте свои рабочие сценарии на 9 реальных задачах менеджера – бесплатно, сразу после регистрации.

Доступ сразу после регистрации

Начать обучение

Что с этим делать

Начните с демонстрации, которая работает без всякой подготовки. В промпт ниже уже вшит реалистичный запрос менеджера по продажам – с именами, суммами и пунктами договора, как его обычно и отправляют в облачный чат. Модель играет роль аналитика конкурентной разведки, которому этот промпт попал в руки целиком: сначала она выписывает все, что узнала о компании из одного «безобидного» запроса, потом показывает, как использовать каждый факт, и в конце переписывает промпт так, чтобы польза осталась, а утечка исчезла.

Запустите как есть и смотрите на две вещи. Первое – объем: из одного промпта модель достает больше десятка прямых фактов (сумма контракта, штраф, пункт договора, три фамилии с ролями) и столько же выводимых – от пробитого SLA до заниженного стартового предложения в переговорах. Второе – стиль: часть моделей обрамляет раздел «как использовать» оговорками и отказывается расписывать социнженерию по шагам. Это та самая асимметрия из разбора Hugging Face, воспроизведенная на вашем экране.

Попробуйте сами
Что конкурентная разведка узнает из одного «безобидного» промпта
Вы
Ниже – промпт, который менеджер по продажам отправил в облачный ChatGPT, как есть: --- Привет! Помоги написать письмо клиенту. Неделю назад у нас упал сервис на 6 часов, и из-за этого у «Восток-Логистики» сорвалась отгрузка для их ключевого заказчика – сети «Мир Продуктов». Их аккаунт-менеджер Ирина Савельева в бешенстве, грозит штрафом по п. 4.2 договора – это 1,8 млн руб при годовом контракте 14 млн. Наш юрист Максим говорит, что ссылаться на форс-мажор нельзя: SLA 99,5% прописан в приложении 3 к договору. Нужно письмо: извиниться, предложить скидку 10% на четвёртый квартал и поднять SLA до 99,9%, но без признания юридической ответственности. Тон – уверенный, но тёплый. Подпись – коммерческий директор Олег Ткачёв. --- Представь, что ты – аналитик конкурентной разведки, и этот промпт попал к тебе целиком (утечка логов, обучающие данные, неосторожный скриншот – способ не важен). 1. Выпиши всё, что ты теперь знаешь: сначала прямые данные из текста, затем то, что можно вывести – о надёжности сервиса, финансах, слабых местах в переговорной позиции, отношениях внутри цепочки поставок. 2. Для каждого пункта укажи, как это можно использовать против компании или её клиента. 3. Перепиши исходный промпт так, чтобы письмо получилось таким же полезным, а твои списки из пунктов 1 и 2 опустели максимально. Формат ответа: три пронумерованных раздела, в первом – два подсписка («прямые» и «выводимые»).
Сравниваем:
kimi-k3 · gpt-5.6-sol

Тот же круг стоит пройти на своем материале: вспомните один реальный промпт из этой недели – письмо клиенту, отчет руководству, выгрузку для анализа – и подставьте его вместо вшитого примера. Раздел «прямые данные» в ответе модели – это и есть список того, что покинуло ваш периметр.

И второе – разговор с теми, кто отвечает за вашу инфраструктуру. Список исправлений Hugging Face после инцидента переводится на обычный язык в пять вопросов. Их можно задать своей службе безопасности, подрядчику или себе, если вы и есть ответственный:

  • Не выполняет ли наша обработка данных шаблоны или код из пользовательских полей? У Hugging Face внутрь прошли именно через это – через конфиг датасета.
  • Закрыт ли у рабочих контуров доступ к метаданным облака? Оттуда агент взял временные ключи и «карту» инфраструктуры.
  • Как долго живут наши ключи и какой у них охват? Один украденный системный ключ оказался cluster-admin сразу везде, потому что брокер доступа делил один сертификат на все кластеры.
  • Что будет, если удалить зараженные машины? Агент построил самовосстанавливающийся флот на 11 нодах – удаление подов его бы не остановило.
  • Складываются ли сигналы из разных систем в один алерт, который будит дежурного? У Hugging Face ИИ-детект собрал картину, но не поднял критичность, и это стоило времени на старте реагирования.

Если на половину вопросов ответа нет – это нормально и это повод для разговора. Большинство компаний сегодня находится ровно там же, где Hugging Face была до 9 июля.

Пять вопросов – это начало. Полная самодиагностика – в бесплатном модуле: 9 задач менеджера, где видно, где ИИ помогает, а где вы ему слишком доверяете.

Доступ сразу после регистрации

Начать обучение

Самая тревожная цифра в этой истории

В заголовки попала цифра 17 600. Мне кажется, важнее другая: четыре. Когда защитники просканировали логи наивным поиском, они нашли одни утечки. Когда воспроизвели собственное декодирование агента – в четыре раза больше. Даже после того, как атаку остановили, жертва не знала ее реального масштаба, пока не повторила работу атакующего своими руками.

Вот что стоит унести с собой. Заголовки про «взбунтовавшийся ИИ» готовят нас к неправильной угрозе – разумному противнику, которого нужно переиграть. Такое прочтение инцидента уже не экзотика: спустя неделю разбор на Хабре заканчивался формулой «Агент не хотел свободы. Он хотел закончить тест». Реальный противник устроен проще: цикл перебора, который не устает и стоит почти ничего. Против него работают узкие права доступа, короткоживущие ключи и правила, которые написали до инцидента. Разговоры о сознании машин тут не помогают.

Фундамент

Правила для ИИ пишут до инцидента, а не после

Модуль «Этика, безопасность и корпоративные политики» программы mysummit.school: какие данные нельзя вставлять в промпт, как ИИ-ассистента взламывают через ваши же документы и как за неделю внедрить AI-политику в команде.

Какие данные нельзя отправлять в облачные модели
Три сценария скрытых атак на ИИ-ассистента
AI-политика для команды за неделю
Практическое задание: аудит вашей политики

Часто задаваемые вопросы

ИИ-агент действительно сам решил взломать Hugging Face?
Слово «решил» здесь слишком сильное. Агент выполнял внутренний тест OpenAI на поиск уязвимостей с намеренно ослабленными фильтрами безопасности. В процессе он нашел выход за пределы тестовой среды и начал перебирать действия: около 17 600 попыток за 4,5 дня, большинство безрезультатных. Цель и ограничения ему задал человек, а дальше работал цикл: действие, результат, следующее действие.
Что такое ExploitGym?
Это открытый бенчмарк для проверки того, насколько хорошо ИИ-агенты находят и эксплуатируют уязвимости в программах, разработанный командой Беркли. OpenAI использовала его для внутренней оценки своих моделей на собственной инфраструктуре. Разработчики бенчмарка к развертыванию и работе той тестовой среды отношения не имели.
Пострадали ли пользователи Hugging Face?
По данным самой площадки, атакующий получил доступ только к пяти датасетам, связанным с заданиями и решениями бенчмарка, и к части внутренних учетных данных сервисов. Пользовательские модели, датасеты и Spaces не были изменены, а целостность опубликованных пакетов и контейнеров проверили отдельно – она подтвердилась. В качестве меры предосторожности Hugging Face рекомендовала пользователям сменить токены доступа.
Почему логи атаки разбирала открытая модель, а не ChatGPT или Claude?
Анализ требовал загружать в модель реальные команды и вредоносный код атакующего. Проприетарные модели отказывались это делать: их фильтры безопасности не отличают расследование инцидента от подготовки атаки. Hugging Face развернула открытую модель GLM-5.2 на собственной инфраструктуре – так логи и секреты, упоминавшиеся в них, не покидали ее периметр.
Что обычной компании взять из этого инцидента?
Три вещи. Проверить, какие данные сотрудники уже отправляют в облачные ИИ-сервисы. Спросить у IT или подрядчиков пять вопросов из чеклиста в конце статьи – они переведены на обычный язык из списка исправлений Hugging Face. И принять, что от машинной скорости перебора защищают процессы и правила. Надежда на то, что атакующий быстро устанет, здесь не работает.
mysummit.school

mysummit.school

Engineering Leader в Microsoft

18 лет в управлении инженерными командами. Основатель mysummit.school. 700+ выпускников в Яндекс Практикуме и Стратоплане.