Обновление Ethereum помогло опустошить часть кошельков Binance


В четверг кошелек Binance подписал разрешение, которое позволило контракту, контролируемому злоумышленником, управлять им. Менее чем через четыре минуты около $2,5 млрд в Ethereum и токенах исчезли.
Это лишь часть примерно $6,3 млрд, которые, по данным Binance, были украдены в нескольких блокчейнах. На Ethereum злоумышленник использовал функцию EIP-7702, названную по номеру предложения по улучшению Ethereum. Она заработала в мае 2025 года в рамках обновления Pectra.
Чтобы понять, почему это имело значение в четверг, начнем с того, что представляет собой обычный Ethereum Wallet.

Будьте в курсе
движения ваших монет
Алерты, котировки в реальном времени и новости рынка — в одном приложении

Наведите камеру телефона, чтобы установить

4,8 на основе 40 К оценок в App Store и Google Play


Кошелек выходит из-под контроля
Большинство кошельков Ethereum — от браузерного кошелька розничного пользователя до горячего кошелька биржи — управляются приватным ключом. Ключ подписывает транзакции, и кошелек их отправляет. Обычный кошелек не может следовать собственным правилам, например дневному лимиту расходов или списку одобренных получателей.
Кошельки, которые могут следовать правилам, — это смарт-контракты, отдельный тип аккаунта, исполняющий код.
EIP-7702 позволяет обычному кошельку заимствовать такой код. Кошелек подписывает короткое сообщение — разрешение, — которое указывает на смарт-контракт. После принятия разрешения кошелек исполняет код этого контракта как свой собственный.
Любой может отправить подписанное разрешение в сеть, и оно действует, пока в блокчейне не будет записана замена или отмена.
Функция должна была позволить повседневным кошелькам группировать платежи и оплачивать комиссии через третьих лиц. Через несколько недель после запуска маркетмейкер Wintermute обнаружил, что большинство делегирований EIP-7702 указывают на скопированные «свипер-скрипты». Эти скрипты автоматически перенаправляют средства кошелька вору после утечки ключа.
В четверг злоумышленник использовал эту самую функцию, чтобы заставить кошелек Binance с миллиардами долларов запустить собственный свипер.
След в блокчейне
Основной кошелек злоумышленника, 0x7C86…5CA0, пополнялся через сервис микширования Tornado Cash небольшими выводами начиная со среды, согласно реконструкции сети.
Днем в четверг по UTC злоумышленник отработал атаку на собственных кошельках. Около 16:00 UTC он развернул контракт-свипер 0x63e8…6fAe, код которого позволяет управлять им только кошельку злоумышленника.
В 20:20:59 UTC атакующий отправил одну транзакцию. Она несла 50 разрешений, каждое из которых было подписано кошельком, который Etherscan помечает как «Binance 14», и каждое указывало Binance 14 на свипер.
Binance 14 ведет счетчик под названием nonce, который увеличивается при каждой отправке транзакции. Каждое подписанное разрешение должно совпадать со счетчиком аккаунта в момент обработки сетью.
Но Binance 14 обрабатывал так много выводов, что его номер постоянно менялся. Тогда злоумышленник подготовил 50 разрешений для последовательных номеров — с 18 914 775 по 18 914 824, — чтобы вредоносная транзакция успела попасть в сеть, пока продолжает работать кошелек.
Данные Etherscan показывают, что сеть приняла разрешение под номером 18 914 809 и проигнорировала остальные 49. За пять транзакций до этого в том же блоке Ethereum Binance 14 отправил транзакцию номер 18 914 808, оставив 18 914 809 следующим номером.
Это означает, что кто-то получил 50 действительных подписей, позволяющих Binance 14 запускать код злоумышленника, каждая из которых была привязана к разному значению счетчика транзакций.

Binance 14 подписал 50 разрешений для последовательных nonce, и Ethereum принял только совпавшее. Данные: Shaurya Malwa.
В 20:24:23 UTC злоумышленник вызвал свипер через Binance 14. Одной транзакцией он перевел около 167 464 ETH и 63 токена, включая примерно 1,6 млрд USDT, на адрес атакующего.
На этом захват не закончился. Системы Binance продолжали направлять клиентские депозиты в Binance 14, и злоумышленник выметал их снова в 21:04 и 21:44 UTC.
«Злоумышленник также использовал заимствованный код Binance 14, чтобы отдать распоряжения отдельному Binance Hot Wallet 34, и вывел из него 823 млн USDC», — сообщила TRM Labs.
Binance 14 оставался под вредоносным делегированием почти четыре часа. В 00:10:35 UTC в пятницу кошелек отозвал разрешение, очистив код злоумышленника.
Откуда взялись подписи
Транзакции Ethereum подробно описывают лишь одну часть гораздо более масштабной кражи. Злоумышленник также переместил 18 270 биткоинов, сотни миллионов XRP и средства в Solana, Tron и других сетях.
Согласно TRM Labs, эти блокчейны не используют EIP-7702, и украденные средства покинули кошельки Binance через обычные подписанные переводы.
Общая черта — транзакции несли действительные подписи от кошельков, контролируемых Binance. На сегодняшний день все еще расследуется, каким образом злоумышленник получил полномочия создавать эти подписи в разных блокчейнах.

Код злоумышленника работал внутри Binance 14 почти четыре часа, прежде чем кошелек отменил делегирование. Данные: Shaurya Malwa.
В пятницу соучредитель Binance Ричард Тенг заявил, что предварительные выводы указывают на скомпрометированный ноутбук инженера DevOps, который мог позволить злоумышленнику получить доступ к сервисному контейнеру и отправить несанкционированные выводы.
«Злоумышленник не просто использовал права одного инженера, и это было не одно действие в один клик, — написал Тенг на X. — Это был более сложный процесс атаки».
Он сообщил, что расследование не возложило ответственность на конкретное лицо и не нашло доказательств утечки приватных ключей кошельков.
Позже Binance заявила на X, что следователи обнаружили дополнительные точки входа помимо ноутбука, который изначально подозревался. Биржа не назвала эти точки и не объяснила, каким образом злоумышленник получил подписи, необходимые для авторизации переводов с ее кошельков.
Одна из возможностей — злоумышленник заставил собственную инфраструктуру подписи Binance сгенерировать разрешения. Полный путь атаки Binance пока не опубликован.
Разрешение EIP-7702 определяет код, который будет исполнять аккаунт, но не задает получателя платежа или сумму расходов. Поэтому одобрение вредоносного кода может поставить под угрозу как существующие средства кошелька, так и все, что поступит на него позже.
Общий ущерб Binance оценила в $6,3 млрд и пообещала покрыть все убытки из SAFU Foundation и средств компании. В пятницу она сообщила, что около $3 млрд затронутых активов уже заморожено.
