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

Пока большинство специалистов по безопасности обсуждают традиционные векторы атак, злоумышленники тихо переориентировались на то место, где сосредоточена вся инфраструктура современного программного обеспечения: на репозитории пакетов. 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 — всё это точки входа, которые не вызывают подозрений именно потому, что ими пользуются каждый день. Защита здесь требует не только технических мер вроде проверки хэшей и аудита зависимостей, но и понимания того, что инфраструктура разработки давно стала полноценным полем боя.


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

20327Кости прерий: как истребление бизонов породило целую индустрию — и сама себя же уничтожила 20326Кто и зачем взламывает серверы Ollama и ComfyUI ради ключей от AWS? 20325Как злоумышленники спрятали командный сервер внутри блокчейна и почему его невозможно... 20324Брюссель заставляет Android делиться секретами с чужими ИИ-помощниками 20323WordPress: как два бага слились в одну критическую дыру, которую назвали wp2shell 20322Как китайские хакеры обманули DigiCert и украли сертификаты для подписи кода? 20321Что скрывается за уязвимостью, которую агентство США внесло в список активно используемых... 20320Автономные системы наступают быстрее, чем инфраструктура для управления ими: кто выиграет... 20319Почему в OpenSSL нашли дыру, съедающую память серверов, но не дали ей даже номер CVE? 20317SonicWall SMA 1000: как два бага превратили VPN-шлюз в бэкдор для атакующих 20316Может ли уязвимость в клиенте Zoom для Windows открыть доступ к чужому аккаунту без... 20315TELEPUZ: новый вредонос на C, который научился прятаться в Telegram, Steam и блокчейне... 20314Дома из дёрна: как исландцы триста лет прятались от холода под слоем земли и травы 20313Как один токен от чужого сервиса мог впустить злоумышленника в чужой аккаунт n8n?
Ссылка