A Binance wallet signed a permission on Thursday that let an attacker-controlled contract operate it. Less than four minutes later, about $2.5 billion in ether and tokens was gone.
That was only part of the roughly $6.3 billion Binance says was stolen across several blockchains. On Ethereum, the attacker used a feature called EIP-7702, named for its Ethereum Improvement Proposal number. It went live in May 2025 as part of the Pectra upgrade.
To see why it mattered on Thursday, lets start with what an ordinary Ethereum wallet is.
Wallet goes rogue
Most Ethereum wallets, from a retail user's browser wallet to an exchange's hot wallet, are controlled by a private key. The key signs transactions and the wallet sends them. An ordinary wallet can't follow rules of its own, such as a daily spending limit or a list of approved recipients.
Wallets that can follow rules are smart contracts, a separate kind of account that runs code.
EIP-7702 lets an ordinary wallet borrow that code. The wallet signs a short message, called an authorization, that points at a smart contract. Once the authorization is accepted, the wallet runs that contract's code as if it were its own.
Anyone can submit the signed authorization to the network, which remains until a replacement or cancellation is recorded onchain.
The feature was meant to let everyday wallets batch payments and have someone else pay their fees. Within weeks of launch, market maker Wintermute found that most EIP-7702 delegations pointed at copy-pasted "sweeper" scripts. Those scripts automatically forward a wallet's funds to a thief once its key has leaked.
The attacker on Thursday used this very feature to make a Binance wallet holding billions run a sweeper of their own.
Blockchain trail
The attacker's main wallet, 0x7C86…5CA0, was funded through the mixing service Tornado Cash in small withdrawals starting Wednesday, according to a reconstruction of the network.
On Thursday afternoon UTC, the attacker rehearsed the attack on wallets of their own. At about 16:00 UTC, they deployed a sweeper contract, 0x63e8…6fAe, whose code only lets the attacker's wallet operate it.
At 20:20:59 UTC, the attacker sent one transaction. It carried 50 authorizations, every one signed by the wallet Etherscan labels “Binance 14” — one of the many wallets associated with Binance — and every one pointing Binance 14 at the sweeper.
Binance 14 keeps a counter, called a nonce, that advances whenever it sends a transaction. Each signed authorization must match the account's counter when the network processes it.
coindesk.com