Poly Network — cross-chain bridge exploit
A privilege-escalation flaw in the Poly Network bridge let an attacker appoint themselves contract administrator and drain $611M — then the attacker returned all funds over two weeks.
- Target
- Poly Network — cross-chain bridge exploit
- Date public
- 10 August 2021
- Sector
- Crypto
- Attack type
- Vulnerability Exploit
- Threat actor
- Pseudonymous 'Mr. White Hat' (returned all funds)
- Severity
- High
- Region
- Global
Poly Network is a bridge that connects multiple blockchains, letting people move cryptocurrency between them. Like all such bridges, it has a trusted gatekeeper — a special account called the "keeper" — that approves which transfers are allowed. The attacker found a clever loophole: the bridge contract had a function designed to let the keeper be changed if authorised. The flaw was that this authorisation check could be bypassed by crafting a specially formatted instruction that the contract would accept as coming from the existing keeper, even though it didn't. Using that trick, the attacker replaced the real keeper address with one they controlled — essentially handing themselves the master key to the bridge. They then authorised transfers of $611 million in cryptocurrency to their own wallets across Ethereum, Binance Smart Chain, and Polygon. What happened next was unexpected. Within hours the attacker began sending messages on the blockchain explaining they'd done it to expose the bug, not to steal. They returned the funds in stages over two weeks. Poly Network called them a white-hat hacker, offered a $500,000 reward, and even offered them a job as Chief Security Advisor. Whether the motive was genuinely altruistic or whether the attacker simply couldn't launder $611 million without being caught remains debated.
What happened
On 10 August 2021 an attacker exploited a privilege-escalation vulnerability in Poly Network’s cross-chain bridge and drained approximately $611 million in cryptocurrency across three blockchains — Ethereum, Binance Smart Chain (now BNB Chain), and Polygon. At the time it was the largest single exploit in DeFi history and sent shockwaves through the sector.
Within hours of the theft, the attacker began communicating via on-chain transaction messages — embedding text in the data field of otherwise valueless transactions sent to their own address. They described their actions as a white-hat operation undertaken to expose the vulnerability, and within 24 hours had begun returning assets. The full $611 million was returned across multiple transactions over the following two weeks. Poly Network offered the attacker a $500,000 bug bounty and the position of Chief Security Advisor. The attacker accepted the bounty but declined the role.
The attacker’s identity was never publicly established. On-chain analysis by SlowMist and others traced preparation activities but could not definitively attribute the exploit to a known individual or group. The case remains the largest DeFi exploit in which all funds were voluntarily returned.
How it worked
Poly Network’s bridge architecture relied on a privileged on-chain entity called the “EthCrossChainManager” contract, which managed approved cross-chain transfers. This manager contract could have its authorised “book keeper” — the account permitted to push approved transfers through — updated via a specific function. The intended use was legitimate rotation of the keeper address by authorised parties.
The critical flaw was in how the cross-chain contract validated the source of keeper-update instructions. The contract accepted update instructions embedded within cross-chain messages if those messages appeared to originate from the legitimate keeper contract address. The attacker discovered that by crafting a message with specific data formatting, they could make the contract interpret an incoming message as authorised by the keeper, even when it was not. The cross-chain data parsing logic did not adequately verify that the instruction was genuinely signed by an authorised party — it checked the structure of the authorisation claim, not its cryptographic validity.
Using this flaw, the attacker submitted a transaction that appeared to instruct the bridge to replace the existing keeper with an address they controlled. The bridge accepted this as a valid keeper update and recorded the attacker’s address as the new authorised keeper for each of the three chains. With keeper authority established, the attacker could then authorise arbitrary cross-chain transfers — effectively approving their own withdrawals of whatever assets the bridge held.
The attack required significant preparation. The attacker had to study the contract architecture across all three chains, identify the parsing vulnerability, construct the correctly formatted malicious message, and execute the cross-chain replacement on Ethereum, BNB Chain, and Polygon in coordinated sequence. This was not opportunistic — it required deep understanding of the contract internals.
Timeline
- 10 August 2021, ~12:00 UTC — Attacker replaces keeper address on Ethereum, BNB Chain, and Polygon in a coordinated sequence of transactions, draining approximately $611 million total: roughly $273M on Ethereum, $253M on BNB Chain, $85M on Polygon.
- 10 August 2021, ~13:30 UTC — Poly Network detects the breach and publicly announces the attack via Twitter, sharing the three attacker wallet addresses and calling on miners, exchanges, and other protocols to blacklist them.
- 10 August 2021, hours later — Tether freezes $33 million in USDT held in the attacker’s Ethereum wallet. Other stablecoins and exchanges begin KYC checks on the addresses.
- 10 August 2021, evening — Attacker begins embedding text messages in on-chain transactions describing themselves as a white-hat. Poly Network publishes an open letter asking for the funds back.
- 11 August 2021 — Attacker begins returning assets. $4.7 million is returned initially as a demonstration of good faith.
- 12–13 August 2021 — Large tranches returned. Attacker retains $33M USDT temporarily due to the Tether freeze.
- 23 August 2021 — Final tranche returned. All $611 million back in Poly Network control, including the frozen USDT after Tether unfreezes it. Poly Network offers a $500,000 bounty and Chief Security Advisor role.
- 25 August 2021 — Attacker accepts bounty, declines the advisory role.
What defenders should learn
The core failure here is a trust model that relied on message formatting rather than cryptographic proof of origin. The bridge accepted keeper-update instructions that claimed to come from an authorised source without verifying that they were cryptographically signed by that source. Whenever a privileged function can be triggered by a message that merely claims the right identity rather than proving it, that function will eventually be abused. Privileged contract operations must require verified cryptographic signatures from known keys — not just structurally plausible messages.
Cross-chain architectures multiply this attack surface because each chain represents an independent trust boundary. In Poly Network’s case, a single formatting vulnerability was sufficient to compromise the keeper on three chains in sequence. Bridge contracts that hold assets from multiple chains should be designed with the assumption that any one component may be targeted independently, and should enforce per-chain authorisation with cryptographic proofs that cannot be forged by message structure manipulation.
The return of funds is notable but should not carry too much weight in the security analysis. The attacker faced a practically impossible laundering problem: $611 million in stablecoins and tracked tokens, with every major exchange and blacklist operator alerted within hours. The frozen USDT demonstrated concretely that the attacker’s ability to exit was constrained. The decision to return funds may have been principled, pragmatic, or both — but a protocol’s security design cannot rely on exploiters making that choice. Poly Network got its money back; protocols built with the same flaw that attract less virtuous attackers will not.
Sources
- Poly Network exploit — Wikipedia // reporting
- SlowMist — Root cause analysis of the Poly Network attack // analysis
- Poly Network — official announcement on funds return // primary