How the Wormhole hack worked: $320 million minted past a skipped check
In February 2022 an attacker created about 120,000 wrapped ether, worth more than $320 million, without putting a single real coin in. The flaw was an old verification routine that never checked who it was talking to.[1] This case file covers how the Wormhole bridge was drained, who covered the loss, how part of it came back a year later, and the control that was missing.
What happened
Wormhole is a bridge: a service that lets people move crypto between blockchains that cannot talk to each other directly. In simple terms, you lock ether on the Ethereum network, and the bridge issues an equal amount of "wrapped" ether on the Solana network that you can use there. The system only works if every wrapped coin is backed by a real one held in reserve.
At 5:58 p.m. UTC on February 2, 2022, an attacker minted about 120,000 wrapped ether on Solana with nothing behind it.[1] Within minutes they moved 10,000 of it back to Ethereum as real ether, and about 20 minutes later another 80,000, draining the reserve that backed everyone else's tokens. The rest was swapped into other tokens on Solana.[1]
Wormhole took the bridge offline and publicly offered the attacker $10 million to return the funds and explain the flaw.[1][2] The attacker did not take the deal. The next day, trading firm Jump Crypto, which backed Wormhole, put in 120,000 ether of its own so that the wrapped tokens were fully backed again.[1][3]
How it worked
Before the bridge mints new tokens, it is supposed to confirm that a trusted group of validators has signed off on a real deposit on the other chain. That confirmation is the whole security of the system.
According to security analysts who reviewed the attack, Wormhole's Solana code relied on an older, deprecated function to perform part of that check. The function was meant to read information from a specific built-in system account, but it never confirmed that the account it was handed really was that system account. The attacker supplied a fake one, and the code accepted it as proof that the signatures had been verified.[1]
From there, the bridge treated a forged message as an approved deposit and minted 120,000 wrapped ether. In everyday terms, a guard checked that a visitor was carrying an ID card but never looked at whose name was on it.
What it cost
At the time, it was one of the largest thefts in the history of decentralized finance.[2][3] Ordinary users of the bridge did not lose their money, because Jump Crypto absorbed the loss and restored the reserve.[3] The attacker was never publicly identified or charged.
A year later, part of the money came back. The attacker had parked much of the stolen ether in vaults on a lending platform called Oasis. On February 21, 2023, acting on an order from the High Court of England and Wales, Oasis used its ability to upgrade its own contracts to move the attacker's collateral to a wallet controlled by a party authorized by the court. Reports said Jump Crypto was behind the effort, and the net recovery was about $140 million.[4]
The missing control
The missing control: retiring deprecated verification code before launch. The bridge's most important safety check depended on an outdated function that did not fully validate its inputs.[1]
Outdated code is marked deprecated for a reason: the people who maintain it have found a better, safer way. A release checklist that required every security-critical check to use current, supported functions, and an independent review focused on how signatures are verified, would have flagged the weak routine. Once that check held, the attacker's fake account would have been rejected and nothing could have been minted.
What to do in your business
- Know what your key systems run on. Ask your developers or software vendors to list the libraries and functions behind logins, payments and approvals, and flag anything marked outdated.
- Make updates a release rule. Do not let new code or new features go live while they depend on components that their makers have told you to stop using.
- Get a second review on money-moving code. Anything that approves payments, withdrawals or refunds should be reviewed by someone who did not write it.
- Check the check. When a system says it verified something, such as a signature, invoice or identity, confirm it verified the right thing, not just that something was present.
- Plan for the bad day. Decide in advance who can pause a payment system, how customers will be told, and who covers losses, so you are not deciding under pressure.
Check your business for this control
The free Heist Control Checklist walks through the controls behind every case on this site in about ten minutes. For ready-made policies, the Policy Pack has five editable templates, and the Insider Threat Kit covers risks from inside your own team.
- Guide: How a small business keeps software and devices patched, and why default passwords must go
- What caused the Equifax breach? An unpatched website and an expired certificate
- How the Capital One breach happened: one misconfigured cloud firewall
- What happened to Knight Capital: $460 million lost in 45 minutes
- How WannaCry hit the NHS: the fix existed 2 months before the attack
- How the Heartland breach happened: 130 million cards and an informant
- How the HSE cyber attack happened: one spreadsheet and 8 weeks of ignored alerts
- Every patching and monitoring control
- All case files
Facts are drawn from court records, government reports, company statements and reputable reporting, listed below. People are named only where they were convicted, pleaded guilty or spoke publicly in an official role.