Binance не потеряла ни одного приватного ключа, и в компании это подчёркивают как главный факт. Этого не хватило, чтобы удержать примерно $6,3 млрд, которые ушли с горячих кошельков за четыре часа 29 октября. Инфраструктура подписи биржи подписывала переводы, которые собирали атакующие: им не нужно было красть ключ, достаточно было заставить систему сработать на чужой запрос. К утру Binance оценила ущерб и назвала случившееся кражей средств, а не утечкой данных.
Описание
Крупнее оказалась и подготовка: она началась минимум за 36 часов до кражи. Операторский кошелёк получил финансирование через Tornado Cash утром 28 октября. Контракт для автоматического списания средств развернули днём 29 октября, за четыре часа до первого перевода. Инфраструктура для атаки на Ethereum несколько часов оставалась в публичном блокчейне, и её можно было заметить. Некоторые ранние публикации назвали случившееся утечкой данных Binance. Следов компрометации клиентских данных или KYC-записей не нашли. Ущерб в четыре с лишним раза превысил $1,46 млрд, которые в феврале 2025 года забрали у Bybit. Первыми в 20:05 начали выводить пять кошельков на XRP Ledger, через двадцать минут подключились другие сети.
На Ethereum применили EIP-7702 - механизм делегирования, появившийся с обновлением Pectra. Он позволяет кошельку подписать разрешение и исполнять чужой код от своего имени. Одна транзакция несла 50 разрешений для горячего кошелька Binance. Обычные транзакции кошелёк продолжал отправлять, и каждая меняла счётчик. Разрешение срабатывает, только если его номер совпадает с текущим, поэтому атакующие получили подписи на диапазон номеров. По данным ThreatMon, все они указывали на контракт для автоматического списания средств. Сработало только одно разрешение - с подходящим номером. Через несколько минут контракт списал токены и ETH на $2,53 млрд, и это только часть ущерба.
В течение почти четырёх часов от имени этого кошелька исполнялся чужой код. Контракт списывал всё, что поступало на кошелёк, без новой подписи. Ротация ключей и пауза выводов не убирают чужой код. Отозвать делегирование можно только новой авторизацией на нулевой адрес. Binance отправила её в 00:10 30 октября. От первой авторизации до отзыва прошло почти четыре часа, и всё это время кошелёк оставался доступен для списания. Для кастодианов вопрос смещается с сохранности ключей на то, кто и на каком основании отправляет запрос на подпись. Binance не раскрыла, как взломали ноутбук, и полная картина атаки пока неизвестна, поэтому выводы могут измениться.
Быстрее биржи сработали эмитенты стейблкоинов. В 21:01 Tether заблокировала 971 млн USDT. Тремя минутами позже Circle заблокировала 823 млн USDC. Только между 22:15 и 22:33 на Binance приостановили выводы. К 13:10 30 октября заморозки покрывали 44% украденного. Это $2,84 млрд. Атакующие переводили остальное в активы, которые труднее заблокировать, и теряли на обмене: заморозки затронули стейблкоины, но не биткоин и эфир. В других монетах часть средств к тому моменту не двигалась.
Атака не потребовала ни одного ключа из холодного хранения. Она потребовала, чтобы система подписи доверяла запросу из скомпрометированной внутренней среды, а не только проверяла ключ и формально подтверждала операцию.