Новая атака через NPM: как хакеры скомпрометировали библиотеки ENS и криптокошельков

«Цепочка поставок — самое уязвимое звено в современной разработке. Один компрометированный пакет может уничтожить миллионы приложений.»
— Брюс Шнайер, эксперт по кибербезопасности

В ноябре 2025 года криптоиндустрия столкнулась с одной из самых масштабных цепочек компрометации: хакеры взломали популярные пакеты в репозитории NPM (Node Package Manager) и внедрили вредоносный код в библиотеки, используемые Ethereum Name Service (ENS), MetaMask, Phantom и десятками других криптопроектов. Атака затронула более 140 000 репозиториев на GitHub и угрожает тысячам веб-приложений по всему миру.

🔍 Как всё началось: поддельные пакеты и скомпрометированные аккаунты

Исследователи из Sonatype и Snyk обнаружили, что атака развивалась по двум направлениям:

  1. Поддельные пакеты — хакеры загрузили в NPM вредоносные копии популярных библиотек, таких как postcss, cross-fetch и web3-eth-abi, с именами, отличающимися на один символ (например, postcs вместо postcss).
  2. Взлом легитимных аккаунтов — злоумышленники получили доступ к учётным записям мейнтейнеров и обновили реальные пакеты вредоносным кодом.

Вредоносный скрипт срабатывал при запуске приложения и выполнял следующие действия:

  • Сканировал DOM на наличие интерфейсов MetaMask, Phantom и других кошельков.
  • Перехватывал подпись транзакций и заменял адрес получателя на кошелёк хакера.
  • Отправлял seed-фразы и приватные ключи на сервер управления через зашифрованный канал.

Особую опасность представлял факт, что код был обфусцирован и не вызывал подозрений при поверхностном аудите. Только глубокий анализ выявлял сетевые вызовы к доменам вроде cloudflare[.]workers[.]dev/api.

🌐 Затронутые проекты: от ENS до Uniswap

Согласно отчёту ReversingLabs, в зону риска попали:

  • Ethereum Name Service (ENS) — через зависимость ethr.
  • MetaMask — через SDK для разработчиков.
  • Phantom и Trust Wallet — через совместимые библиотеки для DApp.
  • Uniswap и Aave — через фронтенд-зависимости.
  • 1inch, OpenSea, Rainbow — через общие компоненты.

Хотя основные продукты не пострадали напрямую, десятки форков, агрегаторов и сторонних DApp уже содержали вредоносный код. Один из скомпрометированных пакетов, web3-wallet-core, имел более 1,2 млн недельных загрузок.

🛡️ Как хакеры обошли защиту NPM

NPM ввёл двухфакторную аутентификацию (2FA) для мейнтейнеров в 2023 году, но многие разработчики до сих пор не активировали её. Кроме того, злоумышленники использовали:

  • Фишинг через GitHub — поддельные уведомления о «нарушении безопасности» в репозиториях.
  • Компрометацию локальных машин — через вредоносные скрипты в других зависимостях.
  • Социальную инженерию — обман мейнтейнеров на передачу прав на пакеты.

Как заявил представитель Sonatype: «Система NPM построена на доверии. Один скомпрометированный разработчик — и весь экосистема под угрозой.»

✅ Что делать разработчикам и пользователям

Для разработчиков:

  • Проверяйте все зависимости через npm audit, snyk test или socket.dev.
  • Включите 2FA в аккаунте NPM и GitHub.
  • Используйте lock-файлы (package-lock.json) и закрепляйте хэши версий.
  • Минимизируйте зависимости — каждый пакет — потенциальная угроза.
  • Регулярно обновляйте зависимости, но только после проверки changelog.

Для пользователей:

  • Никогда не используйте кошелёк на сомнительных сайтах — даже если они выглядят легитимно.
  • Отзывайте разрешения через Revoke.cash после каждого взаимодействия с DApp.
  • Используйте отдельный кошелёк для экспериментов с новыми проектами.
  • Включите предупреждения о фишинге в MetaMask и других кошельках.

🔮 Будущее: от реакции — к проактивной защите

Сообщество уже работает над решениями:

  • Socket.dev — платформа для анализа поведения пакетов (сетевые вызовы, файловые операции).
  • Attestation Framework от OpenSSF — цифровые подписи для проверки подлинности пакетов.
  • SBOM (Software Bill of Materials) — обязательный перечень зависимостей для всех проектов.

Кроме того, NPM анонсировал план по внедрению обязательной 2FA для всех публичных пакетов к концу 2026 года.

✅ Заключение: безопасность начинается с одного пакета

Атака на NPM — не просто технический инцидент. Это напоминание: в мире, где приложение зависит от сотен внешних библиотек, единственная точка отказа — доверие. Пока разработчики не начнут проверять каждую зависимость как потенциальную угрозу, такие атаки будут повторяться — всё чаще и всё масштабнее.

Как сказал Виталик Бутерин: «Безопасность в Web3 — это не функция. Это культура. И она начинается с первого npm install

Потому что в цепочке поставок слабейшее звено — всегда человек.

25.11.2025, 02:24