8 сентября была обнаружена крупная атака на цепочку поставок программного обеспечения в экосистеме NPM, затронувшая несколько широко используемых библиотек JavaScript. Инцидент впервые привлек внимание общественности, когда Чарльз Гийеме, технический директор Ledger, выпустил предупреждение о том, что учетная запись Node Package Manager доверенного разработчика была скомпрометирована. Первоначальные оценки предполагали, что более миллиарда загрузок были подвержены скрытому вредоносному ПО, предназначенному для кражи криптовалюты. Однако последующие расследования показали, что скомпрометированные пакеты в совокупности представляют более 2,6 миллиарда еженедельных загрузок.

Атака на цепочку поставок затронула более 2 миллиардов
Атака на цепочку поставок затронула более 2 миллиардов
Атака была направлена на учетную запись разработчика, известного как «qix», который поддерживает несколько популярных библиотек JavaScript. К ним относятся chalk, strip-ansi, color-convert и debug, все из которых используются в бесчисленных проектах как на серверной, так и на клиентской стороне. Злоумышленники получили доступ к учетной записи через поддельное электронное письмо службы поддержки и внедрили вредоносные обновления примерно в 18 пакетов. Из-за автоматической установки зависимостей вредоносное ПО быстро распространилось в течение нескольких часов после взлома.
Гийеме объяснил, что вредоносный код был разработан для скрытой замены адресов криптовалютных кошельков во время транзакций. Это подвергало пользователей, которые полагаются на программные кошельки, риску потери средств, если они одобряли транзакции, не замечая, что адрес получателя был изменен.
Вредоносный крипто-клиппер и MetaMask
Исследователи безопасности идентифицировали вредоносное ПО как тип «крипто-клиппера». Оно функционирует, заменяя адреса кошельков на разных этапах транзакции. В случаях, когда кошелек не обнаружен, вредоносное ПО изменяет исходящие данные в децентрализованных приложениях, подключаясь к функциям браузера, таким как fetch и XMLHttpRequest. Это позволяет ему сканировать и изменять адреса в данных приложения.
Если обнаружено расширение кошелька, такое как MetaMask, вредоносное ПО становится более прямым, перехватывая транзакцию до ее подписания. Оно изменяет адрес кошелька в памяти, так что когда пользователь просматривает транзакцию, мошеннический адрес уже установлен. Вредоносное ПО полагается на алгоритм Левенштейна, который генерирует адреса, очень похожие на оригинал. Это сходство снижает вероятность того, что пользователи обнаружат изменение.

Атака на цепочку поставок затронула более 2 миллиардов
Первые признаки атаки
Разработчики впервые столкнулись с признаками атаки, когда системы сборки возвращали неожиданное сообщение об ошибке. Дальнейшее исследование зависимости под названием error-ex выявило обфусцированный код, содержащий подозрительную функцию checkethereumw, которая указывала на нацеливание на кошельки Ethereum. Аналитики позже подтвердили, что вредоносное ПО содержало ссылки на адреса кошельков в нескольких блокчейнах, включая Bitcoin, Ethereum, Solana, Tron, Litecoin и Bitcoin Cash.
Среди затронутых пакетов были одни из наиболее широко используемых в экосистеме JavaScript. Только chalk получает более 300 миллионов еженедельных загрузок, debug — более 350 миллионов, а strip-ansi — более 260 миллионов. В общей сложности скомпрометированные библиотеки загружаются более 2,6 миллиарда раз в неделю, что подчеркивает глубину воздействия на сообщество разработчиков.
Аппаратные и программные кошельки
Хотя многие из зараженных библиотек напрямую не связаны с криптовалютными проектами, их интеграция в цепочки зависимостей означает, что даже несвязанные приложения могли быть подвержены риску. Проекты, которые взаимодействуют с криптовалютными кошельками и децентрализованными приложениями, считаются находящимися на самом высоком уровне риска.
По словам Гийеме, пользователи аппаратных кошельков с функциями четкого подписания остаются в безопасности, потому что такие устройства позволяют им проверять каждую транзакцию перед одобрением. Напротив, пользователи программных кошельков сталкиваются с большим риском и им рекомендуется проявлять крайнюю осторожность, пока зависимости не будут полностью проверены и защищены.
Поиск злоумышленника и украденные средства
Криптовалютные адреса злоумышленника были идентифицированы и активно отслеживаются благодаря прозрачности публичных блокчейнов. Основной адрес Ethereum, связанный с операцией, — 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976, а также несколько других резервных адресов. На момент составления отчета украденные средства не были перемещены. Этот мониторинг предоставляет возможность для постоянного анализа, хотя полный объем украденных активов остается неясным.

Атака на цепочку поставок затронула более 2 миллиардов
JavaScript и роль сообщества
Сообщества JavaScript и web3 быстро отреагировали на инцидент. Вредоносные версии скомпрометированных пакетов в основном были удалены из реестра, но риски остаются для проектов, которые все еще могут полагаться на устаревшие версии в своих lock-файлах. Разработчикам настоятельно рекомендуется проверять свои зависимости, блокировать безопасные версии и переустанавливать чистые сборки, чтобы предотвратить дальнейшее воздействие.
Специалисты по безопасности также рекомендуют разработчикам менять учетные данные, применять двухфакторную аутентификацию для учетных записей, таких как NPM и GitHub, и использовать детерминированные методы установки, такие как npm ci, для поддержания строгого контроля версий. Кроме того, пользователям рекомендуется тщательно проверять все криптовалютные транзакции, особенно если они полагаются на программные кошельки.
Заключительные мысли
Этот инцидент был описан как одно из самых масштабных нарушений, затронувших экосистему NPM. Хотя реакция сообщества была относительно быстрой, атака подчеркивает хрупкость современных цепочек поставок программного обеспечения и риски, создаваемые широкой зависимостью от компонентов с открытым исходным кодом.
Как подчеркнул Гийеме, проверка каждой транзакции перед подписанием остается крайне важной. Нарушение служит напоминанием о том, что даже небольшие библиотеки, глубоко встроенные в инфраструктуру приложений, могут стать значительными векторами атаки при компрометации. Для разработчиков и пользователей постоянная бдительность теперь является критически важной частью поддержания безопасности в экосистемах web3 и разработки программного обеспечения.






