The Binance hack yesterday involved EIP-7702, a very dangerous feature I’ve never liked, so I figured I’d warn you all while I’m at it.
Usually, a lot of people think that as long as they keep their private key secret, they’re safe—especially if they use a hardware wallet, since every time they make a transfer, they have to plug in the device and physically press the confirmation button. So they figure that no matter how skilled a hacker is, they can’t press the button for them.
But in reality, even a hardware wallet won’t save you from this EIP-7702 thing. The process goes roughly like this: you visit a dapp, and it asks you to sign something to upgrade your wallet or activate some feature. You plug in your wallet, and the screen often just shows a bunch of hex code you can’t make heads or tails of, so you quickly hit confirm. That authorization signature can allow your wallet address to execute a contract’s code.
If it’s a malicious contract, the hacker can use your own wallet to make transfers without needing you to sign any more transactions.
So you’re still keeping your hardware wallet locked in a safe, your seed phrase is so secure even you don’t know it, but your money just walks right out the door. It’s like locking the door with 100 locks, then signing a power of attorney giving someone else full rights to transfer ownership of your house.
The dangerous thing is that this can stick around for a long time. In the past, if you signed the wrong thing, you’d lose one token, visit one of those revoke sites, cancel it, and that was that. But this is account-level permission: it can transfer anything in your wallet, and the usual revoke sites can’t handle it. To cancel it, you have to sign a new EIP-7702 authorization pointing to address 0 and submit it to the blockchain. Basically, most people have no idea how to do that.
That’s why I don’t like this design.
$NEAR $BTC $ETH
Usually, a lot of people think that as long as they keep their private key secret, they’re safe—especially if they use a hardware wallet, since every time they make a transfer, they have to plug in the device and physically press the confirmation button. So they figure that no matter how skilled a hacker is, they can’t press the button for them.
But in reality, even a hardware wallet won’t save you from this EIP-7702 thing. The process goes roughly like this: you visit a dapp, and it asks you to sign something to upgrade your wallet or activate some feature. You plug in your wallet, and the screen often just shows a bunch of hex code you can’t make heads or tails of, so you quickly hit confirm. That authorization signature can allow your wallet address to execute a contract’s code.
If it’s a malicious contract, the hacker can use your own wallet to make transfers without needing you to sign any more transactions.
So you’re still keeping your hardware wallet locked in a safe, your seed phrase is so secure even you don’t know it, but your money just walks right out the door. It’s like locking the door with 100 locks, then signing a power of attorney giving someone else full rights to transfer ownership of your house.
The dangerous thing is that this can stick around for a long time. In the past, if you signed the wrong thing, you’d lose one token, visit one of those revoke sites, cancel it, and that was that. But this is account-level permission: it can transfer anything in your wallet, and the usual revoke sites can’t handle it. To cancel it, you have to sign a new EIP-7702 authorization pointing to address 0 and submit it to the blockchain. Basically, most people have no idea how to do that.
That’s why I don’t like this design.
$NEAR $BTC $ETH
