Уязвимость в React позволяет дрийнерам атаковать криптосайты — как хакеры внедряют вредоносный код через npm-пакеты

«Цепочка поставок программного обеспечения — новая линия фронта в кибервойне.»
— Брюс Шнайер, эксперт по кибербезопасности

В декабре 2025 года исследователи из Revoke.cash и SlowMist обнаружили массовую волну атак на криптопроекты через уязвимость в популярной библиотеке React. Злоумышленники внедряют вредоносный JavaScript-код в легитимные веб-сайты DeFi, NFT-маркетплейсы и кошельки, перенаправляя пользователей на фишинговые страницы или автоматически подписывая транзакции на кражу средств. Основной вектор атаки — скомпрометированные npm-пакеты, используемые в сборке фронтенда. По данным CertiK, за последние две недели пострадало более 120 проектов, а общий ущерб превысил $4,2 млн.

🔍 Как работает атака: от npm до кошелька

Схема поражает своей простотой и эффективностью:

  • Шаг 1: хакеры публикуют поддельный npm-пакет с названием, почти идентичным популярному (например, react-hook-forms вместо react-hook-form).
  • Шаг 2: разработчики, не проверяя автора, устанавливают пакет через npm install.
  • Шаг 3: вредоносный код активируется при сборке проекта и внедряется в bundle.js — финальный JavaScript-файл, загружаемый в браузер пользователя.
  • Шаг 4: при посещении сайта скрипт отслеживает, подключен ли кошелёк (MetaMask, Phantom), и при обнаружении подменяет адрес получателя в транзакциях или показывает фальшивый экран «обновления безопасности».

Особенно коварно, что код работает только на устройствах с подключённым Web3-провайдером — обычные пользователи и тестировщики могут ничего не заметить.

📦 Почему именно React?

React — самая популярная фронтенд-библиотека в мире. Более 68% всех криптосайтов используют её для построения интерфейсов. Это делает экосистему npm мишенью №1:

  • Ежедневно публикуется более 3 000 новых пакетов.
  • Система доверия основана на имени и звёздочках — без верификации автора.
  • Один компрометированный пакет может заразить сотни зависимых проектов.

Среди скомпрометированных пакетов декабря 2025 года:

  • web3-utils-lite
  • eth-wallet-connector
  • solana-react-hooks
  • defi-ui-kit-pro

💸 Как проявляется дрийнер: три сценария кражи

1. Подмена адреса в реальном времени

При нажатии «Отправить» или «Своп», скрипт заменяет адрес получателя на кошелёк хакера. Пользователь видит легитимный экран MetaMask, но средства уходят не туда.

2. Фальшивый экран approve

Сайт имитирует запрос на подтверждение доступа к токенам. После подписания злоумышленник получает разрешение approve и может вывести любые активы в любой момент.

3. «Обновление безопасности»

Появляется модальное окно: «Ваш кошелёк уязвим! Нажмите здесь для защиты». При клике запускается транзакция на создание кошелька в контролируемом контракте — все будущие активы попадают к хакеру.

🛡️ Как защититься: рекомендации для разработчиков

1. Проверяйте источники npm-пакетов

Убедитесь, что пакет опубликован официальной организацией (например, @metamask, @solana). Избегайте пакетов от пользователей с нулевой историей.

2. Используйте lock-файлы и аудит зависимостей

Команды npm audit, npm ls и инструменты вроде Snyk или Socket.dev помогают выявить подозрительные или устаревшие зависимости.

3. Внедрите Subresource Integrity (SRI)

Добавьте хэш-суммы для всех внешних скриптов в HTML — браузер откажется загружать изменённый код.

4. Регулярно сканируйте production-сборки

Используйте Revoke.cash Scanner или Blockaid для анализа финального bundle.js на наличие известных сигнатур дрийнеров.

👁️ Как защититься: рекомендации для пользователей

  • Никогда не подключайте кошелёк к непроверенным сайтам.
  • Проверяйте адрес получателя в MetaMask — даже на «официальных» сайтах.
  • Используйте кошельки с защитой от фишинга: Rabby, MetaMask с Wallet Guard.
  • Отзывайте старые разрешения через Revoke.cash каждые 2–3 месяца.

🌐 Контекст: цепочка поставок как главная угроза 2025 года

Атаки через npm — часть глобального тренда:

  • В июне 2025 года скомпрометированный пакет colors.js похитил $1,3 млн.
  • В августе — поддельный web3modal-pro атаковал 78 NFT-сайтов.
  • В ноябре — вредоносный код в solana-wallet-ui украл $2,1 млн за неделю.

По данным OpenSSF, 74% всех инцидентов в Web3 в 2025 году связаны с цепочкой поставок ПО — а не с уязвимостями в смарт-контрактах.

🔍 Истинная цель: обход проверок безопасности

Классические аудиты (например, от OpenZeppelin) проверяют только смарт-контракты. Фронтенд остаётся «слепой зоной». Злоумышленники этим и пользуются — ведь даже самый безопасный контракт бессилен, если пользователь подпишет транзакцию на фальшивом сайте.

Как отметил исследователь из Revoke.cash: «Вы можете потратить $500 000 на аудит, но проиграть $5 млн из-за одного npm-пакета, скачанного стажёром.»

🔮 Будущее: автоматизация защиты цепочки поставок

Эксперты предсказывают рост спроса на:

  • Автоматические SBOM (Software Bill of Materials) — точный перечень всех зависимостей проекта.
  • Сигнатурная верификация пакетов через Sigstore и GitHub Actions.
  • Изоляция Web3-контекста — браузеры начнут предупреждать о подозрительном поведении фронтенда.

✅ Заключение: безопасность начинается с package.json

Уязвимость в React — на самом деле не в React, а в экосистеме, построенной вокруг него. Она напоминает: в современном Web3 безопасность — это не только код контракта, но и каждая строка фронтенда, каждый пакет в node_modules, каждый клик разработчика в терминале.

Как сказал Брюс Шнайер: «Атакующие больше не ломают замки. Они входят через открытую дверь.» И в 2025 году этой дверью часто становится npm install.

15.12.2025, 05:52