An attacker drained about $234,000 from a Balancer V1 pool on Ethereum by exploiting a rounding flaw in legacy join math, SlowMist said.
The flaw sits in joinswapPoolAmountOut, which lets a caller specify the pool tokens they want rather than the deposit required, the blockchain security firm said in a threat alert published Aug. 31. The attacker compressed the pool's WBTC reserves to near zero through repeated public swaps, then manipulated the function to compute a required input of roughly one satoshi — the smallest unit of Bitcoin — while minting the full 4,408.8 BPT requested, SlowMist said. The attacker exited proportionally to withdraw DPI, USDC, WETH and WBTC, funding the exploit with flash loans from Spark, Aave, Morpho and Uniswap V3.
SlowMist identified three missing checks that enabled the attack: no minimum effective input, no minimum pool balance and no relative-error validation. The contract's _MIN_BALANCE constant is enforced only in the bind and rebind functions, which govern adding and adjusting tokens in a pool, not in the join path, the firm said. The attacker address is 0x338c7ec9befbb451d66fd8a468c32184f5689a41, with the vulnerable contract at 0x2257aaac34bcb27900291f7b84ee2565a6cbac57.
Balancer warned liquidity providers on Aug. 31 that the bug in its legacy V1 contracts risks LP funds, urging withdrawals from affected pools. The V1 codebase, first deployed in 2020, is immutable and no longer actively maintained, with development attention directed at V3, which implements explicit rounding controls on every arithmetic operation.
The incident is distinct from the November 2025 exploit that took roughly $128 million from Balancer V2 Composable Stable Pools across six networks, though both stem from down-rounding in fixed-point arithmetic that favored the caller over the pool. The V1 BPool contract was among the most widely forked pieces of DeFi infrastructure of its era, and the same join and exit math now runs in codebases with no connection to Balancer and no shared security process. In June, an attacker exploited Ocean Protocol BPool clones on Polygon through a logic error in single-sided join and exit accounting, according to a technical write-up by DarkNavy.
Two questions determine exposure for any pool holding a token with fewer than 18 decimals, such as WBTC or USDC: whether joinswapPoolAmountOut is callable and whether reserves can be pushed toward zero through public swaps. A pool that answers yes to both has the conditions this attack required, SlowMist said. With V1 contracts immutable and unmaintained, no patch is coming — the only protection for liquidity providers is withdrawing from affected pools before the same math is exploited again.
This article is for informational purposes only and does not constitute investment advice.