Эфириум

Обновление 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 млрд затронутых активов уже заморожено.

Источник

Добавить комментарий

Кнопка «Наверх»
  • bitcoinBitcoin (BTC) $ 76,496.00
  • ethereumEthereum (ETH) $ 2,225.38
  • tetherTether (USDT) $ 0.998993
  • usd-coinUSDC (USDC) $ 0.999584
  • tronTRON (TRX) $ 0.331215
  • zcashZcash (ZEC) $ 1,214.69
  • dogecoinDogecoin (DOGE) $ 0.074576
  • moneroMonero (XMR) $ 589.48
  • leo-tokenLEO Token (LEO) $ 9.40
  • chainlinkChainlink (LINK) $ 11.11
  • cardanoCardano (ADA) $ 0.190994
  • stellarStellar (XLM) $ 0.167149
  • bitcoin-cashBitcoin Cash (BCH) $ 285.29
  • daiDai (DAI) $ 0.999770
  • litecoinLitecoin (LTC) $ 54.85
  • hedera-hashgraphHedera (HBAR) $ 0.071097
  • crypto-com-chainCronos (CRO) $ 0.050687
  • okbOKB (OKB) $ 109.48
  • ethereum-classicEthereum Classic (ETC) $ 7.07
  • kucoin-sharesKuCoin (KCS) $ 7.02
  • algorandAlgorand (ALGO) $ 0.093629
  • cosmosCosmos Hub (ATOM) $ 1.50
  • dashDash (DASH) $ 48.19
  • vechainVeChain (VET) $ 0.005806
  • true-usdTrueUSD (TUSD) $ 0.998498
  • tezosTezos (XTZ) $ 0.252931
  • decredDecred (DCR) $ 13.38
  • basic-attention-tokenBasic Attention (BAT) $ 0.128810
  • iotaIOTA (IOTA) $ 0.039037
  • neoNEO (NEO) $ 1.96
  • qtumQtum (QTUM) $ 0.767952
  • 0x0x Protocol (ZRX) $ 0.093127
  • ontologyOntology (ONT) $ 0.046434
  • liskLisk (LSK) $ 0.206748
  • paxos-standardPax Dollar (USDP) $ 0.998609
  • wavesWaves (WAVES) $ 0.220828
  • ravencoinRavencoin (RVN) $ 0.001335
  • huobi-tokenHuobi (HT) $ 0.137703
  • bitcoin-diamondBitcoin Diamond (BCD) $ 0.061182
  • iconICON (ICX) $ 0.010689
  • monacoinMonaCoin (MONA) $ 0.065419
Закрыть
Закрыть