Case file · 29 October 2026 · attributed to North Korea by the FBI

Five months of preparation. Four minutes to empty the wallets.

A poisoned download, a fake job interview, an internal AI tool with too much reach, and one forgotten token on a laptop. Each link in the chain had a control that could have broken it.

A plain-words reading of Binance's initial incident report (published 3 November 2026), by a security engineer who builds the same controls in a lab. Not affiliated with Binance. All figures are Binance's.

$6.34Bin digital assets impacted
$2.85Bfrozen or intercepted so far
4 minfor 233 million XRP to leave five wallets
5 mofrom first foothold to the theft

Watch it happen

The whole theft, in under a minute

Five months on one map. Press a scene to jump to it, or drag the bar. The chain below then takes each link slowly.

Incident replay · the whole theft in 54 seconds0:00 / 0:54
Replay of the 29 October 2026 Binance theftAn illustrated map in four zones: outside, Binance engineering, wallet systems and the public blockchain. In June a tampered Homebrew reaches Laptop A and is caught. In September a fake recruiter on a video call delivers an assignment to Laptop B, which swaps a developer tool and gives the attackers a foothold. On 20 October an internal AI tool carries them to Laptops A and C, where a deployment token sits on disk. On 29 October the token, used from Laptop C, deploys a container that reaches the wallet signing service; from 20:05 transfers drain XRP, SOL, OP and BTC from the hot wallet vault. Withdrawals are suspended and $2.85 billion frozen, but an EIP-7702 permission on-chain keeps moving ETH until 23:56; it is cleared at 00:10.$ _29 Oct 2026$0.00BLEFT BINANCE'S HOT WALLETS$2.85BFROZENOUTSIDEBINANCE ENGINEERINGWALLET SYSTEMSBLOCKCHAINpublic, outsideBinance's systems>_ 0xAttackersattributed by the FBI: DPRKthey learn the wallet teamTampered Homebrewfound by a web searchREC"Project Director"real job platform, fake companyLaptop AWallet DevOpsLaptop CWallet SoftwareLaptop BSoftware engineerInternal AI toolreaches across machinesContainer platformdeploys with a tokenWallet signing serviceapproves paymentsHot walletsXRPXRPSOLSOLOPOPBTCBTCETHETH233.46M XRP in 4 minWithdrawalsOPENSUSPENDEDAttacker addresseswhere the funds land{ }Attacker contractEIP-7702 permissioncleared 00:1050 transactionscaught · laptop replacedassignment.zip openedtool swapped · EDR: no matchdeploy token on diskA's token, used from Csigning outside the processalert fires · first wave gone1234567
29 Oct 2026 $6.34 billion left Binance's hot wallets in one evening. The attack behind it began five months earlier.

The attack chain

Seven links. Break any one, and the money stays.

Scroll through the chain. Each stage shows what happened in plain words, the control that could have stopped it, and the same control in my own lab: Built where it already runs, Building where it is under way, Next where this case file put it on the list.

1 · June 2026Engineer A, Wallet DevOps

A poisoned download, caught, but not forgotten

Engineer A searched the web for a popular AI coding tool and installed a tampered copy of Homebrew, the installer Mac developers use for almost everything. Binance's security team spotted the anomaly, replaced the laptop and rotated every related credential.

The attackers still won something. They now knew who Engineer A was, what the wallet infrastructure team did, and who worked alongside them.

The controlInstall developer tools only from verified sources, and check the signing key against the vendor's own published fingerprint, never against a number someone pastes to you. Treat a caught intrusion as reconnaissance that succeeded: the whole team is now a target.
In my lab BuildingVAULT01, the lab's secrets server, installs HashiCorp's packages only from a source pinned to their signing key, and that key is checked against the fingerprint HashiCorp publishes, not one copied from a guide.
2 · September 2026Engineer B, Software

The job interview that was never a job

Engineer B was approached on a real job-hunting platform by a "Project Director". There was a live video interview with an "HR representative" who shared a personal social media account to build trust, then a second interview with a "CEO" of a company that did not exist.

Near the end, Engineer B was asked to download a take-home "assignment" onto his work computer. The assignment carried the malware.

The controlJob-hunting and personal downloads stay off work devices, as policy, not advice. Any code from outside runs in a throwaway virtual machine first. Staff who touch money systems get specific briefings on the fake-recruiter playbook, which the FBI has warned about for years.
In my lab NextA throwaway analysis VM on the hypervisor, reset from a clean snapshot after every use, so outside code never runs on the admin laptop. The rule behind it: the laptop holds keys, so it never runs strangers' code.
3 · September 2026Engineer B's laptop

A trusted tool, quietly replaced

The malware swapped a real developer tool on the laptop for a look-alike that answered to the attackers. It was new code, so the endpoint protection did not recognise it, and it cleaned up its own traces afterwards.

From that moment the attackers had a quiet, durable foothold inside Binance's engineering network.

The controlWatch the tool paths themselves. File integrity monitoring raises an alert when a binary a developer relies on changes outside a package update. Pair it with detection that looks at behaviour, such as a developer tool opening a connection to an unknown server, rather than only known-bad signatures.
In my lab NextWazuh already watches every enrolled host. The snippet below points its file integrity monitoring at developer tool paths, so a changed binary under /usr/local/bin or /opt becomes an alert, then I attack it to prove the rule fires.
Detection: what to watch forATT&CK T1574 Hijack execution flow · T1070 Indicator removal
Tool binary changed
A file inside a package manager's install tree changes when no package manager is running. Homebrew's /opt/homebrew/Cellar, pyenv's libexec, /usr/local/bin. Legitimate changes come from brew, apt or pip; anything else is suspect.
Delete, then replace
The same path is deleted and recreated within seconds with a different size or hash. Real upgrades write a new versioned folder; a swap in place is the tell the report describes.
New or changed symlink
A link in a tool's bin directory is added or repointed outside an install. Links are how a fake tool gets called instead of the real one.
Setup step spawns a shell
A project's install or setup step (npm install, pip install, make, a setup script) starts an interactive shell or a long-lived background process. Installs fetch and build; they should not leave a shell running.
Developer tool phones home
A tool that normally works offline, such as a version manager, opens a connection to a host that is not a known package registry. Endpoint network telemetry catches this when signatures do not.
Files no longer match
Scheduled checks against the package manager's own records: dpkg --verify on Debian and Ubuntu, rpm -Va on Red Hat. Any tool file that differs from what was installed gets a ticket.
<!-- Wazuh agent: watch developer tool paths in real time -->
<syscheck>
  <directories realtime="yes" check_all="yes">/opt/homebrew/Cellar,/opt/homebrew/bin</directories>
  <directories realtime="yes" check_all="yes">/usr/local/bin,/usr/local/lib</directories>
</syscheck>
4 · 20 October 2026Engineers A and C

An internal AI tool became the bridge

From Engineer B's compromised laptop, the attackers used one of Binance's own internal AI tools to reach the computers of Engineer A (Wallet DevOps) and Engineer C (Wallet Software). The company's assistant became the road between machines.

On Engineer A's computer they found the prize: a token that allowed containers to be deployed, sitting on disk.

The controlAn AI tool is an identity, and it needs the same governance as a person: its own account, the narrowest permissions that do its job, no reach across devices it has no business touching, every action logged, and one switch that turns it off.
In my lab BuiltMy AI agent has its own Keycloak identity: a confidential client that gets five-minute tokens and nothing else. Disabling it in one place cut off every token request within a minute, and Keycloak's event log recorded client_disabled. Chapter 23, section 11.
5 · 20 to 29 OctoberEngineer A's deployment token

One long-lived key, in the wrong place

The deployment token did not expire, and it worked for whoever held it. Nine days later the attackers logged on to Engineer C's computer and used Engineer A's token from there. Nothing stopped a key being used from a different person's machine.

The controlNo long-lived credentials on laptops. Deployment credentials come from a secrets manager, live for minutes, and are bound to the identity and device that asked for them. A key used from an unexpected device is itself an alert, which is only possible when logs show the real device.
In my lab BuildingVAULT01 exists to retire exactly this: static secrets replaced by short-lived ones issued per request and audited. Already built: since the Tailscale fix, every lab log shows the real connecting device, so "right key, wrong machine" is something Wazuh can see. Chapter 5.
6 · 29 October, 17:15 to 20:09 UTCThe wallet signing service

Four minutes

Between 17:15 and 19:56 the attackers deployed a container with the stolen token and ran a script that reached the wallet signing service, the system that approves outgoing payments. At 20:05 they began signing transfers outside the normal withdrawal process.

By 20:09, 233.46 million XRP had left five hot wallets. Solana, Optimism and then 18,270 Bitcoin followed. Binance's alert for large transfers fired after the first wave was already gone.

The controlSigning policy that no single token can bypass: limits per transaction and per hour, a second approver above a threshold, and the bulk of funds in cold storage that no online service can sign for. Alerts must fire on the first unusual signature, not on the total.
In my lab BuiltThe same principle at smaller scale: the agent's identity can prove who it is, but what it may do is a separate, narrow policy. Detection rules in Wazuh are written for the first odd event, then tested by running the attack against them.
7 · 29 October, 20:09 to 00:10 UTCContainment

They switched off withdrawals. The theft continued.

Binance suspended withdrawals, worked with partners to freeze tokens, and froze $2.85 billion. But the attackers had used an Ethereum feature called EIP-7702 to give their own smart contract standing rights over a Binance wallet. That permission lived on the blockchain, not in Binance's systems, so Binance's off switch did not reach it.

The wallet used multi-party computation, so there was no single key to cancel the permission with. A special procedure had to be built on the night. The last unauthorised transfer finalised at 23:56. The permission was cleared at 00:10.

The controlDesign the revocation before the incident, and rehearse it. Know exactly what your "stop" button does not stop: standing permissions, tokens already issued, sessions already open. Time to revoke is a metric to measure in a drill, not to discover at 11 pm.
In my lab BuiltThe Keycloak off-switch test taught the same lesson in miniature: disabling the agent blocks every new token at once, but a token already issued stays valid until it expires. That is why its lifetime is five minutes, and why the first question for any system is "how do I revoke, and how long does it take?"

The night of 29 October

Seven hours, in Binance's own times

The attackers were inside the signing path for almost three hours before the first transfer. Containment took four more. All times are UTC.

17:0019:0021:0023:0000:10

Attackers log on to Engineer C's computer with Engineer A's stolen token, deploy a container and run their script. The signing service is now reachable.

Five hot wallets start sending XRP to an attacker address. 233.46M XRP in four minutes

Solana and Optimism wallets drained. ≈970,500 SOL · 44.2M OP

An internal alert fires for large-volume transfers. The investigation begins. Then a Bitcoin wallet is emptied. 18,270 BTC

Using the signing service, the attackers submit 50 transactions that give their own smart contract standing rights over a Binance Ethereum wallet (EIP-7702). This permission lives on-chain.

Binance suspends withdrawals, shuts hot wallet services, and coordinates token freezes with partners. $2.85B frozen. The on-chain permission is untouched by any of it.

The final unauthorised transfer finalises. 2,961.9 ETH

30 October. Binance clears the delegation from the wallet with a new authorisation to the zero address. Contained.

Why the off switch failed

A permission that lives outside your building

Suspending withdrawals closes Binance's own gate. The attackers had built a second road that never passed through it.

BINANCE HOT WALLETfunds held onlineto pay withdrawalsWITHDRAWALSSUSPENDEDblockedEIP-7702standing permissionwritten on-chainATTACKERCONTRACTmoves funds itselfClosing the gate does nothing to a permission the gate never sees.

Three things made containment slow

  • The permission was on the blockchain, independent of Binance's withdrawal systems. Switching those systems off changed nothing on-chain.
  • There was no single key. The wallet used multi-party computation, which is good against theft of one key, but it meant revoking the permission needed a procedure that had to be written during the incident.
  • Fifty transactions had been used to set it up, so undoing it took more transactions, each needing the same care.

The lesson travels well beyond crypto. Every identity system has permissions that outlive the moment you press stop: refresh tokens, API keys, sessions, standing delegations. The time to find out how long they live is in a drill.

By the numbers

What Binance has disclosed

$6.34BDigital assets impacted
$2.85BFrozen or intercepted, subject to reconciliation
98%Of impacted token assets replenished by 31 October
57Suspected North Korea-linked attempts stopped by Binance in 2026 before this one
233.46MXRP sent in four minutes
18,270BTC from one hot wallet
50Transactions used to set up the on-chain permission
3h 56mFrom first transfer (20:05) to the permission cleared (00:10)

For defenders

The same chain, in the language detection teams use

Each stage mapped to MITRE ATT&CK, the shared vocabulary for attacker behaviour, with the control and where my lab stands on it.

StageATT&CK techniqueControlIn my lab
Tampered installerT1195.002 Supply chain compromise: softwareVerified sources and signing keys; a caught intrusion treated as reconnaissanceBuilding VAULT01 package source pinned to a checked signing key
Fake interview, "assignment" on a work laptopT1566 Phishing · T1204.002 User execution: malicious filePersonal activity off work devices; outside code in a disposable VM; targeted awareness for money-system staffNext A throwaway analysis VM; the admin laptop never runs outside code
Developer tool replacedT1574 Hijack execution flow · T1070 Indicator removalFile integrity monitoring on tool paths; behaviour-based endpoint detectionNext Wazuh file integrity monitoring on tool paths, tested by attack
Internal AI tool used to reach other machinesT1021 Remote services · T1078 Valid accountsAI tools as governed identities: least privilege, no cross-device reach, full audit, one off switchBuilt Agent client in Keycloak with five-minute tokens and a proven off switch (chapter 23)
Deployment token found on a laptopT1552.001 Credentials in filesShort-lived credentials from a secrets manager, bound to identity and deviceBuilding VAULT01 to retire static secrets; real device addresses in every log already (chapter 5)
Token used from another engineer's machineT1078 Valid accounts · T1610 Deploy containerAlert on a key used from an unexpected device; deployments only through an approved pipelineBuilt Tailscale attribution fix: Wazuh sees which device each logon came from
Signing outside the normal processT1657 Financial theftSigning policy with limits and second approvers; cold storage; alert on the first unusual signatureBuilt Identity proves who; a separate narrow policy decides what; detections tested against the attack
On-chain permission survived the shutdownT1098 Account manipulation (standing delegation)Revocation designed and rehearsed in advance; know what "stop" does not stopBuilt Issued tokens live until expiry, so lifetimes are minutes and revocation is the first question asked

Every link in this chain was an identity problem before it was a crypto problem: who is this person, is this tool allowed here, whose key is this, and can I switch it off. That is the work.

Sources. Binance, "29 October Binance Security Incident: Initial Findings and Response Update", 3 November 2026. Attribution to the Democratic People's Republic of Korea is the FBI's, as cited in that report. Figures are Binance's and are subject to its ongoing investigation and independent review.

Author. Noble Antwi. This is independent analysis of a public report; it is not affiliated with or endorsed by Binance. The lab references point to the public enterprise-security-homelab repository.

ATT&CK is a registered trademark of The MITRE Corporation; technique mappings here are the author's.

Noble Antwi, the author
Noble AntwiCloud Security & Identity Engineer · M.S. Cybersecurity & Digital Forensics, Illinois Tech · Get in touch