skills/case-studies/nomad-bridge/SKILL.md
Case study of the 2022 Nomad Bridge exploit: initialization bug draining ~$190M
npx skillsauth add apegurus/solidity-argus nomad-bridgeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
In August 2022, the Nomad bridge was drained of approximately $190 million in a "decentralized robbery." A routine upgrade accidentally initialized the bridge's trusted root to a zero hash (0x00), allowing anyone to bypass message verification by providing a message that hashed to a value already present in the uninitialized mapping.
The vulnerability was introduced during a contract upgrade. The Replica contract's confirmAt mapping was intended to store the time at which a message root was confirmed. The upgrade set the default "trusted" root to 0x00. Because uninitialized storage in Solidity is 0, any message with a root of 0x00 was automatically considered "confirmed" by the contract. This allowed users to submit withdrawal messages with arbitrary data that would be executed without valid signatures.
Replica contract accepted messages with a root of 0x00.process function.0x00 and the mapping returned 0 (or a value that passed the check), the message was processed.0xa5ce309047a92177ad43c03f1f13a87339e38c89509cf5564d79775c4456cf920x00 or 0) in a mapping that is also the default state for uninitialized entries.require(root != bytes32(0)) check in the message verification logic.testing
Specialist profile for mechanically applying the attack-vector deck and classifying vectors as skip, drop, or investigate.
tools
Specialist profile for libraries, helpers, base contracts, adapters, encoders, wrappers, and integration glue.
testing
Specialist profile for rounding, scale, decimal, downcast, and arithmetic accounting edge cases.
testing
Specialist profile for extracting conservation laws and state couplings, then searching for violating paths.