
Представьте, что вы приходите в ресторан и пока заказываете стейк, официант незаметно подменяет ваш кошелек на точную копию — такую же по весу, цвету, даже царапины те же. Вы платите, уходите и только через неделю понимаете, что вместо денег в кошельке лежат резаные газеты. Примерно это произошло с экосистемой JavaScript в сентябре 2023 года.
Как один фишинговый email остановил сборки пол-интернета
Все началось с письма, которое получил Джош Джунон — разработчик с репутацией, создатель популярных npm-пакетов. Письмо выглядело как официальное уведомление от поддержки npm: «Обновите двухфакторную аутентификацию, иначе аккаунт будет заблокирован». Джош перешел по ссылке — и в этот момент хакеры получили ключи от королевства.
Через несколько часов в пакеты, которые скачивали миллиарды раз, просочился троян. Но это был не обычный вирус — это была хирургически точная операция по перехвату криптовалютных транзакций.
JavaScript-троян, который читает ваши мысли
Вредоносный код работал по схеме спецслужб. Он не взламывал кошельки — он менял реальность вокруг них.
Когда вы подписывали транзакцию в MetaMask или другом кошельке, троян в последнюю миллисекунду подменял адрес получателя. Вы видели правильный адрес в интерфейсе, но блокчейн получал совершенно другие данные.
Хакеры использовали алгоритм Левенштейна — тот самый, что ищет опечатки в поисковых запросах — чтобы подбирать адреса, максимально похожие на настоящие.
Если вы отправляли деньги на 0x742d35Cc6634C0532925a3b844Bc454e4438f44e, троян мог незаметно заменить его на 0x742d35Cc6634C0532925a3b844Bc454e4438f44f — разница в один символ, который почти неразличим человеческим глазом.
Почему это касается даже тех, кто не пишет код
Представьте цепочку: вы используете криптокошелек → кошелек использует библиотеку ethers.js → ethers.js зависит от пакета Джоша → пакет заражен. Ваш кошелек никогда не взламывали — просто кто-то подменил дорожный указатель на пути вашей транзакции.
Особенность атаки в том, что она не взламывает приватные ключи. Она требует вашего подтверждения — но делает это в слепую. Как мошенник, который направляет вашу руку при подписании документов.
Спасение пришло откуда не ждали
Атаку обнаружили случайно. Система сборки одного из проектов сломалась из-за устаревшей версии Node.js. Разработчики полезли в логи и увидели странную ошибку — попытку вызова функции fetch, которой в старой версии не существовало.
Оказалось, троян пытался отправить на сервер хакеров данные украденных кошельков — и падал на устаревшей платформе. Ирония в том, что плохая практика (не обновлять зависимости) спасла от крупного взлома.
Что это значит для бизнеса в 2025 году
-
Цепочки поставок стали новым фронтом атак
Хакеры перестали взламывать железные двери — они стали подкупать архитекторов. Одна уязвимость в популярной библиотеке может компрометировать тысячи проектов. -
Человеческий фактор остается слабым звеном
Самые сложные системы взламываются через простое письмо с просьбой «обновить пароль». Социальная инженерия стала точной наукой.
Как защищаться, когда доверять нельзя никому
-
Аппаратные кошельки — не панацея, но серьезный барьер. Они показывают адрес получателя на собственном экране, минуя браузер.
-
Ручная проверка каждого символа — скучно, но необходимо. Особенно первых и последних 4 символов адреса.
-
Доверяй, но проверяй зависимости — инструменты вроде npm audit и Snyk должны быть в пайплайне каждого проекта.
-
Человеческий аудит — иногда нужно просто читать код, который вы добавляете в проект.
Что делать если уже нарвался на фишинг и крипты на кошельке нет?
Свяжитесь со службой поддержки биржи, если средства ушли на нее. Иногда они могут заморозить счет мошенника. Если криптовалюту вернуть не удалось, обратитесь к КоинКит с подробным описанием инцидента - наша команда проконсультирует вас, соберет все необходимы данные и выявитпреступника.
Финал с открытым концом
Ущерб от этой атаки оценили всего в $50 — но только потому, что ее быстро обнаружили. Однако это простой базовый фишинг, а компания — многомиллиардное предприятие по поставкам ПО по всему миру.