L'hot wallet di Binance violato per 6,28 miliardi di USD; il tracciamento on-chain rivela come l'attaccante abbia utilizzato l'autorizzazione EIP-7702 per prendere il controllo del wallet e spostare i fondi prima che Tether e altri emittenti potessero congelarli, fornendo una ricostruzione completa di questo, il più grande incidente di sicurezza.
Autore: Dickson (@DicksonWuML)
Compilato da: Shenchao TechFlow
Introduzione di Shenchao: Il furto dai wallet hot di Binance è l'evento più importante nel mercato crypto di oggi. L'ingegnere di CertiK e membro di SEAL Dickson ha tracciato i record on-chain transazione per transazione, ricostruendo l'intero processo dell'attaccante che prepara i fondi prelevando da Tornado Cash, utilizza l'autorizzazione EIP-7702 per prendere il controllo dei wallet hot Ethereum di Binance e corre contro Tether, Circle e altri emittenti per congelare i fondi. Gli importi e gli orari in questo articolo sono statistiche on-chain al momento della pubblicazione da parte dell'autore (intorno alle 8:00 ora di Pechino del 30 ottobre), con orari in UTC (+8 ore equivale all'ora di Pechino), e non sono ancora stati confermati ufficialmente da Binance.
I wallet hot di Binance hanno perso circa 6,28 miliardi di dollari su 8 chain oggi. Di questi, 6,07 miliardi di dollari sono stati trasferiti fuori nei primi 55 minuti, dopodiché l'attaccante ha ripetutamente svuotato uno dei wallet Ethereum per più di due ore.
Da allora, Tether, Circle, Ripple, Paxos, World Liberty e Binance hanno congelato circa 2,80 miliardi di dollari. Circa 3,27 miliardi di dollari possono ancora essere movimentati liberamente, principalmente BTC ed ETH.
Ho tracciato l'intero incidente on-chain, incluso come l'attaccante ha spostato i fondi prima dei congelamenti 🧵
Ripartizione dei 6,28 miliardi di dollari (prezzati alle UTC 20:24):
• Ethereum 3,74 miliardi di dollari
• Bitcoin 18.270,2 BTC, 1,47 miliardi di dollari
• Tron 612,7 milioni di USDT + 46,4 milioni di TRX, 627,5 milioni di dollari
• XRP 233,5 milioni di XRP, 296,5 milioni di dollari
• Solana 970.522 SOL, 96,1 milioni di dollari
• Arbitrum 8.426 ETH + 74,6 milioni di ARB, 31,8 milioni di dollari
• Avalanche 1,81 milioni di AVAX + 8,41 milioni di USDt, 24,3 milioni di dollari
• Optimism 44,2 milioni di OP, 4,8 milioni di dollari
I 3,74 miliardi di dollari su Ethereum sono defluiti in cinque lotti:
• 20:24:23, una singola sweep() su Binance 14: 167.464,25 ETH, 1,615 miliardi di USDT e altri 61 token, per un totale di 2,53 miliardi di dollari
• 20:41 e 20:59, 780 milioni + 43 milioni di USDC trasferiti fuori da un wallet smart di Binance che aveva fiducia in Binance 14, per un totale di 822,6 milioni di dollari
• 20:24:47, Binance 16 ha firmato 9 trasferimenti inviati direttamente all'attaccante: 28.005,6 ETH, 55,7 milioni di USDT, 25,9 milioni di RLUSD, 84,5 WBTC, 820.000 UNI, 1.199 XAUt, 18,8 milioni di ENA, 304.600 LINK, 583,6 miliardi di PEPE, per un totale di 174,2 milioni di dollari
• 21:04 e 21:44, due ulteriori sweep di Binance 14: 2.070 ETH e 204,3 milioni di USDT, per un totale di 209,6 milioni di dollari
• 22:39, uno sweep finale verso un nuovo wallet: 128,5 ETH e 122 token a piccola capitalizzazione, circa 500.000 dollari
Per asset: 1,87 miliardi di USDT, 823 milioni di USDC, 457 milioni di ETH (197.668 ETH), 88,5 milioni di RLUSD, 76,8 milioni di wBETH, 50,5 milioni di XAUt, 49,6 milioni di UNI, 44,7 milioni di ENA, 40,1 milioni di PEPE, 29,6 milioni di LINK, 27,8 milioni di USD1, più circa 50 token minori.La preparazione è iniziata il giorno prima. Il 28 ottobre alle UTC 07:39, il wallet principale dell'attaccante 0x7c8601d4645b93cea45f71e118a729332e6b5ca0 ha prima prelevato 0,1 ETH da Tornado Cash, poi ha prelevato altre due volte. Un secondo wallet ha poi prelevato 1 ETH da Tornado e lo ha trasferito al wallet principale il 29 ottobre alle 18:20.
Il 29 ottobre alle 02:28, hanno distribuito un contratto sweeper. Dalle 13:51 alle 16:47, hanno fatto prove sui propri wallet: usando la delega EIP-7702, hanno svuotato USDT e USDC di test, poi hanno prelevato. Alle 15:59, hanno distribuito una versione v2 con una funzione di chiamata generica, ed è stata questa funzione a spostare successivamente gli 823 milioni di dollari in USDC.
Alle UTC 20:04:52, il primo passo è fallito. Il wallet XRP di Binance ha inviato 42.750.000,1 RLUSD all'attaccante, ma l'account XRP dell'attaccante non esisteva ancora, quindi il trasferimento è stato restituito.
Otto secondi dopo, 185.017.485,5 XRP sono stati trasferiti con successo, creando così l'account. Entro le 20:09, altri quattro wallet XRP di Binance erano stati svuotati.
È seguita una reazione a catena:
20:10 Solana, 965.455,1 SOL spostati in una singola transazione
20:18 Optimism, 44,2 milioni di OP
20:20 Bitcoin, 18.270,2 BTC spostati in 11 transazioni e suddivisi in blocchi da 1.000 BTC nello stesso blocco
20:20-20:22 Tron, 612,7 milioni di dollari in USDT + 46,4 milioni di TRX
20:30-20:35 Arbitrum e Avalanche
Ethereum ha rivelato il metodo dell'attacco. Alle 20:20:59, l'attaccante ha inviato una transazione contenente 50 autorizzazioni EIP-7702, tutte firmate con la chiave privata di Binance 14, corrispondenti ai nonce da 18.914.775 a 18.914.824.
Binance 14 stesso aveva appena usato 18.914.775 alle 20:17:47, indicando che queste autorizzazioni erano state firmate solo pochi minuti prima dell'uso.
L'autorizzazione con nonce 18.914.809 corrispondeva. La transazione di Binance 14 nello stesso blocco usava 18.914.808, e da quel momento in poi Binance 14 eseguiva il codice dell'attaccante.
Alle 20:24:23, una singola sweep() ha spostato 167.464 ETH e 1,615 miliardi di dollari in USDT fuori da esso. Ventiquattro secondi dopo, Binance 16 ha firmato 9 trasferimenti inviati direttamente all'attaccante. Alle 20:41 e 20:59, l'attaccante ha usato Binance 14 per trasferire 823 milioni di dollari in USDC fuori da un wallet smart di Binance che si fidava di esso.
Poi è iniziata la corsa contro i congelamenti. L'attaccante ha rapidamente suddiviso gli USDT:
• Alle 20:30, 500 milioni di dollari in USDT sono stati trasferiti a 0x9749…c762. Entro le 20:59, 325 milioni di dollari erano stati convertiti in ETH tramite market maker RFQ, e i restanti 175 milioni di dollari sono stati trasferiti altrove
• Alle 20:33, 200 milioni di dollari in USDT sono stati trasferiti a 0x0ddf…697e. Circa 10 milioni di dollari sono stati venduti su DEX, e 190 milioni di dollari sono stati trasferiti a 0x8d53…639a, che ha depositato 60 milioni di dollari in Aave e ha preso in prestito ETH contro di essi
Il primo lotto di blacklist di Tether è entrato in vigore alle 21:01:35: 0x5227, che deteneva ancora 971 milioni di dollari in USDT; e 0x9749, che era già stato svuotato. Circle ha congelato gli 823 milioni di dollari in USDC alle 21:04:59.
Alcuni fondi sono sfuggiti negli ultimi secondi:• Alle 21:01:59, 0x8d53 ha trasferito 130 milioni di USDT a 0x77ed…c3eb. Quarantotto secondi dopo, alle 21:02:47, Tether ha congelato 0x8d53• Dalle 21:04 alle 21:06, 0x77ed ha venduto circa 50 milioni di USDT su un DEX e ha trasferito 80 milioni a 0x7aa4…bfd1
• Dalle 21:08 alle 21:11, 0x7aa4 ha venduto altri circa 50 milioni e ha spostato fuori i restanti 30 milioni. Quando Tether ha congelato 0x7aa4 alle 21:12:35, era già stato svuotato
• Alle 21:16:11, 0xccbe…a263 ha trasferito fuori i 30 milioni. 36 secondi dopo Tether ha congelato 0xccbe, e alle 21:18:59 ha intercettato i 30 milioni su 0xb171…c8c3
• I 175 milioni trasferiti fuori da 0x9749 sono rimasti su 0xaa24…54a0 fino a quando Tether li ha congelati alle 21:14:59
In totale, degli 1,875 miliardi di USDT su Ethereum, circa 435 milioni sono stati venduti prima che la blacklist li raggiungesse. 1,38 miliardi sono stati congelati e 60 milioni sono bloccati come collaterale su Aave.
Azioni di altri emittenti, in ordine cronologico:
• Alle 20:57:47 World Liberty ha inserito in blacklist 48,5 milioni di WLFI in 0x5227
• Alle 21:07:55 Tether ha congelato 8,41 milioni di USDt su Avalanche. L'attaccante ha tentato di spostarli alle 21:40:47, e la transazione è stata annullata
• Dalle 21:09 alle 21:21 Tether ha congelato 378,7 milioni di USDT in tre wallet su Tron. In precedenza, 234 milioni erano già stati convertiti in TRX tramite SunSwap
• Alle 21:11:23 Tether ha congelato 12.574 XAUt (circa 50 milioni di USD)
• Alle 22:00:59 Ripple ha congelato RLUSD. L'attaccante li aveva già spostati su 0xe702…958d alle 21:33 e venduti 48 milioni in ETH, con l'ultimo ordine di vendita e il congelamento nello stesso blocco. 40,5 milioni sono stati intercettati
• Alle 22:10:35 World Liberty ha congelato 27,8 milioni di USD1
• Alle 22:30:47 Paxos ha congelato 1.907 PAXG
• Alle 22:48:35 Binance ha inserito in blacklist 29.934 wBETH (circa 75 milioni di USD); l'attaccante li aveva già spostati su 0x7f9d…15e3 alle 21:52
I 3,45 milioni di FDUSD di First Digital sono ancora trasferibili.
Binance 14 è rimasto delegato al contratto dell'attaccante, che si è trasformato in un tiro alla fune:
• Alle 21:04 e alle 21:44, l'attaccante ha svuotato di nuovo: prima 1.700 ETH, poi 370 ETH e 200,4 milioni di USDT. Questi USDT sono finiti in 0x5227, che era già stato congelato da Tether
• Alle 22:06:23, Tether ha inserito in blacklist Binance 14 stesso. I trasferimenti USDT di Binance da quell'indirizzo sono falliti alle 22:15 e alle 23:01
• Alle 22:39, l'attaccante ha svuotato di nuovo, questa volta verso un nuovo wallet: 128,5 ETH e 122 token a piccola capitalizzazione
• Dalle 22:55 alle 23:07, Binance stessa ha svuotato Binance 14: 46 trasferimenti di token verso Binance 8, circa uno ogni 12 secondi
• Dalle 23:36 alle 23:38, l'attaccante ha chiamato sweep() altre quattro volte, e tutte e quattro sono risultate vuote
Fuori da Ethereum:
• Arbitrum, dalle 21:35 alle 21:38: tutti gli 8.426 ETH e 74,6 milioni di ARB sono stati spostati su un nuovo wallet 7702 0x3e2b…32d5, che ha autorizzato ARB per il trading alle 21:41. Alle 23:50 era ancora lì
• Avalanche, alle 21:45:34: 1.813.999 AVAX sono stati spostati su 0x8035…c397. Poi 200.005 AVAX sono stati trasferiti fuori da 0xc39e…9824, e alle 23:27:35 lo stesso indirizzo ha ricevuto 1.563.812,78 USDC su Ethereum tramite il bridge cross-chain CCTP di Circle. Quattro minuti dopo, alle 23:31:59, Circle lo ha inserito in blacklist• I fondi su Bitcoin, XRP, Solana e Optimism non sono ancora stati movimentati. I BTC sono distribuiti su 19 wallet, 17 dei quali contengono esattamente 1.000 BTC ciascuno
Stato alle circa 23:50 UTC:
Congelati, circa 2,80 miliardi USD
• 1,38 miliardi USDT su Ethereum, 378,7 milioni su Tron, 8,41 milioni su Avalanche (Tether)
• 824,6 milioni USDC (Circle)
• 40,5 milioni RLUSD (Ripple), 27,8 milioni USD1 (World Liberty), 12.574 XAUt (Tether), 29.934 wBETH (Binance), 1.907 PAXG (Paxos), 48,5 milioni WLFI
Non congelati, circa 3,27 miliardi USD
• 18.270 BTC, 1,42 miliardi USD
• 458.770 ETH distribuiti su 9 wallet, 1,03 miliardi USD
• 233,5 milioni XRP, 289 milioni USD
• 684,6 milioni TRX, 243 milioni USD
• Circa 136 milioni USD in altri token su Ethereum
• 970.500 SOL, 93 milioni USD, più ARB, AVAX e OP, circa 48 milioni USD
Altri 60 milioni USDT sono bloccati come collaterale su Aave.
Nota: i trasferimenti su BTC, XRP e Tron sono stati collegati tramite correlazione temporale e impronte delle transazioni: la stessa finestra temporale, indirizzi di ricezione completamente nuovi e commissioni e formati delle transazioni diversi dai prelievi effettuati direttamente da Binance. L'importo rubato è calcolato ai prezzi delle 20:24 UTC; le disponibilità attuali sono calcolate ai prezzi intorno alle 23:50 UTC.
Le prove on-chain di ogni transazione e congelamento sono allegate nel post qui sotto. Se notate qualcosa che mi è sfuggito, fatemelo sapere!