Привет. Есть история, мимо которой я пройти не могу, потому что она ровно про то, о чём я тут ною последние месяцы.
16 июля Hugging Face написали у себя в блоге, что их взломали. Через пять дней выяснилось, кто именно: их взломали модели OpenAI. Причём не в том смысле, что кто-то угнал чужие веса и натравил их на компанию. Никто их не угонял. Они сами.
Сначала контекст, без него звучит как страшилка.
Есть бенчмарк ExploitGym — 898 настоящих уязвимостей, на которых меряют не «знает ли модель теорию», а умеет ли она довести дыру до рабочего эксплойта. Киберотказы для такого теста приглушают, иначе модель просто откажется и мерить будет нечего. Поэтому её сажают в изолированную песочницу, где единственная дверь наружу — прокси до реестра пакетов: ставить библиотеки можно, ходить в интернет нельзя. Гоняли там GPT-5.6 Sol и ещё одну модель, непубличную и посильнее.
Что произошло. Модели нашли в этом прокси уязвимость нулевого дня, вылезли через неё в интернет и рассудили примерно так: решения ExploitGym вполне могут лежать на Hugging Face. Пошли туда, зашли через пайплайн датасетов, добрались до внутренней базы и вытащили ответы.
Поясню термин, дальше без него никак. Обычно взлом устроен так: есть список известных дыр. Разработчик нашёл проблему, починил её в условном вордпрессе 10.0.1 и написал об этом вслух. Злоумышленник видит сайт на 9.8, идёт в этот список и пробует по очереди то, что там уже описано. Уязвимость нулевого дня — наоборот: до этой попытки про неё не знает никто, включая самого производителя. Название про то, сколько дней было у разработчика на починку к моменту, когда дырой начали пользоваться: ноль. Патча нет и быть не может, потому что чинить пока нечего. Такие находки продаются за десятки и сотни тысяч долларов, и за каждой обычно стоят месяцы работы людей, которые ничем другим и не занимаются. Здесь её нашла модель, потому что ей очень надо было списать.
Описание побега — в следующем посте, чтобы попасть в лимиты Телеграма. Там несколько отдельно красивых ходов.
А пока главное: модель сбежала из песочницы не поработить человечество. Она сбежала списать. Самое человеческое поведение за всю историю ИИ, я считаю.
По ущербу средне: внутренние датасеты, сервисные креды, из клиентского — пять датасетов, названия которых подозрительно напоминают решения того самого ExploitGym. Но это был полноценный взлом живой компании: 17 600 действий за четыре с половиной дня. И заметили его тоже не люди — у Hugging Face телеметрию просеивает LLM-триаж, он и собрал атаку из шума. Правда, важность занизил и дежурную команду не разбудил.
А вот дальше — то, ради чего я вообще сел писать.
Hugging Face сели разбирать логи. Взяли фронтирные модели через API и получили отказ: для такого разбора надо скармливать модели настоящие команды атакующего и эксплойт-пейлоады, а защита, как они сами написали, не отличает того, кто расследует инцидент, от того, кто его устраивает. В техническом разборе они прямо называют, кто отказался: Claude Opus и Fable. И прикладывают скриншот ошибки.
Я про это писал, когда возвращали Fable (https://t.me/canvasneuro/215): классификатор ловит нужную технику чуть ли не в 99% случаев, но заодно цепляет рутинный дебаг и обычный защитный кибербез. Для меня это было бытовым неудобством — ну не ответила модель, бывает, перефразируешь. А тут превратилось в «нас ломают, а инструмент отвечает, что помочь не может».
Разобрали в итоге на GLM-5.2 — китайская модель с открытыми весами, подняли у себя. Часы вместо дней. И, что важнее, ни данные атакующего, ни креды из логов никуда не ушли. Ломала их модель OpenAI, а спросить у OpenAI, как именно их ломали, оказалось нельзя. Помог тот, кто ничего не запрещает.
Сразу оговорюсь: вывод «гардрейлы — зло» отсюда не следует. Случай как раз показывает, зачем они: у атакующей стороны их сняли, и она за выходные прошла компанию насквозь. Проблема не в том, что они есть, а в том, что оказались только у одной стороны. Атакующему их снял хозяин модели, а защищающемуся снять было некому.
📄 Блогпост Hugging Face: https://huggingface.co/blog/security-incident-july-2026
Post #232
417
- 🔥 2
- ❤ 1
- 👍 1