Heists & Mysteries5 min readEthereum (ETH)

Nomad’s copy-paste heist: a broken message check and the long work of recovery

On August 1, 2022, a message-authentication flaw in Nomad let forged bridge messages pass. Other participants adapted visible transactions by changing recipient addresses. Contemporary estimates put the drain near $190 million; recovery required tracing, returns and a redesigned distribution process.

Nomad’s copy-paste heist: a broken message check and the long work of recovery

Key Points

  • Nomad’s official analysis dates the production upgrade to June 21, 2022. The flaw combined a default message-mapping value with acceptance of the zero root.
  • Changing the recipient produced a different message that could exploit the same flaw. An already processed message could not simply be paid indefinitely.
  • The August 5 bounty offered up to 10% for qualifying returns. A December 20 update announced a recovery-focused relaunch, not full reimbursement of every loss.

Chronological Timeline

2022-06-21Production upgrade

Nomad’s official analysis dates the affected production upgrade to June 21.

2022-08-01Forged messages drain assets

Attackers exploit message authentication; other participants adapt visible calls and change recipients.

2022-08-05Conditional bounty and root-cause report

Nomad publishes its analysis and an offer of up to 10% for returns of at least 90%, with a limited project legal pledge.

2022-08-17Recovery remains ongoing

Nomad reports over $37 million recovered, about 20%, and outlines a restart for distribution.

2022-12-20Recovery relaunch announced

An update to the December 7 guide says unbridging has relaunched with proportional recovery claims.

1. A bridge accepted what it had not verified

Nomad connected blockchains by carrying messages between them. Its Replica contract helped authenticate incoming messages before the BridgeRouter acted on them. In the optimistic design, a message was associated with a Merkle root whose waiting period had to expire. That relationship between a message, its root and the root’s confirmation time was supposed to separate legitimate bridge activity from fabricated instructions.[3]

Nomad’s August 5 root-cause analysis dates the production upgrade to June 21, 2022. It explains that a change to message processing interacted with existing initialization: the zero root had a confirmation time of 1. Looking up a message hash with no entry in the message-to-root mapping also returned zero. When the updated check used that default value, the root appeared acceptable and an unproven message could pass.[3]

The failure was in how stored values were interpreted. It did not require an empty payload to hash to zero. Fraudulent instructions reached contracts that trusted Replica’s authentication. The official analysis also explains why Watchers did not intervene: they monitored Updater-key compromises, while this path needed no fraudulent Updater signature. A defense aimed at one failure mode had not detected this implementation bug.[3]

2. The exploit became a pattern others could copy

The attack unfolded on August 1. CertiK’s analysis illustrates one transaction in which the Ethereum side released 100 WBTC; it labels this an example, rather than establishing the first attack’s exact minute. Once a successful call was visible, later participants could adapt the input and direct a payout to another recipient address.[1][2]

Changing that address also changed the message being submitted. Nomad’s official account states that forged messages could pass provided they had not already been processed. The exploit bypassed bridge-message authentication; it did not abolish ordinary Ethereum transaction signing or make one processed message an unlimited cash dispenser. This is why copying the pattern and repeating an identical completed message are different operations.[3]

Rekt’s contemporary report described copycats and automated activity alongside people claiming to safeguard funds. Its account of the copying mechanism ended with this practical distinction:[2]

swapping out their address in place of the previous exploiter’s.[2]
— Rekt News

3. One incident, several dated measures of the damage

As assets left the bridge, investigators measured a moving event. CertiK estimated roughly $190 million drained. Elliptic’s account used more than $156.4 million and identified over 40 exploiters and more than 200 contracts used to automate attacks. These are attributed observations, not a single reconciled ledger or a percentage identifying participants as ordinary investors.[1][4]

The stolen assets included WETH, WBTC and stablecoins. Elliptic reported about $15,000 remaining in the Ethereum contract at midday on August 2, with $16 million returned in the article’s August 3 update. A depleted reserve affected the backing of bridged assets. It did not by itself establish the final amount users would recover, or the identities and motives of everyone behind an address.[4]

Nomad’s August 17 update gave a later project accounting: more than $186 million taken, over 300 unique addresses involved and more than $37 million recovered, about 20%. The team described ongoing tracing and returns. Differences in dates and accounting boundaries matter; subtracting an early return estimate from a rounded headline cannot turn the remainder into a proven permanent loss.[6]

4. Returning funds was only the beginning

On August 5, Nomad published a bounty of up to 10% for parties returning at least 90% of the total they had taken to its official recovery wallet. The FAQ said Nomad would not take legal action against qualifying white hats and would advocate against criminal charges. Those were the project’s commitments and advocacy, not a government grant of immunity.[5]

Recovery also required deciding who could receive which assets. The August 17 plan described valid transfers still in flight, bridged tokens that continued to trade and returns made in different tokens from those originally taken. Nomad was designing a restart to distribute recovered assets rather than letting the first claimants exhaust the remaining reserves. At that point the restart was still a plan.[6][7]

The relaunch guide, published December 7 and updated December 20, subsequently announced that the token bridge had relaunched for unbridging. It described KYC/AML checks and non-transferable recording claims to proportional shares of recovered assets, including future recoveries if available. New canonical deposits were not allowed under that guide. This recovery mechanism was not evidence that every user had been repaid in full; the incident left both a deployment lesson and a complicated distribution problem.[7]

Key Takeaways for Investors & Builders

Engineering / Product

Test state transitions as well as code

An upgrade can give an existing default value a dangerous new meaning. Authentication and processed-message behavior need testing with deployment state.

Market / Investor

A public exploit can spread beyond its discoverer

Visible calls made the Nomad pattern adaptable. Address counts and early valuations still require dates and attribution.

Philosophy / Governance

Recovery is more than fixing a bug

Stopping invalid messages does not restore missing collateral. Returns, legal cooperation and proportional distribution remained separate tasks.

The next question

Continue reading

Explore the topic through other cases and contexts.

Sources & References

  1. [1]Source 1: CertiK: technical incident analysisCertiK · 2022-08-01Accessed 2026-09-06
  2. [2]Source 2: Rekt: contemporary account of the copycat exploitRekt News · 2022-08-02Accessed 2026-09-06
  3. [3]Source 3: Nomad: official root-cause analysis, August 5Nomad · 2022-08-05Accessed 2026-09-06
  4. [4]Source 4: Elliptic: attack tracing and August 3 recovery update; page header May 9, 2023Elliptic · 2023-05-09Accessed 2026-09-06
  5. [5]Source 5: Nomad: August 5 bounty and legal-scope FAQNomad · 2022-08-05Accessed 2026-09-06
  6. [6]Source 6: Nomad: August 17 recovery roadmapNomad · 2022-08-17Accessed 2026-09-06
  7. [7]Source 7: Nomad: relaunch guide, December 7; updated December 20Nomad · 2022-12-07Accessed 2026-09-06