8 сентября крупная атака на цепочку поставок программного обеспечения поразила экосистему NPM, скомпрометировав ряд широко используемых библиотек JavaScript. Взлом был обнаружен после того, как Charles Guillemet, технический директор Ledger, предупредил, что аккаунт доверенного разработчика в Node Package Manager был взломан. Первоначальные оценки указывали на более чем один миллиард загрузок, однако дальнейший анализ показал, что скомпрометированные пакеты на самом деле обеспечивают более 2.6 миллиарда еженедельных загрузок.

Supply Chain Attack Exposes Over 2 Billion
Supply Chain Attack Exposes Over 2 Billion
Атака была нацелена на аккаунт разработчика под ником «qix», который поддерживает несколько популярных библиотек JavaScript, включая chalk, strip-ansi, color-convert и debug. Эти библиотеки встречаются в бесчисленных проектах, охватывающих как серверную часть, так и фронтенд. Злоумышленники получили доступ через поддельное письмо от техподдержки и внедрили вредоносные обновления примерно в 18 пакетов. Автоматизированная установка зависимостей позволила малвари быстро распространиться в течение нескольких часов.
Guillemet пояснил, что вредоносный код незаметно подменял адреса криптовалютных кошельков во время транзакций. Пользователи, полагающиеся на программные кошельки, рисковали потерять средства, если подтверждали транзакцию, не заметив измененный адрес получателя.
Малварь Crypto Clipper и MetaMask
Специалисты по безопасности классифицировали малварь как «крипто-клиппер». Она подменяет адреса кошельков на различных этапах транзакции. Если кошелек не обнаружен, малварь модифицирует исходящие данные в децентрализованных приложениях, перехватывая функции браузера, такие как fetch и XMLHttpRequest, сканируя и изменяя адреса внутри данных приложения.
Если установлено расширение кошелька, например MetaMask, малварь перехватывает транзакцию до момента подписи. Она изменяет адрес кошелька в памяти, чтобы при проверке транзакции пользователь видел мошеннический адрес. Малварь использует алгоритм Левенштейна для генерации адресов, максимально похожих на оригинальные, что делает подмену сложнее для обнаружения.

Supply Chain Attack Exposes Over 2 Billion
Первые признаки атаки
Разработчики впервые заметили атаку, когда системы сборки начали выдавать неожиданные сообщения об ошибках. Проверка зависимости под названием error-ex выявила обфусцированный код, содержащий подозрительную функцию с названием checkethereumw, что указывало на нацеленность на Ethereum-кошельки. Аналитики подтвердили, что малварь содержала ссылки на адреса кошельков в нескольких блокчейнах, включая Bitcoin, Ethereum, Solana, Tron, Litecoin и Bitcoin Cash.
Среди затронутых пакетов оказались одни из самых популярных в экосистеме JavaScript. Chalk получает более 300 миллионов еженедельных загрузок, debug — более 350 миллионов, а strip-ansi — более 260 миллионов. В совокупности скомпрометированные библиотеки насчитывают более 2.6 миллиарда загрузок каждую неделю, что демонстрирует масштаб воздействия на сообщество разработчиков.
Аппаратные против программных кошельков
Многие из зараженных библиотек напрямую не связаны с криптовалютными проектами, но их интеграция в цепочки зависимостей означает, что даже несвязанные приложения могли быть скомпрометированы. Проекты, взаимодействующие с криптовалютными кошельками и децентрализованными приложениями, подвергаются наибольшему риску.
Guillemet отметил, что пользователи аппаратных кошельков с функцией clear-signing остаются в безопасности, так как эти устройства позволяют верифицировать каждую транзакцию перед подтверждением. Пользователи программных кошельков подвергаются большему риску и должны проявлять предельную осторожность, пока зависимости не будут полностью проверены и защищены.
Поиск злоумышленника и украденные средства
Криптовалютные адреса злоумышленника были идентифицированы и активно отслеживаются через публичные блокчейн-эксплореры. Основной Ethereum-адрес, связанный с операцией — 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976, наряду с несколькими резервными адресами. На момент написания отчета украденные средства не были перемещены. Этот мониторинг позволяет проводить дальнейший анализ, хотя полный объем украденных активов остается неясным.

Supply Chain Attack Exposes Over 2 Billion
JavaScript и роль сообщества
Сообщества JavaScript и web3 оперативно отреагировали, чтобы локализовать инцидент. Вредоносные версии скомпрометированных пакетов были в основном удалены из реестра, но риски остаются для проектов, которые все еще могут полагаться на устаревшие версии в своих lock-файлах. Разработчикам настоятельно рекомендуется провести аудит своих зависимостей, зафиксировать безопасные версии и выполнить переустановку чистых сборок, чтобы предотвратить дальнейшую угрозу.
Специалисты по безопасности рекомендуют разработчикам сменить учетные данные, внедрить двухфакторную аутентификацию для аккаунтов в NPM и GitHub, а также использовать детерминированные методы установки, такие как npm ci, для поддержания строгого контроля версий. Пользователям следует тщательно проверять все криптовалютные транзакции, особенно при использовании программных кошельков.
Заключение
Этот инцидент считается одним из самых масштабных взломов экосистемы NPM. Несмотря на то, что реакция сообщества была относительно быстрой, атака обнажила хрупкость современных цепочек поставок ПО и риски, создаваемые повсеместной зависимостью от open-source компонентов.
Как подчеркнул Guillemet, проверка каждой транзакции перед подписью остается критически важной. Взлом доказывает, что даже небольшие библиотеки, глубоко встроенные в инфраструктуру приложения, могут стать серьезными векторами атаки при компрометации. Как для разработчиков, так и для пользователей, постоянная бдительность теперь является неотъемлемой частью обеспечения безопасности в экосистемах web3 и разработки ПО.



