Ronin Network
With 5-of-9 approval the attacker authorized two withdrawals from the Ronin Bridge contract: first 173,600 ETH, then 25.5M USDC (swapped to ETH via other addresses and returned to the main…
860 documented exploits, each one reduced to the flaw, the attacker's exact steps and the lesson that stops the next one. Built for auditors, bug hunters and protocol teams.
Inside the archive
Read an incident, learn the exact flaw, and take the lesson into your next audit.
Deep dives
With 5-of-9 approval the attacker authorized two withdrawals from the Ronin Bridge contract: first 173,600 ETH, then 25.5M USDC (swapped to ETH via other addresses and returned to the main…
The attacker sent cross-chain messages to the Proxy Lock Contracts on Ethereum (0x250e7698...), BSC and Polygon that tricked EthCrossChainManager into calling EthCrossChainData and executin…
The attacker (0x629e7da2…) created an account hours earlier containing a single serialized Secp256k1 instruction, faked the SignatureSet, and minted 120k wETH. 93,750 ETH were bridged back…
One forged packet released 116,500 rsETH (~18% of supply) from the shared custody adapter in a single tx; the attacker (funded with ~$230 from Tornado Cash ~10h earlier) split it across eig…
Preparation began ≥8 days before (Tornado-funded test transactions Jul 8–10 involving ETH, SHIB and USDT with the multisig). On Jul 18 the attacker upgraded the Safe to their contract and d…
On Saturday (announced Monday morning) the attackers used the leaked keys to make plain transfers out of hot wallets: 60k ETH (~$94M) to 0x52E86988bd07447C596e9B0C7765F8500113104c, USDT swa…
attacker used two contracts: one built a huge, underwater leveraged position with flash-loaned funds, then donated eTokens to reserves, making the position unliquidatable while leaving the…
After one failed attempt (costing $350k in gas) the original attacker's tx called process() directly without proving validity; with 0x00 as trusted root the check passed. Because the tx was…
Incident of the week
Flash-swap 6k WBNB from PancakeSwap, swap most to 92k BURGER on BurgerSwap, then create a pair of 100 fake (non-standard BEP-20) tokens + 45k BURGER. Swap the 100 fake tokens for 4.4k WBNB through the new pair, then reenter and swap the 45k BURGER for another 4.4k WBNB before reserves updated — 8.8k WBNB total — swap back 493 WBNB to 108.7k BURGER and repay…
Read the full analysisLatest
The attacker precomputed the future address of an EVM contract deployment, converted that address into a delayed-vesting account funded with exactly 2 KII, then deployed a helper contract o…
An operational address created the withdrawal, it cleared the dispute window, and a batched finalize released $24.15M USDC to the loot wallet (0x2f2974fa...). The funds moved like routine t…
At 18:21 UTC a fresh wallet funded with 0.134 ETH from HitBTC; 13 minutes later escapeHatch() released 1,158 ETH (~$2.04M) in a single call (18:34), then 150,000 DAI (18:49) and 0.4696 renB…
At 12:26 UTC the attacker batched 14 valid processRollup calls into RollupProcessorV3 in one atomic tx, executing public withdrawals: 909 ETH, 270,513 DAI, 167.89 wstETH, plus LUSD, yvDAI,…
Director Chong Yee Wai opened a fake Bithumb zip on Jun 5 (hncagent.exe loader, Hancom-signed), giving the attacker RDP access; neither Sophos nor Defender flagged it. On Jun 8 the attacker…
ATM's _transfer() sell branch auto-sells 20% of the sell size from the contract's own reserves at amountOutMin=0 whenever its balance exceeds swapAtAmount, leaking value to marketing/divide…
Work with me
The lessons in this archive are my first checklist. Tell me about your contracts, and I answer by email.
A full security review of your contracts before they go live.
Smart contracts for your idea, written from scratch and tested like an audit.
The contracts plus the web app your users need, ready to run.
Every request goes straight to my inbox, and I answer by email.