← Radar

Incident case file

Sign in to watch

DefiTuna — Solvency Check Bypass via Illiquid Pool Rounding

Incident date July 16, 2026

1 views

ContainedSolana (cash-out bridged to Ethereum via Mayan Finance140 ETH parked in Railgun mixer)Smart contract logic flaw (rounding bypass)Cluster: TUN-SCV-2026-07

Estimated loss

$569.6K

Victims identified

more than ten victims identified
Victim group joining is coming soon.

Investigation

75%

Facts and investigation

Attacker: 9 attacker Solana addresses (base58): 9ytGWP8tCRF1keREJ5VHqBpSuM9MZYwm3oFQQa1SvESb (Attacker 1), 917DKTphW3rhBG5gsJpwKsNGisNV2dx74uUFd8HBEjtg (Attacker 2 — also the Fake TUNA/USDC pool), 7hiHL8AgDuLNVDQLfN3GHdLAEeCN1F7uz6nSANRvFJst (Attacker 3 — limit-order position 1), BK9aTnKfPNnnj45Me5ACrky2vexzUrZHRzr4BjmQpH3c (Attacker 4 — limit-order position 2), 8P3H7Hy98LWhw5QhuXdoigVdAzPCYRTYjdtQQKhGwvqD (5), GrXBhM6Ty6YxubFp8zubtJF12WXmKj1dhMyakRPeaDpo (6), F4xUroPaHro4gb2JAqa3e93E7DdZytRQJ4L2cHT

Funds moved to: Single atomic exploit transaction on July 16, 2026 05:48:12 UTC on Solana. Attackers borrowed 569,601 USDC from DefiTuna lending pool with zero collateral, routed through Embedded Jupiter Router into a fabricated TUNA/USDC Fusion pool with 0.001052 TUNA total liquidity at abnormally high tick 208,640. Swap output: 569,601 USDC → 0.000494 raw TUNA units. Two attacker-controlled limit-order positions then called DecreaseLimitOrder to withdraw 284,280.483231 USDC each. Fund consolidation to 2 piv
9 Solana attacker EOAs (base58, listed under Attacker field). DefiTuna program: tuna4uSQZncNeeiAMKbstuxA9CUkHH6HmC64wgmnogD. Damaged USDC vault: D76dDcSU5HnAGqVEZCDLyGgLpTp4xZuqeZyVDtUdDv55. Fake TUNA/USDC pool address: 917DKTphW3rhBG5gsJpwKsNGisNV2dx74uUFd8HBEjtg (same as Attacker 2). Solana pivot wallets holding consolidated funds: 3oUEaNt7uL7pjZ6gdiAiEVRp9ZCcGRec7B5aSvXcjbWS (~$383K) and D8cJRpXaCWVK8c3doDq7Ymoz2XE4WyhFhbgNytWwqptA (~$184K). Mayan Finance used as Solana→Ethereum bridge. Eth

Timeline: July 16, 2026, 05:48:12 UTC (Solana single atomic transaction): the attackers first created a nearly empty TUNA/USDC Fusion pool with initial price close to the legitimate oracle price (bypassing DefiTuna's pre-swap price-deviation checks). They then placed two attacker-controlled limit-order positions in this pool at abnormally high tick 208,640, adding a total of 0.001052 TUNA (owned by 7hiH...FJst and BK9a...QpH3c). These positions were designed to receive the USDC entering the pool. The attackers called DefiTuna: Open_and_increase_tuna_spot_position_jupiter to open a DefiTuna spot position with ZERO collateral. 569,601 USDC borrowed from the lending pool (minus fee) was routed through the Embedded Jupiter Router, with a 47-byte instruction specifying the swap path through the prepared thin pool. Exact swap math (at tick 208,640 with 0.1% fee): 569601 / (1.0001)^208640 × (1-0.001) = 0.000494845 → rounded down to 0.000494 TUNA. After receiving those 494 raw units, DefiTuna valued the position at its pre-swap/oracle price 0.001837534 in is_healthy() → compute_total_and_debt() (tuna_position.rs). At line 51: 494 × 0.0018375338 = 0.9077417. At line 53: to_num::() converts the positive fixed-point value to an integer by discarding the fractional part → result is ZERO. The zero 'total' was evaluated under the assumption that 'the leverage of an empty position is always 1.0x' and the position is considered healthy — bypassing the solvency check. The USDC now belonged economically to the two malicious limit-order positions. Each attacker called DecreaseLimitOrder to withdraw 284,280.483231 USDC each. DefiTuna disclosed on July 16 that the vector was 'identified and mitigated,' with team stating 'we are working on trying to recover the funds.' Fund flow: consolidation to 2 Solana pivot wallets, then bridged Solana→Ethereum via Mayan Finance. On Ethereum: 140 ETH deposited into Railgun mixer (from 0x6a2e244af2c17CFc64e8ca0EA4335318EdF20B0B); ~300K DAI parked in wallet 0x509B9D094A6C26D716aaC131E8aDee5B16B86d3e. CertiK publishes full technical analysis on July 17. DefiTuna has NOT confirmed whether it will backstop the pool from own resources if recovery fails — the ~$569,601 sits as a deficit on the USDC lending pool books, creating potential bank-run dynamics for stablecoin depositors. Vulnerability class: precision/truncation attack combined with attacker-controlled reference price pool — same family as prior 'compute_total_and_debt' rounding attacks. Vector verbatim (CertiK): 'In TunaPosition.ishealthy() solvency check, the zero total value was evaluated under the assumption that the leverage of an empty position is always 1.0x and the position is considered healthy. The self.compute_total_and_debt() uses a reference sqrt_price and round down the result in its calculation at line 53. The attacker engineered a very skewed pool that after routing USDC assets to the pool through an arbitrary swap path, the returning asset value is so small that the rounding in to_num::() reduced the total to zero, effectively bypassing the solvency check.'

Sources and coverage

Victim testimonies

No testimonies yet.

+ Add my testimony → (coming soon)