Worked example · 2022-06
Harmony Horizon Bridge light-client verification economic-security gap — Ethereum / Harmony — 2022-06-23/24
Summary
The Harmony Horizon Bridge connected Ethereum (and Binance Smart Chain) to the Harmony chain. The bridge's security model reduced to a multisig threshold verification: outbound asset transfers required signatures from at least 2 of 5 designated validator addresses. The verification primitive — a plain 2-of-5 multisig check — was cryptographically correct: it accepted exactly those transactions that carried two valid signatures from the designated set, and rejected all others.
The structural vulnerability was at the economic-security layer, not at the cryptographic layer. A 2-of-5 threshold means that an attacker who compromises any two of the five signing keys controls the bridge. With approximately $100M in TVL, the bridge was a rational target: the attacker needed to compromise two hot-wallet servers (which held the signing keys in plaintext for operational signing purposes), not five. The verification model encoded "two signatures pass the check" but did not encode "two signatures should not be sufficient to authorise $100M in outbound transfers."
On June 23–24, 2022, the attacker compromised two of the five signer key-holding servers through off-chain infrastructure access, signed 14 extraction transactions across Ethereum and BSC, and drained the bridge. Post-incident, Harmony reconfigured the Ethereum-side bridge multisig from 2-of-5 to 4-of-5 — acknowledging that the original threshold had been economically inadequate for the bridge's TVL.
This framing — verification-primitive correct but economically insufficient — is the T10.005 sub-case (c) surface. The bridge's verification model was too weak for the asset value it protected, structurally parallel to a light-client that verifies headers but not validator-set transitions, or a proof system whose circuit encodes a consensus rule that is technically correct but too permissive. The Harmony Horizon case is the cleanest illustration that T10.005's verification-model-mismatch surface applies even when the verification primitive is a simple multisig rather than a zk-SNARK circuit — the gap between what the verification checks and what the defender needed it to check is the T10.005 attack surface.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| Pre-event (bridge design) | Horizon Bridge deployed with 2-of-5 multisig verification; threshold too low for ~$100M TVL | T10.005 (consensus-rule modelling mismatch — the verification model's economic insufficiency was the structural surface) |
| Pre-event (off-chain) | Attacker compromises Harmony infrastructure, gaining access to plaintext signer keys on hot-wallet servers | (off-chain entry vector) |
| 2022-06-23 ~12:30 | First extraction transactions on Ethereum side; two compromised signing keys meet the 2-of-5 verification threshold | T10.001 (key compromise) + T10.005 (verification-model-bypass — the verification primitive accepted the signatures because it was specified to accept any two) |
| 2022-06-23/24 | 14 transactions across Ethereum and BSC extract ~$100M | T10.001 extraction |
| 2022-06-24 | Harmony team publicly discloses | — |
| 2022-06-27 onward | Non-ETH assets swapped to ETH; ~$96M routed through Tornado Cash | T7.001 |
| 2022-06 (within days) | Elliptic attributes to Lazarus Group / APT38 | inferred-strong attribution |
| 2023-01-13 | DPRK actors begin layering >$60M through RAILGUN | T7.001 (alternate-mixer continuation) |
| 2023-01-23 | FBI confirms Lazarus Group / APT38 attribution | confirmed attribution |
| 2023-06 onward | Harmony reconfigures Ethereum-side bridge multisig from 2-of-5 to 4-of-5 | operator-side mitigation (verification-threshold correction) |
Realised extraction
Approximately $100M in ETH, BNB, USDT, USDC, and DAI.
OAK technique classification rationale
The classification as T10.005 (sub-case (c), Consensus-Rule Modelling Mismatch) alongside T10.001 (Validator-Signer Key Compromise) captures both layers of the incident. T10.001 captures the proximate entry vector — the attacker compromised two signing keys. T10.005 captures the structural precondition — the bridge's verification model was specified around a 2-of-5 threshold without encoding the economic-security requirement that the threshold should be infeasible to compromise given the bridge's TVL. The post-incident remediation confirms this reading: Harmony did not merely rotate the compromised keys (the T10.001 response); they raised the threshold from 2-of-5 to 4-of-5 (the T10.005 response — correcting the verification model). The two-Technique classification captures both the "how they got in" (T10.001) and the "why the threshold was too low" (T10.005).
Public references
- Elliptic forensic write-up (loss size, multisig-compromise vector, Tornado Cash laundering route, same-week Lazarus attribution)
- FBI press release (January 23, 2023) confirming Lazarus Group / APT38 attribution and tying to "TraderTraitor" DPRK campaign
- Halborn technical post-mortem (2-of-5 multisig configuration, plaintext-key hot-wallet hypothesis, post-incident move to 4-of-5)
- See companion example at
examples/2022-06-harmony-horizon.mdfor the T10.001-only framing and Lazarus-attribution timeline detail