
Как Web3 меняет атаки на цепочки поставок облачного ПО
Вредоносной программе уже не обязательно хранить адрес управляющего сервера в собственном коде. Она может получать его из блокчейна, а злоумышленники — менять инфраструктуру без повторного распространения заражённого пакета. Так публичные сети становятся справочником для атак на разработчиков и корпоративные облака.
Исследователи Palo Alto Networks Unit 42 описали эту эволюцию в исследовании, опубликованном 7 октября 2026 года. Они рассмотрели несколько способов использования Web3 в цепочках заражения, включая кампании ChainDrop и PolinRider.
Почему атакуют зависимости и системы сборки
Компьютер разработчика и система автоматической сборки CI/CD могут хранить облачные ключи, токены сервисных аккаунтов и секреты развёртывания. Заражённая зависимость получает шанс добраться до них ещё при установке или подготовке проекта. Похищенные действующие учётные данные затем позволяют обращаться к ресурсам с правами жертвы.
ChainDrop затронул более 400 npm-пакетов, включая keyv и cacheable-request. Через сценарий preinstall червь запускал скрытый сборщик данных с помощью Bun. Если среды выполнения не было, загрузчик скачивал её из официального репозитория: сам Bun в разобранном образце не был заражён.
Червь искал секреты в файлах и памяти работающего процесса GitHub Actions, включая краткосрочные токены OIDC. Он также добавлял задачи VS Code и команды запуска Claude Code, чтобы вредонос активировался при открытии проекта или начале AI-сеанса. Украденные токены публикации npm помогали ему заражать новые пакеты.
Код ChainDrop относится к линии Shai-Hulud, однако это не устанавливает личность операторов: опубликованный инструментарий могли использовать разные группы. Исследователи отдельно наблюдали смену управляющего домена через одну Ethereum-транзакцию 4 августа 2026 года — без обновления уже установленного вредоноса.
PolinRider охватил npm, модули Go, Packagist и расширения Chrome. Загрузчики скрывались в конфигурациях, настройках автоматизации и файлах, выдаваемых за шрифты. Поэтому опасность могла возникать при открытии рабочего пространства или запуске инструмента разработки, а не только при установке пакета.
Похожая проблема доверия уже проявлялась в истории с вредоносными плагинами OpenClaw: внешне полезное дополнение становилось способом украсть доступы. Но способы запуска и кампании в этих случаях различаются.
Три способа использовать блокчейн
EtherHiding — данные в смарт-контракте
Загрузчик обращается к известному смарт-контракту и читает его состояние. В контракте можно хранить адрес следующего сервера или фрагмент вредоносного кода. Изменив данные, оператор перенаправляет заражённые устройства на новую инфраструктуру.
Название EtherHiding не означает обязательное использование Ethereum: Guardio ещё в 2023 году описала такой механизм в BNB Smart Chain. Само чтение контракта не требует новой транзакции от заражённой машины. При этом постоянный адрес контракта остаётся признаком, который защита может отслеживать в RPC-запросах.
TxDataHiding — данные в транзакциях
Здесь информация находится в полях данных транзакции, а не в хранилище контракта. Загрузчик извлекает и расшифровывает её из истории блокчейна. В зависимости от реализации это может быть адрес инфраструктуры, указатель на другую транзакцию или непосредственно следующая порция вредоносного кода.
В многоцепочечных вариантах одна сеть содержит указатель на данные в другой. Исследователи описали связки TRON, Aptos и BNB Smart Chain с резервными маршрутами получения нагрузки. Уже записанную транзакцию не переписывают: для смены данных оператор публикует новую запись, которую должен найти загрузчик.
NullReceiver — адрес сервера в адресе получателя
Этот механизм обходится без смарт-контракта и отдельного поля с нагрузкой. Загрузчик читает исходящую транзакцию контролируемого атакующими кошелька и восстанавливает IPv4-адрес из адреса получателя. Перевод может иметь нулевую сумму и пустое поле данных. Однако нулевая сумма перевода не означает отсутствия сетевой комиссии.
Метод обнаружили в bianira-ui и fluid-type-ui. Позднее Sonatype описала шесть npm-пакетов с похожей схемой, где из адреса получателя извлекались основной и резервный адреса серверов. Это усложняет поиск явных доменов, но не делает сетевые запросы и дальнейшее выполнение кода невидимыми.
Какие атаки связывают с КНДР
Атрибуция различается от кампании к кампании. Socket связывает PolinRider с северокорейским кластером Contagious Interview / Famous Chollima. Microsoft относит компрометации Axios и Mastra к Sapphire Sleet, также пересекающейся с активностью, которую другие исследователи называют Alluring Pisces.
В Axios злоумышленники добавили зависимость plain-crypto-js, которая загружала троян удалённого доступа. В Mastra после захвата аккаунта сопровождающего вредоносная easy-day-js попала более чем в 140 пакетов. Код запускался при установке, даже если приложение впоследствии не импортировало библиотеку.
В случае arrayref команда безопасности Rust подтвердила добавление зависимости proc-macro1 со скриптом сборки, скачивавшим вредоносную нагрузку. Unit 42 рассматривает этот эпизод в контексте связанных операций, но официальное сообщение Rust не называет автора атаки. Эти случаи нельзя автоматически считать работой одной группы или доказательством применения Web3 в каждом из них.
Что меняется для защиты
Блокировать известные домены и IP по-прежнему полезно, но этого недостаточно, когда загрузчик умеет получать новые адреса. Нужен контроль того, какой процесс обращается к блокчейн-шлюзу, зачем он это делает и что запускает после ответа.
Unit 42 рекомендует проверять изменения конфигураций репозиториев, сценариев установки и автоматизации CI/CD до выполнения кода. В компании без Web3-задач неожиданный блокчейн-трафик инструментов разработки заслуживает расследования. В криптовалютном проекте тот же запрос может быть штатным, поэтому важен контекст.
При подтверждённом заражении удаления пакета недостаточно: необходимо проверить закрепление вредоноса и отозвать доступные ему ключи и токены. Публичный блокчейн здесь служит каналом передачи данных. Первоначальный доступ атакующие получают через программные зависимости и среды разработки.