Root Cause
Tectonic, the largest lending protocol on Cronos (EVM-compatible), accepted TONIC — its own low-liquidity governance token — as collateral. The on-chain price oracle for TONIC was a spot AMM source without a TWAP or circuit-breaker defense. This created the classic spot-oracle + thin-liquidity = pump-and-borrow surface.
The attack mirrors the October 2022 Mango Markets exploit on Solana, where MNGO was similarly pumped via self-trading to inflate collateral value before borrowing protocol treasuries.
// Simplified vulnerable oracle pattern (spot-price, no TWAP)
function getUnderlyingPrice(address cToken) external view returns (uint256) {
// Direct AMM reserve ratio — manipulable in a single block
(uint112 reserve0, uint112 reserve1, ) = IUniswapV2Pair(pair).getReserves();
return (reserve1 * 1e18) / reserve0;
}
Attack Steps
| # | Time (UTC, ~Aug 30) | Action |
|---|---|---|
| 1 | T+0 | Attacker flash-borrows large capital base |
| 2 | T+5 min | Aggressively buys TONIC on Cronos DEXes, pumping price ~100x in ~20 min |
| 3 | T+20 min | Deposits inflated TONIC as collateral across Tectonic markets |
| 4 | T+22 min | Borrows stablecoins, wBTC, wETH, CRO against inflated collateral value |
| 5 | T+25 min | Bridges ~$6.3M USDC to Ethereum before any halt |
| 6 | T+30 min | Cronos validators detect anomaly; final block 90,907,150 at 14:32:47 UTC |
| 7 | T+~5h | Cronos rolls chain back ~11,000 blocks to pre-attack state; ~$68.7M erased on-chain |
DefiLlama showed ~$121.7M TVL in Tectonic on Aug 26; by Aug 31 this had fallen to ~$3M.
Impact
- Protocol: Tectonic (largest Cronos lending protocol)
- Chain: Cronos (EVM) — with $6.3M permanently escaping to Ethereum
- Attempted loss: ~$74–75M across 9 lending markets
- Recovered via rollback: ~$68.7M (on Cronos)
- Permanent loss: ~$6.3M USDC on Ethereum (outside rollback reach)
- Context: Cronos halted block production and performed a coordinated validator rollback — a highly contentious response in the blockchain community given its centralisation implications
Lessons for Auditors
- Never accept a protocol's own governance token as high-LTV collateral via a spot oracle. Governance tokens are structurally manipulable — low float, captive AMM liquidity, economic incentive to pump. Enforce zero or very-low collateral factors for them, or remove them entirely from borrow markets.
- Spot AMM oracle feeds are manipulation surfaces. Require TWAP with a minimum window (30–60 min), or use a Chainlink feed with circuit-breaker fallback. A 20-minute pump should not move a borrow limit.
- Flash-loan capital amplification makes small liquidity irrelevant. An attacker with $10M in flash-loan capital can pump a $2M liquidity pool 5x within a single block. Model the minimum cost of a profitable pump-and-borrow and compare it to the protocol's borrow ceiling — if the attack is profitable with realistic flash-loan fees, re-architect the oracle.
- Chain rollbacks are not a security model. The Cronos rollback was operationally successful but required validator coordination in under 30 minutes — a high bar. The $6.3M that bridged to Ethereum first is permanently lost regardless. Security must be at the application layer.
- Collateral concentration risk amplifies oracle attacks. When one asset (TONIC) is the collateral for borrowing nearly all other assets in a protocol, a single oracle compromise produces catastrophic leverage.