The Binance attack, step by step
Binance estimates that about $6.3 billion was taken from it on 29 October 2026, and it found no evidence of any wallet private key leak. TRM Labs assesses that the most likely explanation is that the attacker could make Binance's signing system sign transactions of its choosing. Tap a step to see what Binance and TRM Labs report, and the KXCO control for it.
Four steps and a trace, five controls
Each dark node is a step in the attack, or Binance's trace, as reported. Switch the controls on to see the KXCO control for each step, and tap a step for the detail and its source.
-
Keys on the tokenSource: Binance, 30 Oct 02:23 UTC
The KXCO control: Keys on the token
On a hardware token that offers ML-DSA, keys are generated on the token. The private object is marked unextractable and sensitive, so the private key never enters host memory. With its mlKemMechanism option set, it does the same for ML-KEM keys.
A key that cannot leak can still be asked to sign, which is why the next four controls exist.
kxco-pq-hsm on npm -
Authority fixed at issueSource: Binance, 30 Oct 02:23 UTC
The KXCO control: Authority fixed at issue
Each service, agent or device gets its own identity, sponsored by a KYC-verified institution that signs its scope in at issuance. For payments on Armature the scope can cap each transfer, cap each day and list the allowed recipients. The relay checks it before an operation reaches the chain, the client checks it in front, and the check fails closed.
“Compromising the agent does not enlarge what the agent may do.”
kxco-pq-agent on npm -
Every action signedSource: TRM Labs, 30 Oct
The KXCO control: Every action signed
On Armature, each relay intent carries the agent's own ML-DSA signature over the operation and its payload, a fresh nonce, a timestamp and the hash of the sponsor's credential. The KXCO relay validates both the agent's signature and the sponsor's before it accepts any intent. Separately, every Armature validator verifies the institution's signature on the writes it makes, such as issuing a credential or anchoring a record, in consensus, so the block records that the institution authorised the write.
The record shows which operation each signature covered, under which credential, and when.
kxco-pq-chain on npm -
Live revocationSource: TRM Labs, 30 Oct
The KXCO control: Live revocation
Its anchored+live check asks KXCO's key registry, at the moment of verification, whether the signing key is active, revoked, rotated or expired. If the registry cannot answer, the check returns invalid.
Revoke a key once, and every verifier using the live check refuses it within the window the institution sets: answers are cached for 60 seconds by default, and a setting of zero looks the key up on every verification.
kxco-pq-network on npm -
A record that shows any editSource: Binance, 30 Oct 04:36 UTC
The KXCO control: A record that shows any edit
Through kxco-pq-sdk's AuditedHsm, every key generation, signature, decapsulation and deletion is written to a tamper-evident log. Any edit, gap or reordering fails verification and names the first entry that fails, and a checkpoint on Armature proves that at least a given number of entries existed at a given block height.
Who signed what, when and under which key has an answer an investigator can check by replaying the log.
kxco-pq-audit on npm
The scope checks run in KXCO's relay and client for operations on Armature. Bitcoin, Ethereum and the other public chains still check only that the right key signed.
The night of 29 October, in UTC
Step through the night as TRM Labs, The Crypto Times and Binance report it.
- 29 Oct, before 20:05 UTC · PreparationTRM says preparation began at least 36 hours before the theft.Source: TRM Labs
- 29 Oct, 20:05 UTC · The first wallets emptyBetween 20:05 and 20:09 UTC, five Binance wallets sent 233.46 million XRP to a single attacker address.Source: TRM Labs
- 29 Oct, 20:20 UTC · 50 delegations in one transactionThe operator submitted one Ethereum transaction carrying 50 EIP-7702 delegations, each signed by a Binance hot wallet and each pointing it to a sweeper contract that took instructions only from the operator.Source: TRM Labs
- 3 min 24 s after 20:20 UTC · The sweepThe hot wallet sent its entire balance to the attacker: 167,464 ETH and 63 tokens, including 1.615 billion USDT.Source: TRM Labs
- 29 Oct, 21:01 UTC · Tether freezesTether froze 971.1 million USDT in the main receiving wallet, 37 minutes after the main sweep.Source: TRM Labs
- 29 Oct, 21:04 UTC · Circle freezesCircle froze the 823 million USDC in the main receiving wallet, in coordination with law enforcement.Source: TRM Labs
- 29 Oct, 21:16 UTC · Binance's first statementBinance posted its first statement on X, about 52 minutes after the main Ethereum sweep.Source: The Crypto Times
- 30 Oct, 02:23 UTC · Binance's accountBinance said its initial investigation suggests the incident may involve a compromised DevOps engineer's laptop, through which an attacker reached a service container and submitted withdrawals nobody had authorised. It reported no evidence of any wallet private key leak, about $3 billion frozen on-chain, and that it will cover all losses.Source: Binance
Built once, for the dates NIST has set
Every control above is a signature, and a signature has to hold for as long as the record matters. NIST IR 8547 states that NIST will deprecate quantum-vulnerable cryptography after 2030 and disallow it under NIST standards and guidelines after 2035. KXCO's packages sign with ML-DSA from FIPS 204 and establish keys with ML-KEM from FIPS 203 today.
- The self-testing entry point in kxco-post-quantum 1.13.0 passed all 3,522 test cases NIST's Demo test server graded on 28 October 2026, with zero failures.
- 1,793 NIST ACVP vectors passed and none failed. The other 310 in the set are pairings the library refuses as weaker than the parameter set.
- 225 interoperability checks run against liboqs, Bouncy Castle and the Python reference implementations, in both directions, with zero failures.
- kxco-post-quantum was downloaded 4,159 times from npm in the 30 days to 28 October 2026, and its monthly downloads have risen every month since June, from 506 to 3,342.
- Its OpenSSF Scorecard rates the repository 9.8 out of 10, with 15 checks at the full 10, code review, signed releases and fuzzing among them.
Institutions and government agencies that want to see these controls run against their own estate can write to [email protected].
Write to [email protected]The post-quantum packages and their evidencekxco-pq on npmkxco-post-quantum on npm, with its downloadsThe OpenSSF Scorecard for kxco-post-quantum