Skip to content

Commit a1971dd

Browse files
iZonexclaude
andcommitted
feat: add EchoProtocol eBTC bridge signature-verification bypass example
EchoProtocol × Monad — 2026-05-19 — $76.64M notional / $867.7K realised. T10.002 committee-signature-validation bypass → DEFAULT_ADMIN_ROLE capture → unbounded mint → Curvance lending-market monetization → Tornado Cash exit. 14th bridge attack in May 2026. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent cec099f commit a1971dd

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# EchoProtocol eBTC Bridge Signature-Verification Bypass and Unbounded Mint — Monad — 2026-05-19
2+
3+
**OAK Techniques observed:** OAK-T10.002 (Message Verification Bypass — primary: the bridge's committee multisig threshold validation accepted forged or replayed signatures as legitimate, triggering `grantRole(DEFAULT_ADMIN_ROLE)` on the eBTC token contract. The Hacken audit report previously documented the bridge's reliance on M-of-N validator signatures; the attacker bypassed this validation to forge a cross-chain message that the contract treated as authentic), OAK-T9.004 (Access Control Misconfiguration — dual failure: no mint cap (`totalSupply + amount <= MAX_SUPPLY`) and no rate limit on the eBTC bridge contract, converting a single forged message into an unbounded 1,000 eBTC mint), OAK-T7.003 (Cross-Chain Bridge Laundering — WBTC bridged from Monad to Ethereum via Relay/LiFi), OAK-T7.001 (Mixer Routed Hop — 384 ETH sent to Tornado Cash)
4+
5+
**Attribution:** **pseudonymous** — attacker address `0x6A0109...3415` identified on-chain; no attribution to a named group at time of writing.
6+
7+
**Loss:** **notional ~\$76.64M** (1,000 eBTC minted at prevailing BTC price of ~\$76,640/BTC); **realised ~\$867.7K** (11.29 WBTC borrowed against deposited unbacked eBTC via Curvance's eBTC lending market, bridged to Ethereum, swapped for ~384 ETH, routed into Tornado Cash). The notional-to-realised ratio (~88:1) reflects Curvance's collateral factor and WBTC market liquidity constraints — the attacker could only extract what the lending market would advance against the unbacked collateral. No recovery announced.
8+
9+
**Key teaching point:** EchoProtocol is the **14th bridge attack in May 2026** and the canonical 2026 **signature-validation-bypass → unbounded-mint** chain on a non-EVM L1. Three structural failures chained: (1) the bridge's committee multisig threshold validation did not strictly verify *whether the signer is a current committee member* and *whether the signed content exactly matches the message hash* — the same signature-verification gap that enabled Wormhole 2022; (2) the mint function had no cap — no `require(totalSupply() + amount <= MAX_SUPPLY)`, no per-transaction limit, no per-address ceiling; (3) the bridge had no rate limiting on the outflow channel. Monad CEO Keone Hon publicly cited the April 2026 KelpDao rsETH incident as a reference point: with rate limits in place, the ~$200M in losses could have been significantly reduced. The incident anchors the T10.002 + T9.004 intersection on Monad, extending OAK's non-EVM bridge coverage beyond the Polkadot/Hyperbridge and Ethereum/LayerZero cases.
10+
11+
## Summary
12+
13+
EchoProtocol is a cross-chain BTC bridge operating on Monad, issuing eBTC (bridged BTC) under a "lock-and-mint" model — users lock real BTC on Bitcoin, a committee of validators signs a cross-chain message attesting to the lock event, and the bridge contract on Monad mints equivalent eBTC. The security guarantee rests entirely on the cross-chain message verification: the bridge contract must confirm that the mint instruction is endorsed by signatures from a sufficient number of current committee members.
14+
15+
On May 19, 2026, an attacker exploited a vulnerability in the bridge's signature-validation logic to forge a cross-chain message that the contract accepted as legitimate. The forged message executed `grantRole(DEFAULT_ADMIN_ROLE, attacker)` on the eBTC token contract on Monad. From there, the attacker followed a seven-step chain:
16+
17+
1. **Forge cross-chain message** — submit a crafted message with signatures that pass the committee threshold check without satisfying the *current committee member* or *message-hash* binding requirements.
18+
2. **Capture DEFAULT_ADMIN_ROLE** — the bridge executed `grantRole(DEFAULT_ADMIN_ROLE, 0x6A0109...3415)` on the eBTC contract.
19+
3. **Remove original admin**`revokeRole(DEFAULT_ADMIN_ROLE, 0xA338...9A3B)`, locking the legitimate team out.
20+
4. **Escalate to MINTER_ROLE**`grantRole(MINTER_ROLE, self)`.
21+
5. **Unbounded mint**`mint(attacker, 1,000 eBTC)`, creating ~$76.64M notional with zero BTC backing.
22+
6. **Monetize via Curvance** — deposit 45 eBTC (~$3.45M notional) as collateral → borrow 11.29 WBTC (~$867.7K) against it.
23+
7. **Exit** — bridge WBTC to Ethereum via Relay/LiFi → swap for ETH → route 384 ETH (~$821.7K) into Tornado Cash.
24+
25+
The attack executed end-to-end in a handful of transactions within a single day.
26+
27+
## Why this is structurally significant
28+
29+
The EchoProtocol case extends OAK's cross-chain-message-forgery class to Monad — the third distinct L1 ecosystem to produce a high-impact bridge-message-forgery incident in Q2 2026, following KelpDao (Ethereum/LayerZero, April 18) and Hyperbridge (Polkadot, April 13). The class is now unambiguously cross-chain, not EVM-specific.
30+
31+
Two structural features distinguish the EchoProtocol case:
32+
33+
1. **Committee-signature-validation bypass, not infrastructure compromise.** KelpDao was a LayerZero infrastructure compromise (the messaging provider was breached); Hyperbridge was an MMR-proof-reuse flaw (an outdated valid proof accepted for a different message). EchoProtocol is the **signature-validation** variant: the attacker manipulated or replayed validator signatures to bypass the M-of-N threshold, targeting the committee-verification logic itself. This is the Wormhole 2022 pattern recurring on a new L1 in 2026 — the same vulnerability class, the same downstream effect, a different chain.
34+
35+
2. **The notional-to-realised gap as a defender signal.** The attacker minted 1,000 eBTC ($76.64M notional), deposited only 45 eBTC (4.5%) into Curvance, and walked away with $867.7K realised. The remaining 955 unbacked eBTC sit stranded — the attacker abandoned 95.5% of the notional mint because the lending market's WBTC liquidity was the binding constraint. This is structurally identical to Hyperbridge ($1.2B notional, $2.5M realised) and reinforces the pattern: **bridge-message-forgery exploits scale infinitely on the mint side but are bounded on the cash-out side by destination-chain liquidity.** The structural defender takeaway: rate limiting on the outflow channel (as Monad CEO Keone Hon recommended post-incident) directly caps realised loss regardless of notional mint scale.
36+
37+
## Context: Bridge attacks in May 2026
38+
39+
The EchoProtocol incident is the **14th bridge-related attack in May 2026**, with cumulative bridge-attack losses reaching $328.6M across the month. It is the **third major DeFi security incident in a 5-day window** (following the THORChain Router exploit on May 15 and the TrustedVolumes RFQ drain on May 7). The pattern is consistent: lock high-value cross-chain channels → exploit validation-logic flaws → drain in one shot.
40+
41+
## Timeline (UTC)
42+
43+
| When | Event | OAK ref |
44+
|---|---|---|
45+
| Pre-2026-05 | EchoProtocol bridge deployed on Monad; lock-and-mint model with committee multisig threshold validation; Hacken audit documents M-of-N signature requirement; mint function has no cap and no rate limit | T10.002 + T9.004 (standing vulnerability) |
46+
| 2026-05-19 | Attacker forges cross-chain message with synthetic/replayed signatures that pass the committee threshold check; bridge executes `grantRole(DEFAULT_ADMIN_ROLE, 0x6A0109...3415)` on eBTC contract | **T10.002** (signature-validation bypass) |
47+
| 2026-05-19 (same tx/bundle) | Attacker calls `revokeRole(DEFAULT_ADMIN_ROLE, 0xA338...9A3B)` — original admin removed; attacker is sole DEFAULT_ADMIN_ROLE holder | **T9.004** (admin-role capture) |
48+
| 2026-05-19 (same tx/bundle) | Attacker calls `grantRole(MINTER_ROLE, self)` — now authorised to mint eBTC | **T9.004** (role escalation) |
49+
| 2026-05-19 (same tx/bundle) | Attacker calls `mint(attacker, 1,000 eBTC)` — $76.64M notional minted with zero BTC backing, no cap triggered, no rate limit hit | **T9.004** (unbounded mint) |
50+
| 2026-05-19 | Attacker deposits 45 eBTC ($3.45M notional) into Curvance's eBTC lending market; receives ceBTC collateral tokens | (monetization — lending-market collateralization) |
51+
| 2026-05-19 | Attacker borrows ~11.29 WBTC (~$867.7K) from Curvance's WBTC market against ceBTC collateral | (monetization — borrow against unbacked collateral) |
52+
| 2026-05-19 | Attacker bridges WBTC from Monad to Ethereum via Relay/LiFi; swaps for ETH; routes 384 ETH (~$821.7K) into Tornado Cash | **T7.003 + T7.001** (cross-chain laundering + mixer) |
53+
| 2026-05-19 | On-chain analyst dcfgod flags the anomaly; PeckShieldAlert publishes alert; EchoProtocol pauses all cross-chain transactions | (third-party detection) |
54+
| 2026-05-19 | Curvance detects anomaly in Echo eBTC market; pauses affected market; confirms isolated market design — no other markets impacted, no Curvance smart-contract compromise | (defender containment — lending protocol) |
55+
| 2026-05-19 | Monad team clarifies mainnet unaffected — incident is application-layer, not chain-layer; Keone Hon recommends all bridge and lending protocols implement supply rate limits on collateral and outflow channels | (ecosystem response) |
56+
57+
## Realised extraction
58+
59+
~$867.7K realised (11.29 WBTC → 384 ETH → Tornado Cash). Notional mint: 1,000 eBTC (~$76.64M). The notional-to-realised ratio (~88:1) is structurally informative — the mint primitive scales infinitely, but cash-out is bounded by lending-market liquidity and the WBTC collateral factor. The attacker deposited 4.5% of the notional mint (45 of 1,000 eBTC) — enough to borrow the available WBTC without crashing the collateral price signal inside Curvance's oracle window. The remaining 955 unbacked eBTC (95.5% of the mint) sit stranded in the attacker's address on Monad.
60+
61+
## What defenders observed
62+
63+
- **Pre-event (bridge message-verification layer):** The committee multisig threshold validation did not enforce strict membership or message-hash binding. This was a standing T10.002 condition — the vulnerability existed from deployment, documented in Hacken's audit. Defender lesson: bridge audits must verify that signature validation checks (a) the signer is a *current* committee member at the time of verification, (b) the signed payload matches the *exact* message hash (not an aliased or replayed hash), and (c) the threshold count is satisfied by *distinct* signers.
64+
- **At-event (on-chain signal):** A single EOA minted 1,000 eBTC with no corresponding BTC lock event — trivially detectable in real time by a bridge-monitoring indexer correlating mint events with source-chain deposit events. dcfgod flagged it manually; automated monitoring was absent.
65+
- **At-event (Curvance containment):** Curvance's isolated market design meant the eBTC market pause affected only that market — no contagion to other lending pools. This validates the defender argument for per-market isolation in lending protocols: a single compromised collateral type does not cascade.
66+
- **At-event (Monad response):** Monad's team confirmed the mainnet was unaffected. The incident is purely application-layer — the bridge contract's signature verification, not the L1 consensus or execution environment.
67+
68+
## Public references
69+
70+
- [PeckShieldAlert — May 19, 2026](https://x.com/PeckShieldAlert) — first responder: @dcfgod reports @EchoProtocol_ hacked on @monad, 1K eBTC minted, Curvance exit, 384 ETH to Tornado Cash
71+
- [EchoProtocol — official pause announcement](https://x.com/EchoProtocol_) — all cross-chain transactions paused; investigation ongoing
72+
- [Curvance — market pause](https://x.com/Curvance) — Echo eBTC market paused; isolated market design; no other markets affected; no Curvance smart-contract compromise
73+
- [Monad / Keone Hon — ecosystem response](https://x.com/monad) — mainnet unaffected; recommends rate limits on bridge outflow channels and lending-market collateral supply; cites April 2026 rsETH incident as reference
74+
- Hacken audit report — Echo bridge contract committee multisig threshold validation documented (pre-incident)
75+
- Attacker address: `0x6A0109...3415` on Monad
76+
- Original admin address: `0xA338...9A3B` on Monad
77+
- Curvance protocol — eBTC and WBTC isolated lending markets on Monad
78+
- Relay / LiFi — Monad-to-Ethereum bridge infrastructure
79+
- Tornado Cash — ETH mixer on Ethereum (OFAC-sanctioned)
80+
- Cross-reference: T10.002 at `techniques/T10.002-message-verification-bypass.md`, T9.004 at `techniques/T9.004-access-control-misconfiguration.md`
81+
82+
## Discussion
83+
84+
The EchoProtocol case anchors the **Monad-native T10.002** cell in OAK's chain-coverage matrix, joining KelpDao (Ethereum/LayerZero, April 2026) and Hyperbridge (Polkadot MMR, April 2026) to form a cross-chain triptych of bridge-message-forgery incidents in Q2 2026. The three cases share the same downstream primitive (forged message → unbounded mint) but differ in the upstream mechanism: infrastructure-provider compromise (KelpDao), proof-reuse flaw (Hyperbridge), and signature-validation bypass (EchoProtocol). Together, they establish that the bridge-message-forgery class is not a single-chain or single-mechanism phenomenon — it is the dominant bridge exploit class of 2026.
85+
86+
The EchoProtocol case is also the **canonical 2026 DEFAULT_ADMIN_ROLE capture** incident. The attacker's target was not the mint function, the bridge contract's asset custody, or the oracle — it was the root administrative privilege in the RBAC hierarchy. Once DEFAULT_ADMIN_ROLE was obtained, every other role and function was reachable. The RBAC hierarchy's design makes DEFAULT_ADMIN_ROLE "the role that administers roles" — granting it to an untrusted address is equivalent to surrendering the entire contract. The structural defender lesson: **cross-chain messages that modify RBAC roles on destination-chain contracts must require multi-signature authorisation and a timelock — a single forged message must never be sufficient to transfer DEFAULT_ADMIN_ROLE.**
87+
88+
The Curvance monetization path is tactically notable: the attacker deposited only 4.5% of the mint and borrowed against it. The WBTC liquidity constraint in Curvance's isolated market meant the attacker could only extract $867.7K against a $76.64M notional mint — the isolated market design contained the cash-out at the cost of that market's WBTC liquidity. Keone Hon's post-incident recommendation (supply rate limits on collateral, analogous to outflow-channel rate limits on bridges) addresses this directly: if Curvance's eBTC market had a deposit-rate limit — e.g., max 5 eBTC per block — the attacker could have deposited at most 5 eBTC, and the borrow ceiling would have been proportionally lower.
89+
90+
The Tornado Cash exit on Ethereum is commodity privacy infrastructure — the attacker did not need custom laundering tooling. The exit chain (Monad → Ethereum via Relay/LiFi → Tornado Cash) compresses the full laundering latency within a single day, consistent with the broader 2025-2026 trend of pre-staged laundering pipelines that execute faster than incident-response coordination can mobilise.
91+
92+
For OAK's broader coverage, the case + Hyperbridge + KelpDao collectively motivate a dedicated T10.002 sub-technique or Technique-page expansion covering the three sub-classes: infrastructure-provider compromise, proof-reuse forgery, and committee-signature-validation bypass — distinct detection surfaces, distinct mitigation surfaces, shared downstream primitive.

0 commit comments

Comments
 (0)