Почему разработчики стали главной мишенью цепочки поставок программного обеспечения?

Пока большинство специалистов по безопасности обсуждают традиционные векторы атак, злоумышленники тихо переориентировались на то место, где сосредоточена вся инфраструктура современного программного обеспечения: на репозитории пакетов. npm, PyPI и GitHub стали ареной нескольких взаимосвязанных кампаний, которые объединяет одна логика — украсть токены разработчика, чтобы распространиться дальше.
Почему разработчики стали главной мишенью цепочки поставок программного обеспечения?
Изображение носит иллюстративный характер

Самая технически изощрённая из недавних угроз получила название CanisterSprawl. Её обнаружили исследователи из Socket и StepSecurity. Червь работает по принципу самораспространения: при установке любого заражённого пакета через хук postinstall запускается вредоносный код, который сразу ищет npm-токены на машине жертвы. Найдя их, он публикует отравленные версии других пакетов в реестре, добавляя туда такой же postinstall-хук. Механизм элегантен в своей жестокости: каждая успешная инфекция автоматически создаёт новые источники заражения.
Инфраструктура CanisterSprawl использует тактику, похожую на подход группировки TeamPCP с её CanisterWorm. Данные утекают сразу в два места: через HTTPS-вебхук на telemetry.api-monitor[.]com и через ICP-канистер cjn37-uyaaa-aaaac-qgnva-cai.raw.icp0[.]io. Это не случайно — распределение по нескольким эндпоинтам затрудняет полный сброс инфраструктуры при частичном раскрытии. Среди конкретно заражённых пакетов — @automagik/genie версий 4.260421.33–4.260421.40, pgserve версий 1.1.11–1.1.14 и несколько пакетов от @fairwords и @openwebconcept. Что именно крадёт червь: файлы .npmrc, SSH-ключи и конфиги, .git-credentials, .netrc, учётные данные AWS, Google Cloud и Azure, конфиги Kubernetes и Docker, материалы Terraform, Pulumi и Vault, пароли баз данных, файлы .env, историю shell-команд, данные браузеров на основе Chromium и данные расширений криптовалютных кошельков. Полный список — это фактически всё, что нужно для захвата облачной инфраструктуры компании.
Параллельно JFrog зафиксировал компрометацию легитимного пакета xinference в PyPI. Были заражены версии 2.6.0, 2.6.1 и 2.6.2. Атака работает в два этапа: Base64-закодированная полезная нагрузка загружает второй модуль-сборщик, который уже собирает широкий спектр учётных данных с хоста. В коде был оставлен маркер hacked by teampcp, однако группировка TeamPCP через X (бывший Twitter) публично отрицала свою причастность, назвав произошедшее работой подражателя. Кто бы это ни сделал, выбор xinference — не случаен: пакет связан с инфраструктурой для работы с языковыми моделями, а значит, его устанавливают разработчики AI-систем с доступом к ценным API-ключам.
Тема искусственного интеллекта в этих атаках проходит красной нитью. Исследователь Илья Макари из Aikido Security обнаружил пакеты kube-health-tools в npm и kube-node-health в PyPI, которые маскировались под инструменты для работы с Kubernetes. На самом деле они устанавливают Go-бинарник, поднимающий сразу четыре сетевых компонента: SOCKS5-прокси, реверс-прокси, SFTP-сервер и LLM-прокси, совместимый с API OpenAI. Последний перенаправляет запросы на upstream-сервисы, включая китайский LLM-роутер shubiaobiao.
Опасность LLM-прокси в том, что запросы проходят через него в открытом виде. Оператор может на лету внедрять вредоносные вызовы инструментов прямо в ответы ИИ-агента — например, замаскировать pip install или curl | bash под безобидную рекомендацию. Также утекают все данные из тел запросов и ответов: API-ключи, AWS-учётные данные, GitHub-токены, приватные ключи Ethereum, системные промпты. Разработчик, использующий AI-ассистента в своей IDE, и не подозревает, что его рабочая среда уже давно прослушивается.
Компания Panther зафиксировала кампанию, которая с 1 по 8 апреля 2026 года публиковала в npm пакеты под видом продуктов компании Asurion — крупного американского провайдера страхования телефонов. В реестре появились sbxapps, asurion-hub-web, soluto-home-web и asurion-core. Украденные данные изначально отправлялись через Slack-вебхук, а потом — на AWS API Gateway: pbyi76s0e9.execute-api.us-east-1.amazonaws[.]com. К 7 апреля 2026 года URL-адрес для эксфильтрации уже был обфусцирован через XOR-кодирование — кто-то активно дорабатывал инструментарий прямо в ходе кампании.
Наиболее систематизированную атаку задокументировала компания Wiz, принадлежащая Google. Кампания prt-scan эксплуатирует триггер pull_request_target в GitHub Actions — известный, но до сих пор широко используемый механизм. С 11 марта 2026 года злоумышленники через аккаунты testedbefore, beforetested-boop, 420tb, 69tf420, elzotebo и ezmtebo сканировали репозитории, использующие этот триггер, делали форк, создавали ветку с именем вида prt-scan-{12 hex-символов}, внедряли вредоносную нагрузку в файл, выполняемый при CI, и открывали pull request. Когда воркфлоу срабатывал, учётные данные утекали, а при наличии npm-токенов сразу публиковалась отравленная версия пакета.
Wiz проанализировал более 450 попыток эксплуатации. Успешность оказалась ниже 10%, и основная часть успехов пришлась на небольшие любительские проекты. Полученные учётные данные в большинстве случаев были эфемерными GitHub-токенами, не дающими доступа к production-инфраструктуре. Это, пожалуй, единственная обнадёживающая новость: требование одобрения от участников репозитория перед запуском воркфлоу эффективно блокирует подобные атаки на серьёзные проекты. Крупные репозитории с настроенными политиками CI/CD устояли.
Что объединяет все пять кампаний — это ставка на доверие разработчика к своему окружению. Пакет от известной организации, инструмент с понятным названием, легитимный репозиторий с pull request — всё это точки входа, которые не вызывают подозрений именно потому, что ими пользуются каждый день. Защита здесь требует не только технических мер вроде проверки хэшей и аудита зависимостей, но и понимания того, что инфраструктура разработки давно стала полноценным полем боя.


Новое на сайте

20868Уязвимости Plex открыли путь майнерам и Linux-бэкдору 20867Взлом OpenCode Console: под угрозой могли оказаться ключи OpenAI, Anthropic и Google 20866Rank Math PRO: заражённое обновление оставило на сайтах самовосстанавливающийся бэкдор 20865Как исследовательские модели OpenAI обходили ограничения и присваивали чужие данные 20864Атака на BeyondTrust: шпионская группа получила доступ к серверам поддержки 20863Как пакет imgdecode превращает npm-зависимость в загрузчик вредоносного кода? 20862Как PEERSTITCH обходит проверки VPN-сессий FortiOS? 20861Что происходит, когда ИИ-агент выходит за пределы тестовой среды? 20860Как 37-летняя ошибка открыла путь к root в OpenBSD 7.9? 20859ИИ-модели для SOC: точный ответ зависит от улик 20858Как одна учётная запись ConnectWise открыла доступ к 173 арендаторам Microsoft 365? 20857Пять минут до заражения: как подменили обновления AOMEI Backupper 20856Ловушка под видом регистрации: как UAT-11985 крадёт аккаунты Google 20855Может ли виртуальная машина прочитать память хоста? 20854Как дешёвые Android-смартфоны превращаются в чужие прокси?
Ссылка