
В начале сентября 2025 года мир JavaScript столкнулся с одной из самых опасных атак последних лет. Злоумышленники получили доступ к учетной записи популярного разработчика и загрузили на сервер NPM новые версии базовых пакетов, внутрь которых был встроен вредоносный код. Эти пакеты используются миллиардами раз каждую неделю, и атака могла привести к масштабной краже средств у пользователей криптовалютных сервисов.
К счастью, из-за ошибок хакеров и быстрой реакции сообщества ущерб оказался минимальным. Редакция Quickex восстановила хронологию событий и разобралась, почему все закончилось относительно безболезненно.
Отслеживайте, как курс биткоина реагирует на рыночные потрясения, с Quickex.
Как развивалась атака
Первым о происходящем вечером 8 сентября сообщил технический директор компании Ledger Шарль Гийоме. Он предупредил, что учетная запись известного разработчика была взломана, а на NPM загружены зараженные версии таких инструментов, как chalk, debug, ansi-styles и strip-ansi. Эти пакеты входят в основу большинства веб-приложений, поэтому заражение грозило ударить по всей экосистеме.
Позже выяснилось, что доступ к аккаунту хакеры получили через фишинговое письмо. Оно имитировало сообщение от службы поддержки NPM и вело на поддельный сайт входа.
NPM (Node Package Manager) — крупнейший каталог пакетов для JavaScript, в котором разработчики публикуют и скачивают готовые модули кода. Например, chalk нужен для цветного форматирования текста, debug для логирования, ansi-styles и strip-ansi для работы с консольными символами. Когда злоумышленники выпустили новые версии, эти релизы автоматически начали устанавливаться в проекты, если у разработчиков не были закреплены старые редакции.
На фоне появления новостей об атаке криптопроекты бросились публиковать в своих социальных сетях заявления о том, что инцидент не затронул их.
Как работал вредоносный код
Встроенная программа действовала по принципу криптоклиппера — это разновидность атак, при которой меняется адрес кошелька в транзакции. Пользователь думает, что переводит средства на свой счет или знакомому, а на самом деле деньги уходят на адрес атакующего.
Криптоблогер StarPlatinum подробно разобрал механику. По его словам, код имел два режима.
- В «пассивном» он заменял адреса прямо в интерфейсе приложений.
- В «активном» — перехватывал транзакции перед подписанием и менял реквизиты назначения.
Для маскировки использовался алгоритм Левенштейна, который подбирал максимально похожие строки: совпадали первые и последние символы адреса, что делало подмену почти незаметной.
Он также привел конкретные счета, на которые должны были уходить украденные средства: основной 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976 и несколько резервных адресов.
По состоянию на момент публикации блогера переводы на эти кошельки были зафиксированы, но средства оставались без движения.
Разработчики впервые узнали о проблеме, когда начали падать автоматические сборки. В логах появлялись необычные ошибки вроде «fetch is not defined». Проверка показала наличие обфусцированного кода и подозрительных функций, связанных с Ethereum и Solana.
Почему ущерб оказался минимальным
Хотя идея атаки выглядела опасной, на практике она не сработала. Код оказался слишком нестабильным и ломал рабочие процессы. Это позволило сообществу быстро заметить аномалии и заблокировать зараженные версии.
Чуть позже Шарль Гийоме уточнил, что атака фактически провалилась: пострадавших оказалось крайне мало. По его словам, вредоносный код был нацелен на криптооперации и подменял адреса прямо в сетевых ответах, но из-за ошибок разработчиков-взломщиков он срабатывал непредсказуемо.
Аналитическая компания Arkham подсчитала, что злоумышленники смогли похитить всего $159. Эти деньги попали на кошельки, которые фигурировали в отчетах Ledger. Сумма несоизмерима с масштабом потенциального риска, но случай показал, насколько близко экосистема подошла к серьезному кризису.

Баланс криптокошелька мошенников, по данным Arkham
Роль аппаратных кошельков
Наибольшему риску подверглись владельцы программных кошельков, которые подписывают транзакции прямо в браузере. Там подмена адреса проходила практически незаметно. Совсем иначе ситуация выглядела у тех, кто использовал аппаратные устройства для хранения ключей.
Аппаратный кошелек показывает пользователю все данные операции на собственном экране, и подтверждение происходит физической кнопкой. Даже если приложение заменило адрес, устройство отобразит настоящий получатель. Внимательный пользователь сразу заметит несоответствие и отменит подписание.
По словам Гийоме, именно такие функции, как Clear Signing и встроенные проверки транзакций, делают аппаратные решения ключевым барьером против подобных атак.
Урок криптосообщества
Эта история стала напоминанием о том, что уязвимость цепочки поставок остается главным риском для индустрии. Один взлом учетной записи разработчика способен поставить под удар миллионы пользователей по всему миру.
Из всей ситуации можно выделить три основных урока:
- Разработчики должны закреплять версии зависимостей, использовать воспроизводимые сборки и тщательно проверять обновления базовых инструментов.
- Владельцам криптовалют стоит хранить активы в аппаратных кошельках и внимательно сверять адреса на экране устройства перед каждой подписью.
- Аккаунты разработчиков в экосистеме NPM необходимо защищать ключами безопасности и многофакторной аутентификацией, чтобы фишинг не приводил к компрометации.
Итог
Атака на NPM показала, насколько хрупкой может оказаться вся инфраструктура: миллиарды установок зависели от одного аккаунта. В этот раз ущерб ограничился $159, но в следующий раз все может быть иначе.
Удача и ошибки злоумышленников не заменят системной безопасности. Именно поэтому и разработчики, и пользователи должны предпринимать шаги, чтобы новые атаки не застали их врасплох.
Самый выгодный курс обмена криптовалюты ищите на Quickex.