Hacks / Statistics / Q3 2023

Q3 2023 Exploit Report

July–September 2023: 55 reproduced exploits, $77.6M in stated losses.

55 exploits from July–September 2023 are reproduced in the library, 5 fewer than in Q2 2023. 50 of them state a dollar loss, $77.6M in total, against $74.1M the quarter before. Logic was the most common root-cause category, on 29 of the 55 incidents (53%). Ethereum had both the most incidents (26) and the largest stated losses ($65.7M). The largest stated loss was Curve crv/ETH Pool Drain at $41M, 53% of the quarter's stated total.

Incidents

55

60 in Q2 2023.

Stated losses

$77.6M

50 of 55 incidents state a dollar figure. $74.1M in Q2 2023.

Largest stated loss

$41M

Curve crv/ETH Pool Drain

Most common root cause

Logic

On 29 of 55 incidents.

Root causes

How many of the quarter's incidents carry each category.

Logic29Oracle Manipulation25Access Control16DeFi15Arithmetic9Governance9Reentrancy5Dependency4Untagged3Authentication2

An incident with two categories counts under both.

View as table
CategoryIncidentsStated losses
Logic29$11.5M
Oracle Manipulation25$11.2M
Access Control16$9.4M
DeFi15$895K
Arithmetic9$3.8M
Governance9$5.2M
Reentrancy5$4.3M
Dependency4$379K
Untagged3$55.7M
Authentication2$130K
Input Validation1$9.7K

Chains

Where the exploited contracts were deployed.

Ethereum26BNB Chain22Arbitrum2Base2Polygon2Avalanche1
View as table
ChainIncidentsStated losses
Ethereum26$65.7M
BNB Chain22$2.6M
Arbitrum2$936K
Base2$7.9M
Polygon2$452K
Avalanche1$51K

Largest stated losses

The 5 incidents of the quarter with the largest stated loss. Select a bar to open the write-up.

View as table
IncidentChainStated loss
Curve crv/ETH Pool DrainEthereum$41M
Curve Finance pETH/ETH PoolEthereum$11.4M
Exactly Protocol ExploitBase$7.3M
Conic Finance (ETH Omnipool)Ethereum$3.3M
Conic Finance ETH Omnipool ExploitEthereum$3.3M

Every incident of the quarter

Largest stated loss first. Each opens the root-cause write-up and the runnable replay.

IncidentStated loss
Curve crv/ETH Pool DrainVyper 0.3.0 Broken @nonreentrant Lock (Read-Only/Cross-Function Reentrancy)$41M
Curve Finance pETH/ETH PoolVyper @nonreentrant Compiler Bug Read-Only/Cross-Function Reentrancy$11.4M
Exactly Protocol ExploitDebtManager Permit-Spoofed _msgSender Lets Anyone Act On Behalf Of Any Account$7.3M
Conic Finance (ETH Omnipool)Curve LP Oracle Manipulation via Spot-Reserve Pricing$3.3M
Conic Finance ETH Omnipool ExploitCurve Read-Only Reentrancy Oracle Inflation$3.3M
Balancer Boosted Pools ExploitLinear-Pool getRate() Inflation via BPT Supply Drain + Precision Loss$2.1M
Zunami UZD ExploitSpot-Price totalHoldings() Inflation via SDT Donation$2.1M
Conic Finance (crvUSD Omnipool) ExploitCurve Pool Imbalance Manipulation of LP Valuation$934K
Palmswap ExploitPLP Share Inflation via Permissionless buyUSDP() AUM Manipulation$901K
Rodeo Finance ExploitTWAP Oracle Manipulation of the unshETH LP Price$888K
LeetSwap V2 ExploitPublic _transferFeesSupportingTaxTokens() Drains the Pair's Reserves$630K
BNO ExploitemergencyWithdraw() Resets Stake but Leaves Reward Accounting Intact, Draining the Pool$505K
Libertify (LibertiVault) ExploitDeposit Reentrancy via 1inch Swap Callback Inflates Share Mint$452K
SVT ExploitBroken AMM Pricing Round-Trip Drain (flash-loan funded)$398K
Arcadia Finance ExploitReentrant Self-Liquidation Drains the Lending Pools$334K
Uwerx (WERX) ExploitBurn-on-Transfer-to-Pool + skim() Reserve Collapse$320K
EarningFarm (ENF) ExploitWithdraw Reentrancy via ETH-Push-Before-Burn in EFVault$286K
CIVNFT / CivTrade ExploitMissing Access Control + Attacker-Controlled Mint Callback Drains Approved Allowances$180K
APIG Token ExploitSelf-Transfer Balance-Doubling Bug Drains Two Pools$169K
Civfund (0xf485) ExploitForged Uniswap-V3 mint Callback Drains User Approvals$165K
Utopia Exploit_airdrop() Overwrites the Pool's Token Balance to 1, Collapsing the AMM Reserve$119K
FFIST (FIRE FIST) ExploitAttacker-Controlled _airdrop() Overwrites the AMM Pool's Token Balance to 1 wei$110K
Carson Token ExploitThin-Reserve Price Skew + Fee-on-Transfer Drain via a Custom Pair$101K
WGPT (Wrapped GPT) ExploitSelf-Inflicted removeLiquidity on Every Sell Drains the Pool$80K
AzukiDAO (Bean) ExploitSignature-Replay Mint via Unenforced signatureClaimed Guard$69K
FloorDAO ExploitSelf-Donated Rebase Inflates the Staking index, Over-Paying gFLOOR Redemptions$64K
0x0 Privacy DEX (OxODex) ExploitForged LSAG Ring Signature + Stale _lastWithdrawal Pool Drain$61K
Platypus Finance (2nd hack)Coverage-Ratio Arbitrage via withdrawFromOtherAsset$51K
Neutra Finance ExploitConvert.getAmountOut() Prices LP by a Spot-Manipulable Reserve$48K
Bao Finance ExploitCErc20 Exchange-Rate Inflation via Direct Underlying Donation$46K
BFCToken ExploitlastTx Deferred Pool-Burn Desyncs PancakeSwap Reserves$38K
Curve UnderlyingBurner.execute()Zero-Slippage Sandwich on the 3pool$36.7K
NewFi / StakedV3 ExploitFlash-Loan Price Manipulation of an Unprotected Internal V3 Swap$31K
CEXISWAP ExploitUnprotected initialize() + UUPS Arbitrary Upgrade Drain$30K
GSS ExploitFee-on-Transfer / Reflection Token Drained via Cross-Pool skim()$24.9K
Split (Kub) ExploitSelf-Doubling Balance via Manipulable On-Chain "Token Price" Oracle$22.2K
USDTStakingContract28 ExploitPermissionless tokenAllowAll() Self-Approval Drain$21K
DAppSocial ExploitwithdrawTokensWithAlt Credits Instead of Debiting the Depositor Ledger$16K
EHIVE Exploitstake() Updates staked Before Computing earned, Inflating Rewards$15K
Heavens Gate (HATE) ExploitRebase-Index Inflation via Permissionless stake/unstake Looping$13K
BankX / XSD ExploitRouter swapXSDForETH() Triggers an Un-Compensated Pool Burn$12.5K
Minto Finance ExploitFree BTCMT Minting via Unvalidated paymentToken in ReferralCrowdsale.buyTokens()$9.7K
LUSD (LAYER3) ExploitSpot-Price Oracle Manipulation via Loan.supply()$9.5K
HCT (CoinToken) ExploitReflection-Token burn() Deflates the Pool's Reserve to 1 wei$8.6K
SUT Token Sale ExploitFixed-Price Inventory Sold Far Below Market$8K
ApeDAO (APE2) ExploitPermissionless goDead() Pool-Reserve Burn + skim() Tax Pump$7.5K
EAC ExploitPermissionless _swapUForToken() Drains the Fund Contract into a Thin Pool$6.4K
DEXRouter ExploitUnprotected functionCallWithValue Drains the Router's Native BNB$4K
JumpFarm ExploitSingle-Transaction Rebase Inflation in OlympusDAO-style Staking$2.4K
Quantum Wealth Network (QWA) ExploitRe-entrant rebase() Reward Harvest via stake/unstake Looping$900
Bamboo AI ExploitupdatePool() Permissionless Pool-Reserve Siphon + skim/sync Drainnot in dollars
BTC20 / 24Pixels Presale ExploitSpot-AMM Price Oracle Manipulation in buyWithEthDynamic()not in dollars
FireBird Finance ExploitManipulable Protocol-Fee LP Mint Drains the WMATIC/HOPE Poolnot in dollars
GYM Network ExploitGymRouter Pulls Swap Input From the Recipient Instead of the Callernot in dollars
Unicly PointFarm ExploitERC1155 Reentrancy Inflates Reward Points to Steal a LootRealms NFTnot in dollars

A loss is the first dollar figure the write-up states, often for the reproduced transaction and sometimes for the whole campaign. The library counts exploits reproduced here, not every incident in the industry. How these numbers are made.