Авторите на заплахи все по-често превръщат публичните блокчейн мрежи в слой за командване и управление (C2) за зловреден софтуер във веригата за доставки на софтуер, което им помага да ротират инфраструктурата си, без да променят злонамерения код, който вече се изпълнява в системите на разработчиците.

Методът дава на киберпрестъпниците устойчив начин да насочват инфектираните пакети към нови сървъри за кражба на данни, докато прави традиционните списъци за блокиране на домейни по-малко ефективни. Рискът е особено сериозен за организации, ориентирани към облачните технологии.

Компрометираните отворени пакети с отворен код могат да се изпълняват в компютрите на разработчиците и в CI/CD конвейерите, където могат да получат достъп до временни токени за облачна самоличност, тайни за внедряване (deployment secrets), ключове за сервизни акаунти, идентификационни данни за GitHub и други високостойностни данни.

Неотдавнашно разследване на npm червея ChainDrop показа как компрометираните доверени пътища за публикуване могат да превърнат обикновените актуализации на зависимости и настройки на проекти в маршрут за кражба на идентификационни данни.

Анализатори от Unit 42 идентифицираха зловредния софтуер ChainDrop като саморазпространяващ се npm червей, който е инфектирал над 400 пакета.

Изследователите установиха, че той е събирал облачни идентификационни данни, npm и GitHub токени, SSH ключове, Kubernetes токени, Terraform файлове за състоянието (state files), Vault токени и тайни, съхранявани в средите на разработчиците.

Той също така е търсил в паметта на процесите на GitHub Actions runner за краткотрайни OpenID Connect (OIDC) токени и тайни на runner-а.

Хакерите използват Web3 и блокчейн C2

При нормална операция със зловреден софтуер, атакуващите кодират твърдо (hardcode) домейн или IP адрес в зловредния код. Това създава ясна цел за защитниците: екипите по сигурност могат да блокират адреса, регистраторите могат да прекратят домейна, а платформите за пакети могат да сканират кода за него.

Блокчейн C2 променя този модел. Вместо да съдържа фиксиран C2 адрес, зловредният код прави заявка към интелигентен договор (smart contract) или блокчейн транзакция и извлича текущата дестинация по време на изпълнение (runtime).

Attack flow (Source - Unit42)
Поток на атаката (Източник – Unit42)

ChainDrop използва този подход чрез Ethereum смарт договор. От Unit 42 заявиха, че червеят е изпращал заявки към договора, за да получи адреса, използван за кражба на данни, след което е преместил своя C2 от npm-cache[.]com към awqhnjewqjkl[.]icu чрез една-единствена Ethereum транзакция.

Промяната не е изисквала от атакуващите да публикуват отново пакетите или да изпращат нова версия на зловредния код към жертвите. Тази техника обикновено се нарича EtherHiding.

Това не означава, че самият блокчейн е злонамерен; вместо това киберпрестъпниците злоупотребяват с неговия публичен и децентрализиран дизайн като указател с адреси, хранилище за злонамерен код или услуга за мъртва точка (dead-drop).

Предишен доклад за разпространение на зловреден софтуер чрез EtherHiding описа как интелигентните договори могат да връщат кодиран JavaScript зловреден код и да позволяват на операторите да променят доставяното съдържание, без да модифицират компрометирания уебсайт.

ChainDrop се насочва към работните процеси за разработка

Инфекцията с ChainDrop започва с променен npm пакет, съдържащ команда preinstall. Тази команда стартира setup.mjs, който изтегля легитимната среда за изпълнение Bun JavaScript, ако тя липсва, и я използва за стартиране на обфускиран зловреден код. Bun не е бил компрометиран; авторите на заплахата просто са използвали легитимната среда за изпълнение, за да изпълнят своя код.

След като се активира, зловредният софтуер проверява локални файлове, променливи на средата и облачни услуги за метаданни за идентификационни данни. Той също така проверява стартираните процеси за компилация (build processes) – важен детайл, тъй като CI/CD системите често използват временни идентификационни данни, които не остават на диска.

Тези токени все пак могат да дадат на атакуващите директен път към облачни API, среди за внедряване или системи за изходен код, докато са валидни.

ChainDrop също така установи персистентност (постоянно присъствие) чрез инструменти за разработчици. Той записа задача във VS Code, която може да се изпълнява при отваряне на папка, и добави hook за Claude Code SessionStart.

Това означава, че разработчик би могъл да задейства зловредния софтуер просто чрез отваряне на проект или стартиране на сесия за кодиране с изкуствен интелект. Същият риск се появява и при излагането на конфигурациите на инструментите за разработка, докладвано около по-широката кампания ChainDrop, където доверени локални проектни файлове са се превърнали в път за изпълнение.

NullReceiver IPv4 address resolution extraction workflow (Source - Unit42)
Работен процес за извличане на IPv4 адреси от NullReceiver (Източник – Unit42)

Втора кампания, проследявана под името PolinRider, показва, че този модел излиза извън рамките на npm. Изследователите свързаха кампанията с активност, свързана със Северна Корея, и откриха злонамерени зареждащи модули (loaders) в npm, Packagist, Go модули и разширения за Chrome.

Зареждащите модули са използвали блокчейн и публични RPC услуги, свързани с TRON, Aptos и BNB Smart Chain, за да получат криптиран последващ зловреден код.

Кампанията е скрила своя кодвъв файлове, които са изглеждали нормални за много разработчици, включително vite.config.js, фалшиви .woff2 шрифтови файлове и .vscode/tasks.json.

Този подход е от значение, тъй като много инструменти за сканиране на зависимости се фокусират върху манифестите на пакетите и lock-файловете, а не върху настройките на редактора, автоматизацията на работното пространство или конфигурацията на хранилището.

Предишната кампания със скрит JavaScript зареждащ модул също показа как PolinRider използва такива файлове за доставяне на DEV#POPPER и OmniStealer зловреден код.

За защитниците блокчейн трафикът от build runners и крайни точки на разработчици трябва да се tretira като съществен сигнал, когато организацията няма бизнес нужда от Web3.

Екипите трябва да прегледат скриптовете за жизнения цикъл на пакетите, да инспектират конфигурационните файлове на хранилищата, да изолират CI runners, да ограничат изходящите връзки от системите за компилация и да ротират всички идентификационни данни, достъпни от засегнат хост.

Индикатори за компрометиране (IoCs):-

Тип IoCИндикаторКонтекст на откриване
Ethereum смарт договор0xE1f2395ee43e45A1556EC6438a88c31B83493103Договор за разрешаване на ChainDrop C2, запитван чрез Ethereum RPC услуги
Ethereum транзакция0xc55920f1bd0531b6738153068a666c080ddded47e6256f1fd980d51c0b507c91Транзакция, използвана за ротация на C2 домейна на ChainDrop
Ethereum портфейл0x55F9780ef31cDПортфейл, докладван като внедрил договора за C2 resolver
C2 домейнnpm-cache[.]comПредишна активна крайна точка за извличане на данни на ChainDrop
C2 домейнpypi-get[.]comДомейн, съхранен в оригиналния списък на договора за resolver
C2 домейнjs-mirror[.]comДомейн, съхранен в оригиналния списък на договора за resolver
C2 домейнawqhnjewqjkl[.]icuРотиран C2 домейн на ChainDrop, наблюдаван след Ethereum транзакцията
Файлов артефакт.claude/math_init.jsОбфускиран JavaScript зловреден код на ChainDrop
Файлов артефакт.claude/settings.jsonКонфигурация за персистентност чрез Claude Code SessionStart
Файлов артефакт.claude/setup.mjsКопие на капкомер (dropper), използвано във веригата за персистентност
Файлов артефакт.vscode/setup.mjsКопие на капкомер (dropper), свързано с персистентност във VS Code
Файлов артефакт.vscode/tasks.jsonЗадача във VS Code, конфигурирана да се изпълнява при отваряне на папка с проект
Файлов артефакт.github/workflows/codeql_analysis.ymlЗлонамерен шаблон за работен процес, използван за сериализиране на тайни от GitHub
Стрингов маркерthebeautifulmarchoftimeРезервен маркер в GitHub историята на комитите за C2 резолюция
Стрингов маркерIfYouBlockThisAPIKeyItWillCrashTheLiveProductionServersOfAllThirdPartyClientsМаркер, използван в съобщенията при комит, съдържащи откраднати токени

Забележка: IP адресите и домейните са умишлено обезвредени (напр. [.]), за да се предотврати случайно разрешаване или хипервръзки. Възстановете ги само в рамките на контролирани платформи за анализ на заплахи като MISP, VirusTotal или вашата SIEM система.