OAK — OnChain Attack Knowledge

Worked example · 2023-08

Zunami Protocol price-manipulation drain via Curve pool — Ethereum — 2023-08-13

Loss
CertiK states 1,178 ETH (about $2.16M), with the attacker left holding 1,152 WETH (about $2.12M) after repaying flash loans [certikzunami]. Ackee splits the loss into 26 WETH from zETH and 1,178 WETH from UZD [ackeezunami]. The proceeds were cashed out through Tornado Cash [merklezunami].
Corrected 2026-10-11
the mechanism is a block-cached price manipulated via SDT/SushiSwap and the strategy's balance (UZD cacheAssetPrice()), not a swap on a Curve pool used as oracle; flash loans came from Uniswap V3 and Balancer (about $32.4M repaid), not ~$4.5M from Balancer alone; the invented two-transaction ETH split and intraday timeline were removed.
OAK Techniques observed
OAK-T9.001 (Oracle Price Manipulation — the attacker manipulated the spot prices feeding Zunami's price calculation (SDT price on SushiSwap and the strategy's balances), then forced the inflated price to be cached, raising the attacker's UZD balance from about 4.8M to 16.9M [certikzunami]). OAK-T9.002 (Flash-Loan-Enabled Exploit — the attacker used flash loans from Uniswap V3 (7,000,000 USDT) and Balancer (7,000,000 USDC and 10,011 WETH) [certikzunami]).
Attribution
pseudonymous. The attacker's address is observable on-chain; the funds were cashed out through Tornado Cash [merklezunami]. No attribution to a known actor appears in the cited sources.
Key teaching point
Zunami shows that a price value cached for a whole block is a flash-loan target: the attacker moved the inputs to the price calculation, forced the cache to record the inflated value, and then profited from every contract that read the cached price. Ackee identifies the price-caching vulnerability as the shared root cause of the zETH and UZD exploits, and notes the UZD 1.1 update extended caching to functions like balanceOf so other contracts could read the inflated price [ackeezunami].

Summary

Zunami Protocol was a yield-aggregation protocol on Ethereum that issued the stablecoin UZD and the ETH-denominated zETH, backed by strategies that deposit into Curve and related venues. On 2023-08-13 an attacker exploited a price-caching weakness in the two products. Per Ackee, the attacker manipulated the LP price calculation in the MIMCurveStakeDao strategy by donating SDT tokens to it, the inflated price was cached for the whole block, and the attacker ran earlier operations in reverse order to profit; the zETH exploit took 26 WETH and the UZD exploit 1,178 WETH [ackeezunami].

CertiK's walkthrough of the UZD leg: flash loans from Uniswap V3 and Balancer, swaps through Curve pools into UZD and SDT, SDT sent to the strategy contract, SushiSwap prices pushed up via WETH/SDT and USDT/WETH swaps, a call to cacheAssetPrice() that raised the attacker's UZD balance from about 4.8M to 16.9M, unwinding of the price manipulation, swaps of the inflated UZD back through Curve, and repayment of about $32.4M of flash loans, leaving about 1,152 WETH [certikzunami]. UZD fell about 99% and zETH about 89% in the aftermath (reported by CryptoPotato in the search results; not separately fetched).

The attacker's proceeds were cashed out through Tornado Cash [merklezunami].

Realised extraction

Roughly 1,152-1,178 ETH (about $2.1M), depending on whether the figure is gross or after flash-loan repayment [certikzunami]. Laundered via Tornado Cash [merklezunami]; no recovery is reported in the cited sources.

T9.001 / T9.002 classification

The exploit is a price-manipulation attack in which the manipulated input was an internally computed, block-cached price rather than an external oracle feed (T9.001), funded atomically by flash loans (T9.002). The earlier-draft description of a Curve pool exchange rate acting as the protocol's oracle is not supported by CertiK or Ackee and was removed.

Public references

Techniques demonstrated (2)