KiiChain
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…
Database
Every documented loss event with its root cause, its mechanics and its lesson. Search, filter, and open any card for the full story.
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…
triggerAutoBurn() is permissionless once trading is enabled. The attacker corner-buys BY via the router (output routed to the router itself), donates WBNB to the pair and sync()s to cross t…
The DxSale Legacy Liquidity Locker's owner-only DXLOCKERLP(address,uint256) backdoor drains any locked LP position without respecting individual timelocks. Ownership was secretly relayed th…
removeLiquidityViaContract(liquidity,...) sends BNB to the caller before zeroing lpInfo[user].lpAmount. The attacker parks one ~437 LP position, then its receive() re-enters with the same l…
cliamRewred() verifies a claim via recoverSigner(hash, sig) == admin, but the admin was set to address(0) and ecrecover returns address(0) for malformed signatures without the contract chec…
The SKP token has an owner-only ownerBurnLiquidityPairTokens(amount) that burns SKP sitting directly inside the SKP/USDT pair. The owner burns ~95% of the pair's SKP, then pair.sync() re-ba…
SKP's _transfer() fires _runSpecialPairFlow() when the pair sends SKP to a whitelisted buyer, redistributing an unbounded amount of treasury SKP to the single owner-set WL_ADDRESS; the trig…
WUSD.wrap()'s _englove() mints ~2 GLOVE to any caller whose current GLOVE balance is under 2e18 — eligibility keys only on the live balance, with no per-address claim ledger, cooldown, or i…
YSDAO's transfer protection detects add/remove-liquidity by comparing pair balances to reserves. The attacker buys YSDAO while having the pair pay out 1 wei USDT so _isRemoveLiquidity() rea…
Funding arrived from a Tornado-linked address at 01:12 UTC Apr 30; malicious contracts were deployed and gas loaded by 07:46; at 07:49:47 the Ethereum drain emptied eight vaults in one tran…
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…
The attacker submitted a ChangeAssetAdmin request for the bridged DOT token with leafCount:1, leaf_index:1, proof:[root], leafCount:1 — the computed root equalled the expected root without…
Each 220 USDT node purchase pays 70 USDT to the L1 referrer and 50 USDT to L2. The attacker deploys 25 fresh NodeBuyer proxy contracts (bypassing the 1-node-per-address cap) that register t…
SAT-001: after transferInRewards() and burnQueuedShares() the invariant strcBalance >= getUnvestedAmount() breaks, so convertFromStrc() underflows (strcBalance - unvested) and panics (0x11)…
From June 2025, a wallet funded with 7,447 ETH (~$16.29M) via 77 Tornado Cash transfers deposited ETH on Aave, borrowed ~$9.92M in stables, and spent nine months accumulating 84% of Venus's…
At 11:46 UTC on March 10 Chaos Labs computed the update off-chain; AgentHub (BGD Labs) executed it one block later via Chainlink Automation with no human review. Aave priced wstETH 2.85% be…
The attacker flashloans 51 WETH, supplies 50 ETH as aweth collateral, borrows 39.5 aweth against it, then calls liquidateBorrow{value: amount}(self, aweth, aweth, amount) paying exactly the…
Using nested Morpho flashloans (USDC then WETH) the attacker creates a crvUSD loan, deposits into the Yearn scrvUSD vault, freely calls sDOLA.mint() to mint shares out of thin air, and uses…
Using EIP-7702 delegation (needed because BNBDeposit only lets EOAs claim), the attacker flashloans 20,000 WBNB, repeatedly deposits into BNBDeposit, swaps WBNB→EST, sends 1 EST directly to…
Six EOAs had pre-approved the future attack-contract address, letting the attacker transferFrom their THE into vTHE — inflating the market exchange rate. The attacker then uses Venus borrow…
The attacker's wallet was created Feb 14 (56.32 XLM); on Feb 21 23:35 a burner account placed a sell offer of 1.2185 USTRY at 107 USDC (100x); at 00:10:21 Feb 22 a trigger account bought 0.…
The attacker called upgrade() on TransferValidatorWithPayload (0xE7eBA1CE…) to install a validation-free implementation, then transferred ownership of TokenSafe and MinterPool. In 189 trans…
The attacker flashloans 350 BUSD from Pancake V3, buys LAXO via the fee-on-transfer router path, adds and then removes liquidity, then raw-transfers their entire LAXO balance directly into…
With a WETH flashloan from an Aerodrome CL pool, the attacker calls liquidateBorrow(victim, amount, mcbETH) to repay a victim's WETH debt and seize cbETH collateral, redeems mcbETH for cbET…
Defimon Alerts flagged the exploit on Jan 5; the exploiter 0x763a67E4418278f84c04383071fC00165C112661 (funded Jan 3) and a parallel secondary address 0x16Ed3AFf3255FDDB44dAa73B4dE06f0C2E152…
MT's transactionFee() splits transactFeeValue across an unbounded list of percentages without enforcing sum(shares) <= 100, so a transfer can debit the sender for far more than amount. AMM…
Attacker stakes 400,000 PRXVT, then loops (until a gas threshold) transferring the whole stPRXVT balance into a freshly CREATE2-deployed helper which calls earned() + claimReward() and retu…
The presale's buy()/swap() accept arrays of recipients, rates, and refundFlags and pay each entry a rate% refund out of the contract's balance, while msg.value (or the swap input) is receiv…
The TRU pool's getPurchasePrice uses a quadratic formula; the PoC reverse-solves the buy amount A that drives the formula to the uint256 maximum (via maxPrice/(100*R) + sqrt), where the com…
The victim contract computes a token-unit fee (abs(delta) * feeRateWad / 1e18) and forwards it into FeeManager.addFee(), where the receiving system interprets the value as feeBasisPoints. T…
Makina's Machine.updateTotalAum() prices DUSD from Curve pool balances via accountForPosition commands (balanceOf reads). With a 280M USDC flashloan the attacker pumps DUSD and MIM in their…
With a 30M USDC Morpho flash loan the attacker donated blind assets, broke the share accounting, minted an astronomical quantity of yTUSD shares, and dumped them into the Curve yPool for yD…
A staged multi-wallet crew (Mastermind/Specialist/Engineer/Bagman/"Fall Guy") whitelisted collateral and deployed a disguised oracle to build a compliance history, then in one transaction h…
The yETH pool tracks virtual balances (vb_prod_sum) for 8 assets, one of which (OETH) is rebasing, and update_rates is public. The attacker runs a choreographed sequence: a large removal, f…
21:11 UTC Nov 30, a single transaction: ~$8M drained from the yETH stableswap pool and ~$0.9M from the Curve yETH-WETH pool; ~1,000 ETH (~$3M) went into Tornado Cash as ten 100-ETH deposits…
The November 2025 Balancer V2 exploit uses the ComposableStablePool's rate-provider scaling factors: the attacker computes a trickAmt just below the scaling-factor precision threshold (e.g.…
The attacker Morpho-flash-loans 13.98M USDC and swaps USDC→WETH through the DexRouter to move the pool price, then calls the vault's swapToWETH(100,000 USDC) — the vault converts at the now…
The attacker flash-loans wrsETH from the wstETH/wrsETH pool, mints mwrsETH cTokens, enters the market, and borrows ~20,592 mwstETH against it — far more than the wrsETH collateral is worth,…
The attacker called cook() with actions [5, 0]: action 5 queued a massive borrow and set the solvency flag, action 0 immediately reset it, and the check never ran — 1,793,755 MIM borrowed a…
The Spell v3 cook() accepts a REPAY action whose amount is attacker-chosen; for each of six cauldrons the attacker checks borrowLimit vs the cauldron's MIM balance in the BentoBox, then coo…
The attacker creates a margin account, provides USDC through the supply-token pool and provideERC20, opens a WBTC long via increaseLongPosition, then WITHDRAWS his entire pool deposit — lea…
BorrowerOperations.sell() accepts caller-supplied tokenHolder, inchRouter and whitelistedDex addresses and executes the sellingCode through them. The attacker passes his own contract for al…
Kame's aggregation router swap() executes caller-supplied executeParams against the caller-supplied executor address. The attacker crafts SwapParams with executor = USDC token, executeParam…
No incident matches these filters.