Кража 1 млн USDT через фишинг: как работают атаки на approve
8 июля 2026 года анонимный пользователь потерял 999 999 USDT в сети Ethereum, подписав фишинговый approve на токен. Инцидент зафиксировали аналитики Scam Sniffer.

Архитектура вывода: multicall и три транзакции
Атака прошла в два этапа. Сначала злоумышленники попытались вывести ровно 1 млн USDT через multicall-функцию — стандартный пакетный вызов, позволяющий объединить несколько операций в одну транзакцию. Затем остаток вывели тремя отдельными переводами: 639 999 USDT, 159 999 USDT и 200 000 USDT. Суммарный оверхед на газ минимален — это именно тот сценарий, при котором автоматизированный sweeper показывает свою эффективность: одобренный allowance позволяет сливать средства без повторного взаимодействия с жертвой.
Адрес пострадавшего: 0x8c949361b49320c48a51f4b1c6f9f83862530f89. Расчёт на то, что пользователь подпишет approve не глядя, — классическая социальная инженерия, но в обёртке из фейкового dApp-интерфейса.
Контекст: фишинг как доминирующий вектор
Инцидент 8 июля не единичен. 4 июля другой владелец кошелька потерял $1,65 млн после подключения к поддельной бирже и подписания вредоносного контракта. Как отмечает исследователь Райан Коулман, approval предоставил атакующим неограниченный доступ — automated sweeper опустошил кошелёк в автоматическом режиме.
По данным CertiK, за первое полугодие 2026 года криптоиндустрия потеряла $1,32 млрд из-за инцидентов безопасности. В первом квартале фишинг был крупнейшим источником ущерба. Цифра показательна: при всей шумихе вокруг эксплойтов смарт-контрактов и мостов, простейшая социальная инженерия через token approval продолжает генерировать максимальные потери.
Что проверить на практике
Scam Sniffer дают прямолинейные рекомендации: перед подписанием любого запроса на approve проверять адрес контракта, не торопиться с транзакциями и использовать расширения для детекции скама. Но этого недостаточно. Архитектурно единственный надёжный контроль — ревок всех неиспользуемых allowances. Для этого существуют инструменты вроде Revoke.cash или аналогичные.
Практический чек-лист для аудита собственного кошелька:
- Проверить текущие approvals через Etherscan (вкладка Token Approvals) или Revoke.cash. Любой unlimited allowance на неизвестный контракт — красный флаг.
- Не подписывать approve на
MAX_UINT256, если сумма транзакции это не требует. Кастомный лимит на конкретную сумму снижает потенциальный ущерб. - Использовать кошелёк с предпросмотром calldata — строки
approve(address,uint256)иsetApprovalForAllдолжны быть видны до подписания. Если интерфейс скрывает их — это повод отказаться.
Фишинг через token approval не требует от атакующего знания Solidity на уровне эксплойта. Нужен фейковый UI, скопированный или хомографный домен и одна подписанная транзакция. С математической точки зрения соотношение затрат и прибыли для злоумышленника асимметрично в его пользу. Пока пользователи продолжают подписывать approve на автомате, этот вектор будет оставаться основным по объёму украденного.
Отслеживать стоит статистику CertiK по итогам второго квартала: если фишинг сохранит лидерство, вопрос к экосистеме — а не пора ли перейти на Permit2 или аналогичные механизмы с ограниченным scope по умолчанию.