2 июня исследователи поймали неприятную картину: больше 30 популярных NPM-пакетов Red Hat оказались заражены. Эти пакеты разработчики скачивают свыше 116 000 раз в неделю. Вредоносный код тихо живёт в зависимостях, которые собирают DApp-интерфейсы: ворует приватные ключи, SSH-данные и токены GitHub. Уже найдено более 300 GitHub-репозиториев со слитыми учётными данными, и атака продолжается. Это не взлом биржи. Это защита web3 кошелька от угрозы, которую ты в интерфейсе просто не увидишь.
Параллельно. DeFi-проект TesseraDAO. Хакер не ломал смарт-контракт в привычном смысле. Он воспользовался уязвимостью и напечатал 99 миллионов токенов TSR. Тут же обменял их на 2,5 миллиона USDT. Цена актива рухнула на 99%. Весь процесс занял минуты. Инвесторы ничего не успели, потому что и нечего было успевать: деньги ушли на уровне архитектуры протокола.

Почему обычный аудит DApp работает не так, как ты думаешь: защита web3 кошелька на практике
Большинство пользователей проверяют одно: есть ли у сайта https. Это как осмотреть замок на двери, когда фундамент дома уже сгнил. Supply-chain атака заражает не сам DApp, а библиотеки, из которых он собран. Ты заходишь на легитимный сервис. А внутри его кода сидит NPM-пакет, который перехватывает данные ещё до того, как транзакция уходит в блокчейн.
Главный вопрос аудита звучит не «знаю ли я этот сайт», а «знаю ли я, какой код прямо сейчас крутится в моём браузере». Для обычного пользователя простого ответа нет. Но есть практические шаги, которые убирают большую часть риска. Пошагово их и разберём.
Первое, что нужно открыть, это список активных подключений кошелька. В MetaMask нажми на иконку кошелька, открой меню и выбери «Connected Sites». Откроется список. В любом EVM-совместимом кошельке есть аналог. Каждый сайт, которому ты когда-то дал разрешение, остаётся там навсегда, пока не отзовёшь руками. Как правильно отзывать аппрувы в DeFi это отдельная механика, которую игнорируют до первого инцидента.
Аудит аппрувов: три инструмента, которые реально работают
Revoke.cash. Агрегатор активных разрешений по EVM-сетям. Подключаешь кошелёк, выбираешь сеть, видишь полный список контрактов, которым ты когда-либо нажал approve. Совет: первый раз большинство людей находят там сервисы, которыми не пользовались год. Каждый забытый аппрув это потенциальный вектор атаки, если контракт окажется скомпрометирован позже.
DeBank работает похоже, но показывает ещё и балансы по протоколам. Удобно, чтобы быстро понять, где реально лежат активы. Etherscan Token Approvals, если не доверяешь агрегаторам, заходит напрямую в Ethereum через блокчейн-эксплорер.
Принцип простой. Не используешь контракт сейчас, отзывай разрешение. Это не паранойя. Это базовая гигиена, особенно на фоне атак через заражённые зависимости, когда даже доверенный DApp может стать вектором кражи.
| Инструмент | Сети | Что показывает | Кому подойдёт |
|---|---|---|---|
| Revoke.cash | EVM (Ethereum, BNB, Polygon, Arbitrum и др.) | Активные аппрувы токенов и NFT | Новичкам и средним пользователям |
| DeBank | EVM мультисеть | Аппрувы + балансы по протоколам | Тем, кто крутит активы в DeFi |
| Etherscan Token Approvals | Ethereum | Аппрувы напрямую из эксплорера | Кто хочет без посредников |
Схема supply-chain атаки через NPM-пакеты: разработчик ставит заражённую зависимость, DApp-интерфейс
Что проверить в браузере прямо сейчас
Расширения браузера это отдельная история, и часто болезненная. Любое расширение с правами «читать и изменять данные на всех сайтах» теоретически может перехватить транзакцию до подписи. Открой список расширений и прогони его через простой фильтр: пользуюсь ли я этим прямо сейчас, и зачем ему такие права. Не пользуешься, удаляй. Сомневаешься, отключай.
Аппаратный кошелёк (Ledger, Trezor) закрывает часть проблемы: приватный ключ никогда не покидает устройство. Но он не спасает от подмены адреса получателя на уровне заражённого интерфейса. Поэтому правило одно. Всегда сверяй адрес на экране самого аппаратного кошелька, а не в браузере. Уязвимость мультисиг-кошельков через компрометацию фронтенда это уже задокументированный вектор атаки, а не страшилка.
Совет, который кажется душным, но работает. Заведи отдельный браузерный профиль для крипто-операций. Без посторонних расширений, без сохранённых паролей от соцсетей, без расширений-переводчиков. Неудобно. Но после того как хакер опустошает кошелёк через заражённую библиотеку, слово «неудобно» звучит как лучший сценарий года.
Как TesseraDAO потерял то, что вернуть нельзя
99 миллионов токенов, напечатанных за один вызов функции. Это не баг интерфейса. Это не взлом кошелька пользователя. Это архитектурная уязвимость смарт-контракта, которая отдала злоумышленнику контроль над эмиссией. Цена TSR упала на 99% за несколько минут, пока 2,5 миллиона USDT уходили с рынка.
Вот что интересно. Никакой аудит DApp-подключений не защитил бы пользователей TesseraDAO. Они делали всё правильно: подключались к легитимному интерфейсу, подписывали транзакции через верифицированный контракт. Деньги ушли не через их кошельки. Деньги ушли через уязвимость в самом протоколе. Это принципиальная разница между «как я взаимодействую с протоколом» и «насколько сам протокол защищён».
Где проходит граница между DeFi-риском и изолированным хранением
Смарт-контракт уязвим по природе: он исполняет то, что в нём написано, включая ошибки. Это не недостаток конкретного проекта, это свойство открытого кода без дополнительных слоёв защиты. Поэтому архитектура, где активы физически вынесены за пределы смарт-контрактного уровня, меняет профиль риска принципиально.
На этом фоне UniMex использует гибридную модель, которую сама платформа называет TradeFi: средства стейкинга Cornerstone Plan, по данным платформы, хранятся на отдельном банковском счёте в GAT Investment Bank Limited, а не в публичном смарт-контракте. Инфраструктура хранения подключена через Currencycloud, дочернюю компанию Visa, которая обслуживает трансграничные платежи.
Это не «полная безопасность», такого не бывает. Но атака типа TesseraDAO, где хакер печатает токены через уязвимый контракт, для изолированных средств физически невозможна. Стейкинг в плане Elite (доходность по данным платформы, зависит от рынка и условий продукта) существует в отдельном банковском контуре, а не в публичном пуле ликвидности. Подробнее про логику заработка на UniMex разбирали отдельно.
UNX Chain: почему PoR и PoL меняют уравнение
Проблема большинства DeFi-протоколов в том, что в реальном времени невозможно проверить, соответствуют ли резервы обязательствам. TesseraDAO напечатал 99 миллионов токенов именно потому, что механизма проверки на уровне протокола не было.
UNX Chain, собственный Layer-1 блокчейн UniMex, нативно поддерживает Proof of Reserves (PoR) и Proof of Liabilities (PoL). Это криптографические механизмы, которые позволяют верифицировать соответствие резервов и обязательств без слепой веры в централизованный отчёт. Консенсус построен на PoS с BFT Finality: транзакция финализируется необратимо, когда её подтверждают не менее 2/3 валидаторов сети.
Атаки через заражённые NPM-пакеты эта архитектура напрямую не останавливает, они бьют по фронтенду, а не по блокчейну. Зато PoR/PoL закрывает другой вектор: скрытую эмиссию и манипуляцию резервами, которая прикончила TesseraDAO. Детальный разбор уязвимостей смарт-контрактов в других экосистемах вынесли в отдельный материал.
Пошаговый план гигиены кошелька на ближайший час
Если хочется сделать что-то прямо сейчас, попробуй этот маршрут. Он не идеальный, но закрывает большую часть бытовых рисков.
- Открой MetaMask, нажми на иконку аккаунта, выбери «Connected Sites». Удали всё, чем не пользовался последние две недели.
- Зайди на Revoke.cash, подключи кошелёк, переключайся по сетям и отзывай аппрувы по контрактам, которые тебе ни о чём не говорят. Совет: начни с сетей, где у тебя реально лежат токены.
- Открой список расширений браузера. Удали всё, чем не пользуешься. Особенно расширения с правами «читать и изменять данные на всех сайтах».
- Заведи отдельный профиль браузера только под крипту. Установи туда только кошелёк. Больше ничего.
- Если суммы серьёзные, заведи аппаратный кошелёк и переведи основные активы туда. Главный кошелёк, на котором ты подписываешь подозрительные транзакции, и долгосрочный сейф это два разных адреса.
- Распредели риски: часть в DeFi, часть в изолированном хранении вне публичных смарт-контрактов. Все яйца в один контракт это не стратегия, это ставка.
Маршрут занимает около часа. После него ты будешь знать о своём кошельке больше, чем 90% людей, которые им пользуются ежедневно. Похоже, это и есть минимальная гигиена 2026 года.
Я не финансовый советник и не юрист, всё это мой опыт и наблюдения. Проверяй цифры и условия платформ сам, перед тем как куда-то заводить деньги.
Как часто стоит перепроверять список аппрувов?
Раз в месяц хватит, если ты активно тыкаешься в новые DApp.
Что делать, если я подозреваю, что уже подцепил заражённое расширение или библиотеку?
Не подписывай никаких транзакций со старого кошелька. Создай новый адрес в чистом браузерном профиле, лучше сразу под аппаратным кошельком. Переведи на него только те активы, которые сможешь спасти быстрее, чем атакующий среагирует, обычно это нативные монеты и стейблы без блокировок. Всё, что в стейкинге или с lock-периодом, придётся вытаскивать по мере разлока и сразу уводить на новый адрес.
Стоит ли держать сид-фразу в менеджере паролей?
По-моему, нет. Менеджер паролей это удобно для логинов, но сид-фраза от кошелька с серьёзной суммой лучше живёт на бумаге или металлической пластине в физическом сейфе, без копий в облаке.
Главный риск supply-chain атак не в том, что тебя взломают через заражённый NPM-пакет. Риск в том, что ты никогда не узнаешь об этом до момента, когда кошелёк опустеет: ни предупреждения, ни подозрительного письма, ни фишингового сайта. Просто тихое обновление зависимости в коде DApp, которое ты не контролируешь. И парадокс: чем красивее и удобнее интерфейс, тем меньше у тебя поводов задуматься, что под ним крутится.