Эксперты всё ещё есть: они разобрали, как на этот раз взломали Binance в сети Ethereum, и, кажется, теперь я понял, в чём дело

На этот раз взлом произошёл на этапе подписи, а не из-за приватного ключа

В Ethereum есть функция под названием 7702, которая позволяет обычному кошельку подписать делегирование полномочий и передать управление аккаунтом смарт-контракту

Это всё равно что написать доверенность: «С сегодняшнего дня управлением счётом будет заниматься программа другого человека, и всякий раз, когда на него поступают деньги, она будет переводить их на внешний адрес»

После подписания делегирования счёт больше не находится под вашим контролем

Это делегирование действует при определённом номере

У каждого кошелька есть счётчик под названием nonce, который увеличивается на единицу с каждой отправленной транзакцией

Делегирование привязано к определённому номеру и вступает в силу, только когда счёт достигает этого номера, а после однократного использования отменяется

Злоумышленники не знали, какого номера достиг кошелёк Binance в тот момент, поскольку он постоянно отправлял транзакции

Поэтому они заставили Binance подписать сразу 50 последовательных делегирований — одно за другим, надеясь угадать нужный номер

Достаточно, чтобы одно из пятидесяти делегирований совпало с текущим номером, — тогда оно вступит в силу

Именно это и произошло

Что действительно опаснее всего — все эти 50 делегирований подписала сама Binance

В блокчейне видны последовательные номера, что свидетельствует о том, что их подписали одновременно, за очень короткий промежуток времени

По мнению Blockaid, произошедшее больше похоже на злоупотребление ключом, а не на его кражу

Приватный ключ по-прежнему находится у Binance, но злоумышленники заставили систему подписи считать, что эти 50 транзакций заслуживают подписи

Как только делегирование вступило в силу, этот кошелёк перестал быть обычным кошельком

Но она стала входом в контракт злоумышленников, у которого была лишь одна функция: вывести все монеты и весь ETH, оставив только 1 ETH

1 ETH оставили, чтобы счёт мог и дальше отправлять транзакции; если кто-нибудь переводил на него ещё средства, их выводили тем же способом

Это была не разовая кража, а постоянный вывод средств

Тем временем средства выводились с горячих кошельков Binance в нескольких блокчейнах

Это означает, что злоумышленники получили не доступ к какому-то одному кошельку, а возможность подписывать транзакции и влиять сразу на несколько кошельков

За последние десять лет кражи с торговых платформ происходили из-за утечки приватных ключей или мнемонических фраз, либо из-за участия сотрудников изнутри

Но на этот раз ничего не украли — подписала сама система

После 7702 одна подпись могла делать гораздо больше, чем просто выполнять один переводдругой, надеясь угадать правильный номер

Достаточно, чтобы одно из пятидесяти делегирований совпало с текущим номером, — тогда оно вступит в силу

Именно это и произошло

Что действительно опаснее всего — все эти 50 делегирований подписала сама Binance

В блокчейне видны последовательные номера, что свидетельствует о том, что их подписали одновременно, за очень короткий промежуток времени

По мнению Blockaid, произошедшее больше похоже на злоупотребление ключом, а не на его кражу

Приватный ключ по-прежнему находится у Binance, но злоумышленники заставили систему подписи считать, что эти 50 транзакций заслуживают подписи

Как только делегирование вступило в силу, этот кошелёк перестал быть обычным кошельком

Но она стала входом в контракт злоумышленников, у которого была лишь одна функция: вывести все монеты и весь ETH, оставив только 1 ETH

1 ETH оставили, чтобы счёт мог и дальше отправлять транзакции; если кто-нибудь переводил на него ещё средства, их выводили тем же способом

Это была не разовая кража, а постоянный вывод средств