Worked example · 2026-04
KelpDAO rsETH — nobody stole a signing key; the verifier signed honestly over a chain it was being lied to about — KelpDAO rsETH / LayerZero OFT / Unichain → Ethereum — 2026-04-18
Explicitly not OAK-T10.001 (Validator / Signer-Key Compromise). No cryptographic or signing key was stolen. This is the load-bearing correction in this file, and it inverts the mitigation: the DVN's signature over the fraudulent message was cryptographically valid and produced by the legitimate key, because the key was never the target. Key hygiene, HSMs, signer rotation and threshold-signature hardening would each have left this attack completely unaffected. See Discussion for the correction record.
Summary
KelpDAO issues rsETH, a liquid restaking token, and deployed it across chains using LayerZero's OFT standard. Cross-chain transfers are authorised by a DVN (Decentralized Verifier Network) — an off-chain verifier that observes the source chain and attests that the source-side event happened, on the strength of which the destination-side contract acts.
rsETH's OApp was configured with a single verifier: the LayerZero Labs DVN. No second DVN had to agree before funds moved.
The intrusion began on 2026-03-06, six weeks before anything was stolen. An attacker socially engineered a LayerZero Labs developer, harvested session keys, and used them to pivot into LayerZero's RPC cloud environment. There they obtained the list of RPC endpoints the DVN was querying, gained access to two independent internal nodes running on separate clusters, and replaced the software on them — patching node memory so that LayerZero's own tooling continued to receive correct responses, while the responses served to the DVN were manipulated.
To close the last gap, the attacker ran a denial-of-service attack against an external RPC provider, so that DVN signing could draw only on the two internal nodes they had already compromised.
On 2026-04-18, the poisoned nodes reported a burn of rsETH on Unichain. It had not happened. The DVN — reading only the nodes it could reach, all of which agreed — produced a valid attestation for the message. The Ethereum-side contract honoured it and released 116,500 rsETH, about $292M. A follow-up attempt against a further ~$95M failed.
The attacker then supplied the unbacked rsETH to Aave V3 as collateral and borrowed against it, converting a Kelp loss into a system-wide one. Aave froze all rsETH and wrsETH reserves by 19:00 UTC the same day, set LTV to zero and adjusted interest-rate models, facing up to ~$230.1M in bad debt. The DeFi United coalition raised ~$160M toward it.
Mandiant, CrowdStrike and zeroShadow attributed the operation to DPRK's TraderTraitor / UNC4899. LayerZero Labs published a detailed incident report, made multiple DVN attestors a baseline requirement, and rebuilt the compromised cloud infrastructure with hardened baselines and just-in-time privilege elevation. KelpDAO moved rsETH to Chainlink CCIP.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| (standing) | rsETH deployed as a LayerZero OFT; the OApp is configured with a single verifier (1-of-1 DVN) | (latent single point of failure) |
| 2026-03-06 | LayerZero Labs developer socially engineered; session keys harvested | T15.001 → T15.004 |
| 2026-03-06 onward | Pivot into LayerZero's RPC cloud environment; the RPC list the DVN queries is enumerated | (pre-positioning) |
| before 04-18 | Two independent internal RPC nodes on separate clusters compromised; memory patched so monitoring sees truth and the DVN sees tampered data | T10.002.001 — source forgery, infrastructure level |
| before 04-18 | DoS against an external RPC provider forces DVN signing onto the two poisoned internal nodes | (redundancy removed on demand) |
| 2026-04-18 | Poisoned nodes report a burn on Unichain that never occurred; DVN issues a cryptographically valid attestation; Ethereum contract releases 116,500 rsETH (~$292M) | T10.002.001 exploitation |
| 2026-04-18 | Follow-up attempt against a further ~$95M fails | (contained) |
| 2026-04-18 | Attacker deposits unbacked rsETH into Aave V3 and borrows against it | T14.003 — cascade initiation |
| 2026-04-18, ~19:00 | Aave freezes all rsETH / wrsETH reserves across V3, LTV → 0, interest-rate models adjusted | (containment) |
| 2026-04-20 | Aave service providers / Llamarisk publish incident reports across Ethereum and Arbitrum markets; exposure scenarios put at ~$124M–$230.1M | (impact assessment) |
| 2026-04-23 → 04-26 | DeFi United coalition forms (Aave, Lido, Ether.fi, Ethena, Mantle, Aave DAO); ~$160M of ~$200M raised | (cross-protocol response) |
| 2026-05-20 | LayerZero Labs incident report published: session-key entry, RPC poisoning, DoS, single-verifier configuration; no keys stolen; attribution to TraderTraitor / UNC4899 | (forensic disclosure) |
| after | LayerZero enforces multiple DVN attestors as baseline, rebuilds cloud infrastructure with just-in-time privilege elevation; KelpDAO migrates rsETH to Chainlink CCIP | (remediation) |
What defenders observed
- The gap between intrusion and theft was six weeks, and every day of it was inside someone else's infrastructure. Initial access on 2026-03-06, funds on 2026-04-18. This is not a smash-and-grab against a contract; it is a patient infrastructure operation with a bridge as the payout, which is the DPRK bridge-targeting pattern the corpus records elsewhere. The detection opportunity was not on 04-18 — it was in the six weeks of anomalous access to an RPC cloud environment.
- Selective lying is what defeated monitoring, and it should be assumed by default now. The nodes returned correct data to LayerZero's own tools and false data to the DVN. Any assurance derived from "our dashboards looked normal" is worthless against an attacker who can choose per-consumer responses. Verification must be performed by the consumer that acts on the data, not by a sibling system reading the same nodes.
- The attacker removed the redundancy rather than defeating it. There was an external RPC provider. It was DoS'd. Redundancy that can be reduced by an attacker at the moment of use is a liveness feature, not a security control — and the correct test is whether the system fails closed when its sources shrink to a subset. Here, shrinking the source set to two agreeing nodes was treated as consensus.
- Single-verifier configuration is the whole difference between contained and catastrophic. LayerZero's report is explicit that the blast radius was bounded to rsETH as a direct consequence of the OApp's single-DVN setup, with no contagion to other assets or applications. The same intrusion against a 2-of-3 configuration produces a failed attestation and an alert, not a payout. The choice was made at configuration time, by an integrator, long before any attacker existed.
- A custody reconciliation catches this at payment one, as it does for every other anchor in this class. Release 116,500 rsETH only if the locked/issued invariant moved by 116,500. The invariant broke on the first release and nothing was reading it.
- The contagion path ran through the attacker's own deposit, not through price alone. The attacker took the unbacked rsETH into Aave V3 as collateral and borrowed. That converts a bridge failure into a lending-market failure immediately and deliberately, without waiting for a depeg to propagate. Listing an asset whose supply integrity depends on a third party's off-chain verifier means inheriting that verifier's failure modes onto your own balance sheet — which is the argument for supply-attested collateral (proof of backing) rather than price-attested collateral.
Root-cause evidence
- Technique: OAK-T10.002.001
- Source: https://layerzero.network/blog/layerzero-labs-kelpdao-incident-report
- Source type: operator
- Confidence: confirmed
- Evidence: LayerZero Labs' incident report attributes the loss to forged source-chain events fed to a single DVN, with no signing key stolen.
Public references
[layerzerokelpreport2026]— LayerZero, "LayerZero Labs KelpDAO Incident Report" (2026-03-06 social engineering of a LayerZero Labs developer, session-key harvest, pivot into the RPC cloud environment; memory-patched internal nodes returning correct data to monitoring and tampered data to the DVN; DoS forcing DVN signing onto two compromised nodes; single-verifier OApp configuration; 116,500 rsETH / ~$292M; no keys stolen; attribution to TraderTraitor / UNC4899 by Mandiant, CrowdStrike and zeroShadow; remediation: multiple DVN attestors as baseline, cloud rebuild, just-in-time privilege elevation): https://layerzero.network/blog/layerzero-labs-kelpdao-incident-report[layerzerokelpstatement2026]— LayerZero, "KelpDAO Incident Statement" (initial statement; isolation of impact to the rsETH configuration): https://layerzero.network/blog/kelpdao-incident-statement[chainalysiskelp2026]— Chainalysis, "Inside the KelpDAO Bridge Exploit" (RPC list enumeration; two independent internal nodes on separate clusters; DDoS against an external RPC node; 1-of-1 DVN; false burn events reported on Unichain; 116,500 rsETH / ~$292M; follow-up attempt ~$95M; no session-key or developer-key breach of signing material — infrastructure manipulation; TraderTraitor attribution): https://www.chainalysis.com/blog/kelpdao-bridge-exploit-april-2026/[blockaidkelp2026]— Blockaid, "How a Single LayerZero DVN Compromise Drained $292M from KelpDAO" (single-verifier analysis): https://blockaid.io/blog/how-a-single-layerzero-dvn-compromise-drained-292m-from-kelpdao[defiantkelp2026]— The Defiant, "LayerZero Post Mortem Shows Lazarus Group Stole $290M From KelpDAO via RPC Node Compromise": https://thedefiant.io/news/hacks/lazarus-kelpdao-290m-layerzero-rpc-hack-da50p3[cryptotimeskelp2026]— The Crypto Times, "LayerZero Details Single-Verifier Flaw Behind $292M KelpDAO Exploit" (2026-05-20): https://www.cryptotimes.io/2026/05/20/layerzero-details-single-verifier-flaw-behind-292m-kelpdao-exploit/[coindeskkelpaave2026]— CoinDesk, "Aave could face up to $230 million in losses after Kelp DAO bridge exploit triggers DeFi chaos" (2026-04-20; scenario split ~$124M spread vs ~$230M isolated to L2s, concentrated on Arbitrum and Mantle): https://www.coindesk.com/tech/2026/04/20/aave-could-face-up-to-usd230-million-in-losses-after-kelp-dao-bridge-exploit-triggers-defi-chaos[coindeskdefiunited2026]— CoinDesk, "Aave raises nearly 80% of the $200 million it needs to cover bad debt left by Kelp DAO exploit" (2026-04-26; ~$160M raised): https://www.coindesk.com/business/2026/04/26/aave-raises-nearly-80-of-the-usd200-million-it-needs-to-cover-bad-debt-left-by-kelp-dao-exploit[aavegovrseth2026]— Aave Governance, "rsETH Incident Report (April 20, 2026)" (reserve freeze across V3 deployments, LTV to zero, interest-rate model adjustment): https://governance.aave.com/t/rseth-incident-report-april-20-2026/24580[bitcoinnewskelpccip2026]— news.bitcoin.com, "KelpDAO Slams LayerZero After $300M Exploit, Shifts rsETH to Chainlink CCIP": https://news.bitcoin.com/kelpdao-slams-layerzero-after-292m-exploit-shifts-rseth-to-chainlink-ccip/
Discussion
Correction record (2026-09-16)
This file previously classified the incident as OAK-T10.001 (Validator / Signer-Key Compromise), described the mechanism as "a compromise of LayerZero's messaging infrastructure, which functionally serves as the signer," and recorded the attribution as pseudonymous. All three were wrong, and are corrected above. Per CORRECTIONS.md, the superseded claim is recorded here rather than silently removed.
The provenance is worth stating plainly, because it is a repeat of a known failure mode in this corpus. The original text was written in the v0.1 bulk release (commit f32645a), while the LayerZero investigation was still open — the file said so itself, listing "key-theft, insider action, or protocol-level vulnerability" as open possibilities and inviting a future update. Its Public references section contained no URLs at all, only generic descriptions of documents that would presumably exist ("Kelp DAO official incident announcement and post-mortem", "On-chain forensic analysis of the forged bridge message"). The facts landed publicly in May 2026 — LayerZero's two-part incident report, Chainalysis's and Blockaid's analyses — and the file was never revisited. A sourceless placeholder aged into a cited classification, which is precisely the pattern the 2026-07 fixture-provenance sweep was run to catch, here occurring in a release file rather than a fixture.
Four specific facts were corrected against the sources now cited:
- No signing key was compromised. The DVN's attestation was valid and produced by the legitimate key. T10.001 is therefore excluded, not merely de-prioritised.
- The attribution is confirmed, not pseudonymous. TraderTraitor / UNC4899, per Mandiant, CrowdStrike and zeroShadow, named in LayerZero's own report. The corpus's largest 2026 bridge incident was sitting unlinked to
OAK-G01. - The source chain was Unichain, not Arbitrum as the previous text implied in its bridging example.
- The Aave cascade mechanism was wrong. The previous text described pre-existing rsETH-collateralised loans falling underwater. What actually happened is that the attacker deposited the unbacked rsETH into Aave V3 and borrowed against it — an active step, not a passive repricing. Several unsourced figures from the prior version (a flat "~$200M in rsETH-collateralised loans outstanding", named DEX venues, a treasury-capacity claim) have been replaced with sourced ones or dropped.
Why the class matters more than the correction
With the mapping fixed, this becomes the largest anchor for OAK-T10.002.001 by two orders of magnitude, and it establishes a third sub-shape alongside parse-level (Across) and semantic (Coreum, Chainflip): (c) infrastructure-level source forgery, in which the observer's data source is subverted so that it parses correctly and reasons correctly over events that never occurred. The distinction is operationally sharp. Against (a) the fix is a type check on the parsed record; against (b) it is a custody reconciliation; against (c) neither the parser nor the message is defective — the fix is source diversity with integrity attestation, quorum across independently operated observers, and fail-closed behaviour when the source set shrinks.
The sub-shape has a second anchor at the opposite end of the loss scale: Long (2026-09-14, 46.7928 WETH / ~$118K), where a third-party RPC fed a custodial bridge's keeper fabricated withdrawal events and the keeper released from its Robinhood Chain vault. Same shape, one four-hundredth the size, no state actor, no six-week operation — which is the useful part. The technique does not require DPRK-grade capability; at the small end it requires only that a keeper trust one RPC provider.
The corpus-level reading is the uncomfortable one. OAK carried this incident for five months under a mapping that pointed defenders at key management — the one control surface that was never in play. A framework's cost of a wrong mapping is not the wrong label; it is every reader who checked their HSM policy and considered the lesson applied.