← Back to Blog

    The $6.3B Binance Hack: How Binance 14's Own Key Signed the Takeover

    Ondology AI Investigator graph of the Binance hot wallet hack: Tornado Cash funding, the EIP-7702 delegation of Binance 14 and transfers from Binance wallets on three chains into one attacker address

    By Panayiotis Kattides · October 29, 2026 · Updated October 30, 2026

    On the evening of 29 October 2026, attackers took about $6.3 billion from Binance hot wallets on eight chains, by Binance's own estimate the largest crypto theft on record. We traced the Ethereum, Arbitrum and Avalanche side as it happened, $3.79B of it. The short version: nobody exploited a bug. Binance 14's own key signed an EIP-7702 delegation that turned the wallet into the attacker's code, and Binance has since traced the breach to the service that submits its withdrawals.

    Latest, 30 October, 06:25 UTC

    • Binance confirmed the hack and its likely entry point. "Binance's initial investigation suggests that the security incident may involve a compromised DevOps engineer's laptop, which allowed an attacker to gain access to a service container and submit unauthorized withdrawal transactions," it said, adding: "We have found no evidence of any wallet private key leak." That is the scenario the chain pointed to on the night (see below).
    • $6.3B across eight chains. Binance puts the total impact at around $6.3B and says it will cover all losses. CertiK's Dickson breaks it down across Ethereum, Bitcoin, Tron, XRP, Solana, Arbitrum, Avalanche and Optimism; his figures for the three chains we traced match ours (table below).
    • About $3B frozen, by Binance's latest estimate. Tether says it froze "over $1.57 billion in USDT" and Circle "over $800 million in USDC". On Arbitrum, the attacker's 8,426 ETH and 74.56M ARB left its wallet at 00:18:20 UTC for a system address, which matches the Arbitrum Security Council's reported $30.5M freeze. Circle also blacklisted Binance 14 and Hot Wallet 34 themselves at 23:53 and 23:54 UTC.
    • Binance took Binance 14 back at 00:10:35 UTC, 3 hours 50 minutes after the takeover, with an EIP-7702 revocation signed by the wallet itself. A fourth sweep at 22:39 had taken another 128.5 ETH; the attacker's six attempts between 23:36 and 23:56 found nothing left.
    • Withdrawals are paused. Co-founder Yi He: "We expect to begin resume withdrawal services in the next 48 hours." Deposits are running again.
    • Attribution. TRM Labs attributes the attack to TraderTraitor, a North Korean group, with "high confidence"; Blockaid and ZachXBT also point to North Korea. We have not verified attribution ourselves.
    • The attacker's ETH. It has sold most of its remaining unfreezable tokens and now holds about 500,938 ETH (about $1.12B) in seven Ethereum wallets that have never sent a transaction. The largest, 0x8532…43d4, holds 197,460 ETH. Bridge use so far is limited to tests of 0.2 to 0.5 ETH through MetaMask's bridge router, LI.FI and a swap aggregator.
    • Messages. Strangers keep sending the attacker's initiator on-chain messages, from insults to an obvious scam offering to "clear all obstacles" for 1,000 ETH. (An earlier version of this update attributed one of these notes to the attacker; it was sent by a third party.)

    Key takeaways

    • At 20:20:59 UTC an attacker submitted 50 EIP-7702 authorizations for Binance 14. We recovered the signer of every one: all 50 were signed with Binance 14's private key.
    • Three minutes later one transaction swept ETH and 63 tokens out of Binance 14, worth $2.54B. The same access pulled 823M USDC from Hot Wallet 34, a smart wallet that obeys Binance 14.
    • It was not one key. Binance 16 and hot wallets on Arbitrum and Avalanche sent another $230M to the same address within twelve minutes.
    • Tether and Circle froze $2.01B within an hour; Binance now estimates about $3B frozen in total. By 06:25 UTC on 30 October the attacker held about 500,000 ETH, which no issuer can freeze.
    • Binance has since traced the breach to a compromised engineer's laptop and a service container that submits withdrawals, with no evidence of a private key leak: the signing-layer scenario the chain pointed to.

    All figures below come from public on-chain data, valued at prices at the time of the drain (ETH at $2,313). The account of the night reflects the chain at 21:24 UTC on 29 October; the box above and the table further down are as of 06:25 UTC on 30 October. Changpeng Zhao posted on the night that "It does look like a hack on Binance" and that "As a shareholder, I expect all user funds will be fully covered." Times are UTC.

    What happened, minute by minute

    Reconstructed from Ethereum, Arbitrum and Avalanche transactions, plus the other chains as reported by CertiK's Dickson. All times UTC.
    TimeEvent
    28 Oct, 07:39First of three 0.1 ETH Tornado Cash withdrawals that fund the attacker's initiator wallet (0x7c86…5ca0)
    20:04 to 20:22Before Ethereum, Binance wallets on XRP (from 20:04:52), Solana, Optimism, Bitcoin and Tron are drained, per CertiK's Dickson
    02:28The initiator deploys its first sweep contract
    13:51 to 16:47Rehearsal: the initiator delegates three of its own test wallets with EIP-7702, several authorizations per transaction, and sweeps small USDT and USDC balances out of them
    15:59The final sweep contract is deployed (0x63e8…6fae, unverified)
    20:20:59The delegation transaction installs the sweep contract in Binance 14
    20:24:23One transaction sweeps 167,464 ETH and 63 tokens from Binance 14 to the receiver, 0x5227…2f8c
    20:24:47Binance 16 signs nine transfers to the same receiver: 28,005.6 ETH, 55.7M USDT, 25.9M RLUSD and six more tokens ($174M)
    20:30 to 20:36Hot wallets on Arbitrum (74.56M ARB, 8,426 ETH) and Avalanche (1.81M AVAX, 8.41M USDt) pay the same receiver address ($56M)
    20:30 to 20:33The receiver splits off 500M and 200M USDT to two fresh wallets, each tested first with 0.5 ETH
    20:34The first USDT is sold for ETH
    20:38:47195,460 ETH moves to 0x8532…43d4, where it has not moved since
    20:41:23780M USDC is pulled from Binance Hot Wallet 34 through Binance 14, and another 43M at 20:59:47
    21:01:35Tether freezes the receiver and the first USDT wallet, 37 minutes after the drain
    21:04:23The attacker sweeps Binance 14 again: 3.92M USDT, 1,700 ETH and 22 other tokens that had arrived as new deposits
    21:04:59Circle freezes the 823M USDC on the receiver
    21:18:59Tether's eighth freeze, on a wallet that had received 30M USDT and 57,892 ETH minutes earlier
    21:22:59The receiver moves 88.5M RLUSD to another attacker wallet
    21:42:59Binance 124, another Binance wallet, tops up Binance 14 with 200M USDT
    21:44:11Third sweep of Binance 14: the 200.4M USDT and 370 ETH go to the receiver, whose USDT is already frozen
    21:45:34On Avalanche, the receiver moves 1,813,999 AVAX to 0x8035…c397
    21:47:47122,310 ETH moves from the first laundering wallet to a fresh wallet
    22:06:23Tether freezes Binance 14 itself
    22:08:5920,492 ETH from the RLUSD sales lands in another fresh wallet
    22:39:35Fourth sweep of Binance 14: 128.5 ETH to another new wallet
    23:53 to 23:54Circle blacklists Binance 14 and Hot Wallet 34
    30 Oct, 00:10:35Binance 14 signs an EIP-7702 revocation and is back under Binance's control
    00:18:20On Arbitrum, the 8,426 ETH and 74.56M ARB leave the attacker's wallet for a system address, matching the Arbitrum Security Council's reported freeze
    About 02:25Binance publishes its initial findings: a compromised DevOps engineer's laptop, a service container, about $6.3B impact

    How a stranger moved Binance 14's funds

    Binance 14 (0x28C6…1d60) is one of the busiest wallets on Ethereum, with nearly 19 million transactions. It is a plain wallet controlled by one key, not a smart contract. Yet the transaction that emptied it was sent by a different address. That is only possible because of EIP-7702, which Ethereum activated in May 2025.

    EIP-7702 lets a plain wallet point to a contract and run that contract's code as its own. The wallet's key signs a short message called an authorization, naming the contract and the wallet's current nonce. Anyone can then submit that authorization on-chain. From that moment, any call to the wallet runs the contract's logic against the wallet's own balance.

    At 20:20:59 the attacker's initiator submitted a transaction carrying 50 such authorizations for Binance 14, all naming its sweep contract. We recovered the signer of each one cryptographically. All 50 were signed by the Binance 14 key. Whoever prepared them had either the key itself or the ability to make Binance's signing system sign whatever they asked.

    The number 50 is a clue. An authorization only takes effect if its nonce matches the wallet's nonce at that instant, and Binance 14 was sending a customer withdrawal every few seconds. The attacker signed one authorization for each nonce from 18,914,775 to 18,914,824 so that one would match whenever the transaction landed. One did: nonce 18,914,809. The lowest nonce in the batch was Binance 14's live nonce at 20:17:47, three minutes earlier, which suggests the signatures were produced in real time rather than stockpiled.

    The sweep contract is unverified, but its bytecode is short. It accepts calls only from the initiator's address, and its sweep function sends every listed token and all ETH except 1 ETH to an address of the caller's choosing. After the drain, Binance 14 held exactly 1 ETH.

    Hot Wallet 34 (0xEe7a…4055) is a smart wallet that executes instructions from Binance 14. Once Binance 14 ran the attacker's code, that trust became a second door: the attacker had Binance 14 instruct Hot Wallet 34 to pay out 823M USDC.

    Ondology AI Investigator case graph: Tornado Cash pools fund the attacker's initiator and backup wallets; the initiator deploys a sweep contract and delegates Binance 14 to it; Binance 14, Hot Wallet 34, Binance 16 and hot wallets on Arbitrum and Avalanche pay one attacker receiver
    How the wallets were taken, as a case file in the Ondology AI Investigator. Red: attacker. Teal: exchange wallets. Purple: Tornado Cash.

    It was not one key

    Twenty-four seconds after the sweep, Binance 16 (0xDFd5…963d) sent nine ordinary signed transfers to the same receiver. No EIP-7702 was needed there: these were regular transactions signed with Binance 16's key. Two details stand out. Their nonces follow directly after two small routine transfers in the same block (799.40 and 36.36 USDT), and they use the same 170 gwei fee cap as Binance 16's own transactions, with a higher tip. Every amount is rounded down to one decimal place.

    Between 20:30 and 20:36 the pattern repeated on two more chains, again with amounts rounded to one decimal. On Arbitrum, a wallet publicly labelled as a Binance hot wallet sent 74,559,805.2 ARB, and three other high-volume wallets sent 8,426.2 ETH. On Avalanche, four high-volume wallets (between 0.9 and 5.1 million transactions each) sent 1,814,099.3 AVAX and 8,409,928.4 USDt. We could not label the Avalanche wallets independently.

    Taken together, this pointed away from a single leaked key and towards the layer that signs for many hot wallets across chains. On the night we called it a hypothesis, because the chain shows what was signed, not how. Binance has since said its initial investigation points to a compromised DevOps engineer's laptop that gave the attacker access to a service container submitting withdrawal transactions, and that it found no evidence of a private key leak.

    One detail deserves attention in the post-mortem Binance has promised. An EIP-7702 authorization is not a withdrawal transaction: it is a separate message type with its own prefix. For Binance 14 to be delegated, whatever the attacker reached must have been willing to sign that message, 50 times, for a hot wallet. A withdrawal service that can sign arbitrary payloads is a far bigger problem than one that can only send withdrawals.

    The preparation happened in public

    The initiator was funded by three 0.1 ETH withdrawals from Tornado Cash on 28 and 29 October. A backup wallet, funded by one 0.1 ETH and one 1 ETH Tornado Cash withdrawal, paid the initiator's gas and financed a test wallet.

    The rehearsal is all on-chain. At 13:51 the initiator delegated two of its own wallets with EIP-7702, packing several authorizations into each transaction, as it later did for Binance 14. It then swept a few dollars of USDT and USDC out of them. At 16:20, with the final contract deployed, it ran the full sequence again on a third wallet. Four hours later it did the same to Binance 14.

    Racing the freeze

    Most of the haul was in stablecoins that their issuers can freeze, and the attacker acted like it knew that. Within ten minutes of the drain it split 500M and 200M USDT into fresh wallets and began selling. Over 35 minutes, four laundering wallets sold 435M USDT for 160,451 ETH through UniswapX orders, solver fills and Uniswap pools. They paid an average of $2,711 per ETH while the market traded between $2,256 and $2,315, 17 to 20% above market, to get out before the freeze. One wallet took a different route: it supplied 60M USDT to Aave V3 and borrowed 19,762 ETH against it.

    Tether chased the funds hop by hop. It froze the receiver and the first laundering wallet at 21:01:35, then six more addresses by 21:18:59, often within minutes of the USDT arriving. One wallet forwarded 130M USDT 48 seconds before its own freeze. Circle froze the 823M USDC at 21:04:59. Tether also froze the USDt on Avalanche.

    There were spectators too. Within a minute of each new wallet appearing, address-poisoning bots sent the receiver fake USDT and ETH transfers from look-alike addresses, hoping the attacker would copy the wrong one. One stranger sent the initiator an on-chain message asking for a donation.

    Ondology AI Investigator case graph of the laundering: the receiver splits USDT into hop wallets, sells USDT for ETH through UniswapX and Uniswap pools, borrows ETH on Aave, and Tether freezes wallets along the way
    Racing the freeze. Green edges: USDT turned into ETH. Yellow: balances frozen by Tether.

    Eight chains, $6.3B

    We traced the Ethereum, Arbitrum and Avalanche side. CertiK engineer Dickson published a breakdown of all eight chains at the time of the drain, totalling about $6.28B, close to Binance's own estimate of around $6.3B. His figures for the three chains we traced match ours. The attack started on XRP at 20:04:52 UTC, sixteen minutes before the Ethereum delegation.

    Assets taken per chain at 20:24 UTC prices. Ethereum, Arbitrum and Avalanche verified by Ondology Labs; the other chains as reported by CertiK's Dickson.
    ChainTakenAssets
    Ethereum$3.74BETH, USDT, USDC and about 60 other tokens, in four sweeps of Binance 14 plus Binance 16 and Hot Wallet 34
    Bitcoin$1.47B18,270.2 BTC in 11 transactions
    Tron$627.5M612.7M USDT and 46.4M TRX
    XRP$296.5M233.5M XRP
    Solana$96.1M970,522 SOL
    Arbitrum$31.8M8,426 ETH and 74.6M ARB
    Avalanche$24.3M1.81M AVAX and 8.41M USDt
    Optimism$4.8M44.2M OP
    TotalAbout $6.28BBinance estimate: around $6.3B

    Where the EVM money sits now

    State of the attacker's Ethereum, Arbitrum and Avalanche wallets at 06:25 UTC, 30 October 2026 (Ethereum block 26,303,763). Reported freeze totals vary; ours counts balances still held at frozen addresses.
    WhatAmountStatus
    USDT on Ethereum1,380.46MFrozen by Tether: 1,175.46M on the receiver, 175.0M and 30.0M on two hop wallets
    USDC on Ethereum823.0MFrozen by Circle
    USDt on Avalanche8.41MFrozen by Tether
    USDT supplied to Aave V360.0MCollateral for a 19,762 ETH loan, held by a frozen address
    ETH on Ethereum500,938 ETHMobile, in seven wallets that have never sent a transaction: 197,460 at 0x8532…43d4, 137,602 at 0xc887…286a, 78,415 at 0x897c…8df3, 34,280 at 0x79e7…544a, 32,954 at 0x5440…c942, 17,260 at 0x03b0…20ea and 2,962 at 0x8d4b…9e19
    Arbitrum8,426 ETH, 74.56M ARBMoved out of the attacker's wallet at 00:18:20, matching the Arbitrum Security Council's reported freeze
    Avalanche1.81M AVAXMobile, at 0x8035…c397
    RLUSD40.5MIn 0xe702…958d. Selling stopped at 22:00:59, when Ripple froze RLUSD according to CertiK's Dickson; 48.0M had been sold for ETH
    Other tokensAbout $231MMostly frozen by their issuers: 29,934 wBETH (Binance), 12,574 XAUt (Tether) and 1,907 PAXG (Paxos), which we verified on-chain, plus 27.8M USD1 reported frozen. About $31M in smaller tokens remains mobile

    On the three chains we traced, 58% of the $3.79B taken is frozen in stablecoins alone, and about 64% once the Arbitrum funds and the issuer-frozen tokens are counted. The ETH is the part that matters for recovery: issuers cannot freeze it, so whether it can be recovered depends on where it surfaces next, at an exchange, a bridge or a mixer. Binance 14 carried the attacker's delegation until 00:10:35, which is why the second, third and fourth sweeps worked.

    What custodians should take from this

    • An EIP-7702 authorization is a withdrawal of everything. It is not a transaction, so withdrawal policies that inspect transactions may never see it. Signing services, HSMs and MPC policies should refuse authorization messages (the 0x05-prefixed payload EIP-7702 defines) for hot wallets unless explicitly enabled.
    • Rehearse the revocation. Binance removed the delegation with a single signed authorization to the zero address, but it took 3 hours 50 minutes. That signature should be a runbook step measured in minutes.
    • Watch your own wallets for code. A hot wallet that suddenly has code is an emergency. Checking it every block is one cheap call per wallet, and here it would have given a three-minute warning.
    • Stop the flow into a compromised wallet. Binance 14 kept processing withdrawals and receiving deposits after the drain. The attacker swept it again after 40 minutes, and a third time 80 minutes in, right after another Binance wallet topped it up with 200M USDT.
    • Do not let a hot key command other wallets. Hot Wallet 34 trusted Binance 14, so one compromised key emptied two wallets.
    • Have issuer escalation ready before you need it. Tether and Circle froze $2.01B within an hour. Every minute counted: one wallet moved 130M USDT 48 seconds before its freeze.
    • Rehearsals are visible. A Tornado-funded address deploying a contract that only it can call, then delegating and sweeping its own wallets, is a pattern worth alerting on before it reaches yours.

    What we do not know yet

    How a laptop and a service container led to signatures on 50 EIP-7702 authorizations and on transfers from Binance hot wallets on eight chains; Binance has promised a full post-mortem. Where the 500,938 ETH on Ethereum and the Bitcoin will go. Whether attribution to North Korea holds. We will keep updating this analysis. Addresses and transaction hashes are linked above so that anyone can check our work.

    How Ondology Labs can help: We traced this incident with our own AI Investigator in the first hour. If your platform or your clients are affected, we provide transaction tracing across chains, incident investigations and court-ready blockchain forensics, including the evidence issuers and exchanges need before they freeze funds.

    Related reading: The first 24 hours after your crypto is stolen · Inside the CoinDCX $44M hack