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

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


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

19892Почему 20 000 промышленных устройств по всему миру оказались под угрозой взлома? 19891Зачем египетская мумия «проглотила» «Илиаду»? 19890Как ИИ сломал правила кибербезопасности и что с этим делать 19889Комета и метеорит нарисовали букву X над чешским замком 19888Почему обновление ASP.NET Core до версии 10.0.7 может не спасти вас от взлома? 19887Как фбр читало удалённые сообщения Signal: что Apple исправила и почему это важно? 19886UNC6692 охотится на топ-менеджеров через Microsoft Teams 19885Токсичные связки: как разрешения между приложениями превращаются в дыры в безопасности 19884Зачем отправить гитару на луну: Крис Хэдфилд о миссии «Артемида-2» и смысле космических... 19883Почему AMOC ближе к краху, чем мы думали? 19882Тёмное пятно на утопия Планитиа: загадка Марса, которую не могут разгадать полвека 19881Как дыра в заброшенном Python-sandbox от Cohere AI открывает путь к рут-привилегиям? 19880Как TeamPCP взломала Checkmarx и превратила её инструменты в оружие против разработчиков? 19879Кто такие The Gentlemen и почему их ботнет из 1570 жертв остался незамеченным?
Ссылка