В npm-репозитории обнаружено одиннадцать вредоносных пакетов: под угрозой разработчики криптовалют и Web3

В npm-репозитории обнаружено одиннадцать вредоносных пакетов: под угрозой разработчики криптовалют и Web3

Открытые репозитории пакетов давно стали неотъемлемой частью современной разработки. Особенно это касается экосистемы блокчейна и Web3, где скорость выпуска продуктов критически важна. Разработчики децентрализованных приложений, платформ DeFi, NFT-маркетплейсов и криптовалютных кошельков активно используют готовые библиотеки из npm - менеджера пакетов для языка JavaScript. Однако именно эта доверчивость превращает цепочку поставок ПО в удобную мишень. Исследователи компании Cyfirma обнаружили масштабную кампанию, в рамках которой злоумышленники разместили в npm одиннадцать подозрительных пакетов. Их общее число скачиваний превысило 2,72 миллиона, что делает атаку одной из крупнейших в своём роде.

Описание

Среди найденных пакетов особое место занимает moralis-sdk - он имитирует легитимный SDK популярной платформы Moralis. На момент анализа этот пакет набрал более 2,7 миллиона установок. Подобное распространение означает, что даже небольшой процент успешных заражений мог привести к компрометации тысяч сред разработки. Остальные десять пакетов тоже маскировались под известные инструменты: ethers-jss, coinbase-wallet-utils, Ganach, Solidty, Stelar-sdk, hardhat-deploy-utils, web3-deploy-helper, defi-sdk-core, ethers-compat и ethereum-dev-utils. Все они использовали тактику typosquatting - названия, максимально похожие на настоящие библиотеки, но с опечатками или незначительными отличиями.

Механизм заражения однотипен: вредоносный код запускается автоматически ещё на этапе установки пакета через npm. Для этого применяются хуки жизненного цикла - скрипты postinstall или preinstall. Пользователь просто добавляет зависимость в проект, а система npm выполняет команду без лишних вопросов. Злоумышленники пользуются этим, чтобы сразу после установки получить доступ к рабочей станции разработчика.

По данным исследования Cyfirma, все пакеты можно разделить на четыре операционных кластера. Первый - это ethers-jss и coinbase-wallet-utils, опубликованные одним и тем же аккаунтом sazuki. ethers-jss действует как троянизированная обёртка вокруг легитимной библиотеки ethers. При создании или восстановлении криптокошелька она перехватывает приватные ключи и мнемонические фразы, а затем отправляет их на управляемый злоумышленником сервер. Кроме того, пакет собирает переменные окружения, файлы конфигурации (hardhat.config.js, .env, secrets.json) и SSH-ключи. coinbase-wallet-utils выполняет разведку: получает имя хоста, имя пользователя, сведения об операционной системе и тоже отправляет их на внешний командный сервер.

Второй кластер - moralis-sdk. Его вредоносная логика сосредоточена в файле postinstall.js, который сильно обфусцирован. При деобфускации выяснилось, что код проверяет наличие определённого маркера на странице YouTube. Если проверка проходит, запускается многоступенчатая цепочка: PowerShell скачивает закодированные данные с Pastefy, затем с GitHub и выполняет их в памяти. Фактически пакет выступает загрузчиком - злоумышленник может в любой момент сменить финальную полезную нагрузку, не обновляя сам npm-пакет. На момент расследования удалённый сервер оказался недоступен, поэтому конечная стадия не была получена.

Третий кластер - пакеты Ganach, Solidty и Stelar-sdk. Они действуют уже почти два года и используют уникальный метод получения командного сервера через смарт-контракты в сети Ethereum. После установки скрипт обращается к определённому смарт-контракту, получает оттуда IP-адрес и порт, затем загружает платформозависимый бинарник (для Windows, Linux или macOS) и запускает его в фоне. Такая схема делает инфраструктуру атаки устойчивой к блокировкам: достаточно изменить запись в блокчейне, и все заражённые машины получат новый адрес.

Четвёртый кластер - пять пакетов от пользователя ethcompat: hardhat-deploy-utils, web3-deploy-helper, defi-sdk-core, ethers-compat и ethereum-dev-utils. Все они опубликованы в один день - 2 мая 2026 года - и в сумме набрали 2236 загрузок. После установки скрипт postinstall.js ищет приватные ключи, мнемонические фразы, переменные окружения с криптовалютными секретами. Собранные данные шифруются алгоритмом AES-256-GCM, а затем встраиваются в поле data транзакции Ethereum. Транзакция отправляется на кошелёк злоумышленника, причём для подписи используется первый же украденный приватный ключ жертвы. Таким образом, жертва сама оплачивает газ и одновременно передаёт свои секреты атакующему.

В ходе анализа в коде некоторых пакетов обнаружены комментарии и имена переменных на русском языке. Это не позволяет однозначно атрибутировать атаку, но указывает на русскоязычных разработчиков вредоносного ПО. Кампания явно финансовая - все усилия направлены на кражу криптовалютных активов и учётных данных, которые можно монетизировать напрямую.

Масштаб случившегося напоминает: даже популярные репозитории с миллионами скачиваний не гарантируют безопасность. Разработчикам Web3 стоит внедрить строгий аудит зависимостей, проверять контрольные суммы пакетов и следить за аномалиями в поведении после установки. Использование блокчейн-инфраструктуры в качестве командного канала и канала эксфильтрации - новый тревожный тренд, который усложняет обнаружение подобных угроз.

Индикаторы компрометации

YARA

Комментарии: 0