Hoy, las billeteras calientes de Binance perdieron unos 6.280 millones de dólares en 8 cadenas. 6.070 millones se movieron durante los primeros 55 minutos, y el atacante siguió barriendo una y otra vez una billetera de Ethereum durante dos horas más.

Desde entonces, Tether, Circle, Ripple, Paxos, World Liberty y Binance han congelado unos 2.800 millones de dólares. Todavía se pueden mover unos 3.270 millones, principalmente en BTC y ETH.

Rastreé todo en la cadena, incluido cómo el atacante se apresuró a adelantarse a las congelaciones 🧵

De dónde salieron los 6.280 millones de dólares, a precios de las 20:24 UTC:

• Ethereum: 3.740 millones de dólares

• Bitcoin: 18.270,2 BTC, 1.470 millones de dólares

• Tron: 612,7 millones de USDT + 46,4 millones de TRX, 627,5 millones de dólares

• XRP: 233.5M XRP, $296.5M

• Solana: 970,522 SOL, $96.1M

• Arbitrum: 8,426 ETH + 74.6M ARB, $31.8M

• Avalanche: 1.81M AVAX + 8.41M USDt, $24.3M

• Optimism: 44.2M OP, $4.8M

Ethereum, $3.74B, salió en cinco partes:

• 20:24:23, una sweep() en Binance 14: 167,464.25 ETH, 1.615B USDT y otros 61 tokens. $2.53B

• 20:41 y 20:59, una cartera inteligente de Binance que confía en Binance 14: 780M + 43M USDC. $822.6M

• 20:24:47, Binance 16 firma 9 transferencias directamente al atacante: 28,005.6 ETH, 55.7M USDT, 25.9M RLUSD, 84.5 WBTC, 820k UNI, 1,199 XAUt, 18.8M ENA, 304.6k LINK, 583.6B PEPE. $174.2M

• 21:04 y 21:44, dos nuevas sweeps de Binance 14: 2,070 ETH y 204.3M USDT. $209.6M

• 22:39, una última sweep a una cartera nueva: 128.5 ETH y 122 tokens de poco valor. ~$0.5M

Por activo: USDT $1.87B, USDC $823M, ETH $457M (197,668 ETH), RLUSD $88.5M, wBETH $76.8M, XAUt $50.5M, UNI $49.6M, ENA $44.7M, PEPE $40.1M, LINK $29.6M, USD1 $27.8M y unos 50 tokens de menor valor.

Los preparativos comenzaron el día anterior. El 28 de octubre a las 07:39 UTC, la cartera principal del atacante, 0x7c8601d4645b93cea45f71e118a729332e6b5ca0, retiró sus primeros 0.1 ETH de Tornado Cash. Le siguieron otros dos. Luego, una segunda cartera retiró 1 ETH de Tornado y se lo transfirió a las 18:20 del 29 de octubre.

El 29 de octubre a las 02:28 desplegaron un contrato de vaciado. De las 13:51 a las 16:47 hicieron pruebas con sus propias carteras: delegar con EIP-7702, retirar USDT y USDC de prueba, y retirar fondos. A las 15:59 publicaron la v2 con una función de llamada genérica, la que más tarde retiró 823M USDC.

20:04:52 UTC, el primer movimiento falla. La cartera XRP de Binance envía 42,750,000.1 RLUSD al atacante, pero su cuenta XRP aún no existe, así que la transacción rebota.

8 segundos después, se procesa una transferencia de 185,017,485.5 XRP y se crea la cuenta. Para las 20:09 ya habían vaciado otras cuatro carteras XRP de Binance.

Luego se desencadena la cascada:

20:10 Solana, 965,455.1 SOL en una transacción

20:18 Optimism, 44.2M OP

20:20 Bitcoin, 18,270.2 BTC en 11 transacciones, divididos en bloques de 1,000 BTC en el mismo bloque

20:20 a 20:22 Tron, 612.7M USDT + 46.4M TRX

20:30 a 20:35 Arbitrum y Avalanche

Ethereum muestra cómo ocurrió. A las 20:20:59, el atacante envió una transacción con 50 autorizaciones EIP-7702, todas firmadas con la clave de Binance 14, para nonces del 18,914,775 al 18,914,824.

Binance 14 había usado el nonce 18,914,775 a las 20:17:47, así que estas autorizaciones se firmaron minutos antes de usarse.

La correspondiente al nonce 18,914,809 coincidió. La propia transacción de Binance 14 en el mismo bloque usó 18,914,808 y, a partir de entonces, Binance 14 ejecutó el código del atacante.

A las 20:24:23, una sola sweep() retiró 167,464 ETH y 1.615B USDT. 24 segundos después, Binance 16 firmó 9 transferencias directamente al atacante. A las 20:41 y a las 20:59, el atacante usó Binance 14 para retirar 823M USDC de una cartera inteligente de Binance que confía en ella.