Nomad Hack

TOTAL LOST $190M
Critical Access Control Attacks ethereum

What happened

Nomad's Ethereum bridge was exploited on August 1, 2022 after a Replica contract upgrade made an unproven message appear valid. Attackers and copycats submitted forged messages directly to the bridge, releasing escrowed assets without corresponding source-chain transfers. Later reporting commonly rounded the incident to $190 million; it involved more than 300 participating addresses.

Technical Root Cause

The message-authentication path treated a default mapping value as an acceptable committed Merkle root. A compatibility-oriented initialization state combined with the process() upgrade to authorize messages that were never proven. Authentication code must distinguish an uninitialized or default value from a confirmed state, and upgrades must test all default-state transitions.

Case & protocol details

Classification Cross-chain Bridge / Message Authentication
Protocol Type Bridge
Affected asset / contract Nomad: ERC20 Bridge
Smart Contract Language Solidity
Official Website www.nomad.xyz/
Protocol Twitter/X @nomadxyz_

Attack Timeline

Replica initialization had set confirmAt[bytes32(0)] to 1 for an empty Merkle-tree root. After the upgraded process() logic called acceptableRoot(messages[messageHash]), an unproven forged message read the default root bytes32(0). That root now appeared acceptable because its timestamp was 1, so the authentication check passed.

Attackers could submit fake messages directly to the Ethereum Replica, which forwarded them to BridgeRouter and released escrowed assets without a matching deposit or burn. Once the calldata was public, copycats changed only the recipient address and repeated the withdrawal pattern.

Security review history

  • Quantstamp 2022-06-06 No public report

Funds Recovery

19.1%

Recovered

$36.3M

Net Loss

$153,710,000

Practice this exploit pattern safely

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.