40 минут на кражу $5,6 млрд, подготовка за два дня: полная хронология взлома Binance
BlockbeatsПока не подтверждено, были ли это северокорейские хакеры, и не установлено, как они получили подпись.
Если коротко: злоумышленник некоторое время открыто готовился в блокчейне, затем с помощью одной делегации EIP-7702 превратил горячий кошелёк Binance 14 в собственный контракт и начал выводить средства ранним утром. К рассвету с адресов, связанных с горячим кошельком Binance, ушло около 5,643 млрд долларов в сетях Ethereum, Bitcoin, Tron и нескольких L2. Эмитенты Tether, Circle, Ripple и World Liberty совместно заморозили около 2,54 млрд долларов — примерно 45% от выведенного. На данный момент вредоносная делегация всё ещё не отозвана.
Официальная позиция Binance по-прежнему: идёт расследование потенциальной проблемы безопасности, средства пользователей полностью в безопасности.
Выведенные активы (по состоянию на 30 октября 05:22 UTC+8 / 29 октября 21:22 UTC):
Ethereum: 3,528 млрд долларов
Bitcoin: 1,449 млрд долларов
Tron: 628 млн долларов
Arbitrum + Optimism + Base: суммарно около 38 млн долларов
Текущая ситуация с замороженными активами:
Tether — около 1,567 млрд USDT, Circle — около 823 млн USDC (вместе 2,316 млрд долларов), плюс Ripple — около 200 млн RLUSD, World Liberty Financial — около 27,8 млн USD1 + 2 млн WLFI, итого 2,54 млрд долларов.
Хронология
Ночь перед атакой: 18 часов подготовки (28–29 октября)
С 28 октября (UTC 28 октября 07:39): адрес злоумышленника 0x7C86…5CA0 постепенно получил три вывода примерно по 0,1 ETH из Tornado Cash — специально для оплаты газа. Ранее этот адрес не имел никакого отношения к Binance.
29 октября 10:29 (UTC 02:29): развёрнут первый контракт для вывода средств 0x19be…f2bf. Позже он был заброшен.
29 октября 21:51 (UTC 13:51): на два тестовых кошелька записана делегация EIP-7702. Оба кошелька не принадлежат Binance — это внешние кошельки, найденные самим злоумышленником.
29 октября 22:20 и 22:24 (UTC 14:20 и 14:24): первая и вторая репетиции — вызов функции вывода, чтобы опустошить эти два тестовых кошелька. В первый раз, возможно, что-то пошло не так, поэтому через четыре минуты попытку повторили.
29 октября 23:59 (UTC 15:59): развёрнута исправленная версия контракта 0x63e8…6fAe. Именно она в итоге сработала на Binance.
30 октября с 00:21 до 00:30 (UTC 29 октября с 16:21 до 16:30): третья репетиция — использован третий кошелёк, две делегации и один вывод средств.
Затем тишина 3 часа 51 минуту. До самого удара.
Основная атака: 40 минут (30 октября 04:21 – 06:02 / UTC 29 октября 20:21 – 22:02)
04:21:00 (UTC 20:21:00): отправлена транзакция типа EIP-7702, делегирующая код 0x63e8…6fAe кошельку Binance 14 по адресу 0x28C6…1d60. В одной транзакции было 50 авторизаций, и только одна совпала с nonce.
04:24:23 (UTC 20:24:23): произошёл основной вывод. Binance 14 сам инициировал вызов и перевёл на 0x5227…2f8c 167 464 ETH и 63 токена, включая около 1,615 млрд USDT. Комиссия — 0,0004 ETH, меньше $1.
04:24:47 (UTC 20:24:47): Binance 16 добавил на тот же адрес ещё 28 005,6 ETH — практически без паузы.
С 04:30 до 04:33 (UTC с 20:30 до 20:33): началось дробление USDT: 500 млн отправлено на 0x9749…C762, 200 млн — на 0x0Ddf…697e.
04:38 (UTC 20:38): 195 460 ETH разом переведены на 0x8532…43D4. Это крупнейший единичный перевод.
04:41 и 04:59 (UTC 20:41 и 20:59): злоумышленник вызвал на Binance 14 другую функцию 0x043ff9d2; в ту же минуту Hot Wallet 34 перевёл 780 млн и 43 млн USDC соответственно. Злоумышленник воспользовался правами Binance 14 на этот контракт.
05:04 (UTC 21:04): ещё один вывод — 1 699,92 ETH.
С 05:22 до 06:02 (UTC с 21:22 до 22:02): дробление на мелкие части. RLUSD 88,5 млн, UNI 7,02 млн, PEPE 77,7 трлн, wBETH 29 934, ENA 217,5 млн — всё по одному отправлялось на новые адреса, на каждый из которых заранее зачислялось от 0,5 до 1 ETH на газ.
05:44 (UTC 21:44): в процессе на Binance 14 был успешно проведён ещё один вывод — забраны только что поступившие новые депозиты.
От делегации до первого вывода прошло всего 3 минуты 24 секунды. Но система контроля рисков Binance не предприняла никаких блокирующих действий.
Затем, начиная с 5 часов (UTC 21:00), Binance и проекты начали замораживать активы: Tether — около 1,567 млрд USDT, Circle — около 823 млн USDC (вместе 2,316 млрд долларов), плюс Ripple — около 200 млн RLUSD, World Liberty Financial — около 27,8 млн USD1 + 2 млн WLFI, итого 2,54 млрд долларов.
Причина атаки: одна подпись превратила горячий кошелёк в чужой контракт
EIP-7702 — это возможность, введённая обновлением Ethereum Pectra: она позволяет обычному кошельку (EOA) временно арендовать код смарт-контракта. Владелец кошелька подписывает авторизацию, и после этого любой вызов на этот адрес исполняет чужой код.
Схема злоумышленника:
Развернуть контракт 0x63e8…6fAe, в котором есть только одна функция sweep(address pool, address[] depositors) — она переводит ETH и заданный список токенов на указанный адрес.
Получить авторизационную подпись Binance 14 и «установить» этот код на горячий кошелёк Binance.
Через 3 минуты 24 секунды после установки напрямую вызвать контракт вывода на адресе горячего кошелька Binance.
Поэтому со стороны выглядит так, будто горячий кошелёк Binance сам перевёл деньги. В блокчейне не видно никакого действия «внешний адрес выводит активы» — всё выглядит как обычная исходящая транзакция Binance 14.
Злоумышленник не знал актуальный nonce Binance 14 (этот кошелёк продолжал постоянно отправлять транзакции). Поэтому он поместил в одну транзакцию 50 авторизаций с nonce от N до N+49, рассчитывая, что одна из них совпадёт. В итоге сработала только одна.
Данный контент предназначен исключительно для информационных и образовательных целей и не является инвестиционным советом, связанным с BTCC. BTCC прилагает все усилия, но не может гарантировать правдивость, точность или оригинальность вышеприведенного контента.