Атаки на цепочку поставок ИИ обходят тестирование моделей на прочность
Источник: VentureBeat · Louis Columbus
За 50 дней OpenAI, Anthropic и Meta столкнулись с четырьмя инцидентами в цепочках поставок: тремя целенаправленными атаками злоумышленников и одним внутренним сбоем при сборке. Ни один из них не был направлен против самой модели, но все четыре обнажили одну и ту же уязвимость: конвейеры релизов, хуки зависимостей, раннеры CI и механизмы проверки сборки, которые не охватывались ни одной системной картой, ни одной оценкой AISI, ни одним тестом на проникновение от Gray Swan.
11 мая 2026 года саморазмножающийся червь под названием Mini Shai-Hulud за шесть минут опубликовал 84 вредоносные версии пакетов в 42 npm-пакетах пространства имен @tanstack/*. Червь проник через файл release.yml, задействовав цепочку уязвимостей: неправильную настройку pull_request_target, отравление кэша GitHub Actions и извлечение OIDC-токенов из памяти раннера для захвата собственного доверенного конвейера релизов TanStack. Пакеты обладали действительной историей происхождения SLSA Build Level 3, поскольку были опубликованы из правильного репозитория, с помощью правильного рабочего процесса и с использованием легитимно созданного OIDC-токена. Ни один пароль мейнтейнера не был скомпрометирован фишингом. Ни один запрос двухфакторной аутентификации не был перехвачен.
Модель доверия сработала ровно так, как задумывалось, и тем не менее произвела 84 вредоносных артефакта.
Два дня спустя OpenAI подтвердила, что два устройства сотрудников были скомпрометированы, а учетные данные — эксфильтрованы из внутренних репозиториев кода. Сейчас OpenAI аннулирует свои сертификаты безопасности macOS и обязывает всех пользователей десктопной версии обновиться до 12 июня 2026 года. В OpenAI отметили, что уже занимались укреплением своего CI/CD-конвейера после более раннего инцидента в цепочке поставок, но два пострадавших устройства еще не получили обновленные конфигурации. Именно так выглядит реакция на взлом конвейера сборки, а не на инцидент с безопасностью модели.
Четыре инцидента — один вывод
Команды тестирования моделей на проникновение не проверяют конвейеры релизов. Приведенные ниже четыре инцидента служат доказательством единого архитектурного упущения, которое должно быть включено в каждый опросник для ИИ-вендоров.
Инъекция команд в OpenAI Codex (раскрыта 30 марта 2026 г.). Исследователь из BeyondTrust Phantom Labs Тайлер Джесперсен обнаружил, что OpenAI Codex передавал имена веток GitHub напрямую в команды оболочки без какой-либо санитизации. Злоумышленник мог внедрить точку с запятой и подоболочку с обратным апострофом в имя ветки, и контейнер Codex выполнял ее, возвращая OAuth-токен жертвы в открытом виде. Уязвимость затронула сайт ChatGPT, CLI Codex, SDK Codex и расширение для IDE. OpenAI классифицировала ее как критическую (Priority 1) и завершила устранение к февралю 2026 года. Команда Phantom Labs использовала символы Unicode, чтобы сделать имя вредоносной ветки визуально неотличимым от «main» в интерфейсе Codex. Одно имя ветки. С этого началась атака.
Отравление цепочки поставок LiteLLM и взлом Mercor (24–27 марта 2026 г.). Группа угроз TeamPCP использовала учетные данные, украденные в ходе предыдущего взлома сканера уязвимостей Trivy от Aqua Security, для публикации двух отравленных версий Python-пакета LiteLLM в репозитории PyPI. LiteLLM — это широко распространенный шлюз-прокси для LLM с открытым исходным кодом, используемый ключевыми инфраструктурными командами в сфере ИИ. Вредоносные версии находились в открытом доступе около 40 минут и набрали почти 47 000 загрузок, прежде чем PyPI изолировал их.
Этого оказалось достаточно.
Атака распространилась вниз по цепочке на Mercor — ИИ-стартап стоимостью 10 миллиардов долларов, поставляющий обучающие данные для Meta, OpenAI и Anthropic. Было эксфильтровано четыре терабайта данных, включая материалы по проприетарным методологиям обучения от Meta. Meta бессрочно заморозила партнерство. В течение пяти дней за этим последовал коллективный иск. Всего одна скомпромиссная зависимость с открытым исходным кодом, пробывшая на PyPI 40 минут, создала межотраслевую зону поражения, которую не смог бы выявить ни один ред-тим какой-либо отдельной компании-вендора.
Утечка исходных карт Anthropic Claude Code (31 марта 2026 г.). Этот инцидент не был связан с действиями злоумышленников. Компания Anthropic выпустила Claude Code версии 2.1.88 в реестр npm вместе с файлом карты исходного кода размером 59,8 МБ, который никоим образом не должен был туда попадать. Файл карты указывал на ZIP-архив в собственном бакете Cloudflare R2 компании Anthropic, содержащий 513 000 строк кода TypeScript без обфускации в 1906 файлах. Логика оркестрации агентов. 44 функциональных флага. Системные промпты. Архитектура координации мультиагентных систем. Все публично. Все доступно для скачивания. Аутентификация не требовалась. Исследователь безопасности Чаофань Шоу сообщил об утечке в течение нескольких часов, и Anthropic удалила пакет. В компании подтвердили, что это была «проблема упаковки релиза, вызванная человеческим фактором». Это стало уже второй подобной утечкой за 13 месяцев. Первопричиной стала пропущенная строка в файле .npmignore. Злоумышленники не были задействованы, но брешь в процессе выпуска идентична. Между артефактом сборки и шагом публикации в реестре отсутствовал какой-либо шлюз проверки человеком.
Червь TanStack и распространение по цепочке (11–14 мая 2026 г.). Специалисты Wiz Research с высокой долей уверенности приписали атаку Mini Shai-Hulud группе TeamPCP. Компания StepSecurity обнаружила компрометацию в течение 20 минут. Червь вышел за пределы TanStack, поразив Mistral AI, UiPath и более 160 пакетов в считанные часы. Mini Shai-Hulud даже выдавал себя за GitHub-приложение Anthropic Claude, создавая коммиты под поддельной личностью «claude
Четыре инцидента. Три передовые лаборатории. Один вывод. Область действия ред-тима ограничивается границами модели, в то время как конвейер сборки находится по другую сторону.
Сроки, которые не способна объяснить ни одна системная карта
10 мая 2026 года компания OpenAI запустила Daybreak — инициативу в сфере кибербезопасности, созданную на базе GPT-5.5 и новой либеральной модели GPT-5.5-Cyber, предназначенной для авторизованного тестирования на проникновение, ред-тиминга и обнаружения уязвимостей. Daybreak объединяет Codex Security с партнерами, включая Cisco, CrowdStrike, Akamai, Cloudflare и Zscaler. В OpenAI преподнесли этот запуск как доказательство того, что передовой ИИ способен качнуть чашу весов в пользу защитников.
На следующий день червь TanStack скомпрометировал два устройства сотрудников OpenAI.
В собственном отчете об инциденте OpenAI прямо признала наличие упущения. Компания уже занималась укреплением своего CI/CD-конвейера после более ранней атаки на цепочку поставок Axios, однако два затронутых устройства «не имели обновленных конфигураций, которые предотвратили бы загрузку». Средства контроля существовали. Развертывание находилось в процессе. Червь прибыл раньше.
ИБ-сообщество увидело ту же самую брешь: исследователь безопасности @EnTr0pY_88 отметил в X, что главным сигналом является ротация сертификатов, а не эксфильтрованный код. «Ротация сертификатов… — это то, что вы делаете, когда радиус поражения затронул доверие к подписи, а не только доступ к исходному коду». Пользователь @OpenMatter_ описал сбой проверки происхождения SLSA одним предложением: «Если злоумышленник контролирует ваш CI-раннер, он контролирует ваши аттестации. Безопасность на основе политик терпит крах в масштабе». А @The_Calda уместил внутреннее противоречие отчета в семи словах: «»Ограниченное влияние», но в следующем предложении — «мы ротируем сертификаты подписи»».
Компания, которая запустила платформу кибербезопасности в воскресенье и сообщила о взломе конвейера сборки во вторник, не терпит неудачу в вопросах безопасности моделей. OpenAI демонстрирует именно ту уязвимость, для устранения которой создана эта матрица аудита. Ред-тим для моделей и ред-тим для конвейера релизов — это две разные дисциплины; четыре инцидента за 50 дней показывают, что финансирование получает стабильно только одна из них.
Предписывающая матрица от VentureBeat
Приведенная ниже матрица сопоставляет семь классов поверхностей релизов, отсутствующих в опросниках ИИ-вендоров, с учетом затронутых вендоров, механизмов сбоев, пробелов в обнаружении, технических мер митигации и уровней приоритетности, которые служба безопасности может внедрить до закрытия продлений контрактов во втором квартале.
Для команд, которым необходимо сопоставить эти строки с существующими инструментами GRC, строки 2, 3 и 5 соответствуют стандарту NIST SSDF PS.1.1 (защита всех форм кода от несанкционированного доступа и манипуляций). Строка 4 соответствует SSDF PS.2.1 (предоставление механизмов проверки целостности выпускаемого программного обеспечения). Строка 6 частично соотносится с требованиями SLSA Source Track к подтвержденной личности контрибьютора, хотя ни один из опубликованных фреймворков напрямую не затрагивает происхождение учетных данных мейнтейнеров восходящих зависимостей. Строка 7 пока не охвачена ни одним из опубликованных стандартов, что само по себе является выводом.
|
Класс поверхности релизов |
Затронутый вендор |
Механизм сбоя |
Пробел в обнаружении |
Техническая митигация |
Приоритет |
|
Оценки возможностей моделей (джейлбрейк, злоупотребление, эксфильтрация) |
Все три (продолжается) |
Охвачено. Системные карты, экспертный набор AISI, область охвата Gray Swan сегодня. |
Отсутствует. Эта строка является базовой. |
Продолжать требовать системную карту при каждом продлении. |
Базовый |
|
Граница доверия CI-раннера (pull_request_target) |
TanStack; экосистема OpenAI (11–14 мая 2026 г.) |
Запрос pull_request_target в TanStack выполнил код форка в контексте базового репозитория. Отравленный кэш pnpm. Извлечен OIDC-токен из памяти раннера. Скомпрометированы два устройства сотрудников OpenAI. |
Ни одна системная карта не охватывает изоляцию CI-раннера. Ни одна оценка AISI не тестирует границы доверия между форком и базой. |
Провести аудит каждого репозитория на предмет наличия pull_request_target + checkout SHA форка. Заблокировать код форка из контекста базового репозитория. Закрепить ключи кэша за SHA коммита. |
Сделать на этой неделе |
|
Доверенный издатель OIDC + происхождение SLSA |
TanStack; экосистема OpenAI (11 мая 2026 г.) |
TanStack создал действительные доказательства происхождения SLSA Build Level 3 для всех 84 вредоносных пакетов. Первый известный npm-червь с действительной криптографической аттестацией. |
Аттестация SLSA подтверждает происхождение сборки, а не намерения разработчиков. Ни один опросник вендора не различает их. |
Привязать доверенного издателя к ветке и рабочему процессу, а не только к репозиторию. Добавить поведенческий анализ во время установки. |
Сделать на этой неделе |
|
Проверка релизной упаковки (ручной шлюз перед публикацией) |
Anthropic (31 мар. 2026 г.) |
Отсутствие .npmignore привело к поставке карты исходного кода размером 59,8 МБ в npm-пакете Claude Code. Раскрыто 513 тыс. строк, включая логику агентов, 44 функциональных флага, системные промпты. Вторая утечка за 13 месяцев. Вызвано собственными силами, а не действиями злоумышленников. |
Ни одно тестирование на проникновение не проверяет содержимое артефактов до их публикации в реестре. |
Обязательная ручная проверка между созданием артефакта сборки и публикацией в реестре. Обеспечить соблюдение .npmignore в CI. Прерывать сборку при неожиданном размере артефакта. |
До продления |
|
Хуки жизненного цикла зависимостей (prepare, postinstall) |
TanStack; OpenAI + экосистема (11 мая 2026 г.) |
router_init.js выполняется при импорте. tanstack_runner.js самораспространяется через хук prepare в optionalDependencies. Распространилось на Mistral AI, UiPath и более 160 пакетов за часы. |
Хуки жизненного цикла выполняются до запуска любых сканеров. Оценки моделей никогда не тестируют поведение пакета при установке. |
Отключить скрипты жизненного цикла в CI по умолчанию. Явный белый список для продакшена. Помечать новые optionalDependencies при ревью PR. Установить параметр minimumReleaseAge. |
Сделать на этой неделе |
|
Гигиена учетных данных мейнтейнеров вендора |
Meta через Mercor (24–27 марта 2026 г.) |
TeamPCP похитила учетные данные мейнтейнера LiteLLM в результате предыдущего взлома через Trivy. Две отравленные версии на PyPI просуществовали 40 минут. Кэш Mercor содержал ссылки на методологию обучения Meta. Эксфильтровано 4 ТБ. Meta заморозила партнерство. |
Опросники вендоров затрагивают вопросы шифрования и контроля доступа, но не происхождение учетных данных мейнтейнеров для транзитивных зависимостей. |
Требовать аутентификацию с использованием аппаратных ключей от каждого мейнтейнера перед подключением. Добавить период охлаждения (cooldown) для пакетных менеджеров. Ежеквартально проводить аудит дерева транзитивных зависимостей. |
Добавить в контракт с вендором |
|
Санитизация входных данных агентных контейнеров |
OpenAI Codex (раскрыто 30 мар. 2026 г.) |
BeyondTrust Phantom Labs внедрила команды оболочки через параметр имени ветки GitHub. Похищены OAuth-токены из контейнера Codex. Масштабируемо на общие репозитории. Получило оценку Critical P1, пропатчено в февр. 2026 г. |
Ред-тимы агентов проверяют инъекции промптов, а не инъекции параметров ввода на уровне контейнера. |
Санитизировать все внешние входные данные перед выполнением команд оболочки. Провести аудит области действия и времени жизни OAuth-токенов для каждой сессии агента. Обеспечить принцип наименьших привилегий для каждого контейнера. |
Сделать на этой неделе |
План действий директора по безопасности
Матрица указывает вашей команде, что именно нужно исправить. Три действия подскажут директорам по безопасности, как продвинуть этот процесс.
-
Добавьте один вопрос в каждый опросник для ИИ-вендоров. «Проводит ли ваша организация тестирование на проникновение своего конвейера релизов, включая границы доверия CI-раннеров, определение областей действия OIDC-токенов, хуки жизненного цикла зависимостей и шлюзы публикации в реестр? Укажите дату последней оценки и ее область действия». Отсутствие даты и документа с описанием области действия и есть искомый результат проверки.
-
Проверьте свои собственные CI-конвейеры по пунктам со 2 по 7 на этой неделе. StepSecurity и Snyk опубликовали шаги по обнаружению и устранению для паттернов червя TanStack. Команды разработчиков каждую неделю подтягивают SDK OpenAI, пакеты Anthropic и веса Llama через npm, PyPI и HuggingFace. Те же самые паттерны, которые подверглись эксплойту, находятся в вашем CI прямо сейчас.
-
Доложите совету директоров о проблеме пробелов в происхождении. Червь TanStack доказал, что действительное криптографическое происхождение может существовать поверх вредоносного пакета. Аттестация сообщает совету директоров, где был собран пакет. Поведенческий анализ говорит совету, что пакет делает после установки. Продление контрактов во втором квартале требует и того, и другого. Анализ Snyk рекомендует закреплять конфигурации доверенных издателей за конкретными ветками и рабочими процессами, а не только за репозиториями. Именно таким языком должна быть составлена презентация для совета директоров.
Червь уже знает, где хранятся ваши ИИ-учетные данные
Mini Shai-Hulud не ограничивается секретами CI. В Datadog Security Labs задокументировали, что полезная нагрузка считывает файл ~/.claude.json и эксфильтрует его. Она выполняет поиск хранилищ 1Password и Bitwarden, учетных записей служб Kubernetes, токенов облачных провайдеров и файлов истории оболочки, куда разработчики вставляют API-ключи. Деобфускация, выполненная StepSecurity, подтвердила, что Mini Shai-Hulud собирает конфигурации MCP-серверов Claude и Kiro, в которых хранятся API-ключи и токены аутентификации для внешних служб. Для разработчиков, использующих ИИ-агенты для кодинга, червь уже знает, где живут их учетные данные.
OpenAI, Anthropic и Meta продолжат публиковать системные карты. Они продолжат финансировать соревнования по ред-тимингу. Они продолжат успешно проходить оценки моделей. Ничто из этого не помешает следующему червю проникнуть внутрь через release.yml.
Команда разбора полетов инцидента с TanStack высказалась предельно прямо. Современные средства защиты цепочек поставок важны, но сами по себе недостаточны. Команды должны проактивно выявлять и закрывать пробелы в рабочих процессах, а не полагаться исключительно на функции безопасности своих инструментов.



