OAK — OnChain Attack Knowledge

Worked example · 2026-08

Tectonic — a lending market accepted its own thinly-traded token as collateral, and when the price was pumped the chain itself had to be rewound to contain the loss — Tectonic / Cronos — 2026-08-30

Loss
$120.4M borrowed, $9.19M permanently lost — per Cronos's official incident report, published 2026-09-08, which supersedes the $74–75M headline that circulated in the first week. The report puts the borrow at $120.4M across nine Tectonic markets, the amount restored by the chain rollback at $111.2M (~92%), and the $9.19M that had already bridged off Cronos before the halt as "not recovered and beyond the restoration's reach." The earlier figures are worth keeping in view rather than deleting: the published asset breakdown ($54.32M USDC, $44.87M USDT, 95.36 WBTC, 1,861 WETH, 39.61M CRO and smaller positions) never reconciled with $74–75M — the stablecoin legs alone exceed it — and $120.4M is the number that breakdown was describing all along. One gap remains open: independent researchers put the escaped funds at $6M–$8.3M (the ~2,592 ETH observed on Ethereum), the report says $9.19M, and the postmortem does not reconcile the difference. Tectonic's TVL fell from $122M to just under $3M. Largest August 2026 incident, and at the corrected figure among the largest crypto thefts of 2026 by nominal value.
OAK Techniques observed
OAK-T9.001 (Oracle Price Manipulation — primary, confirmed mechanism. The attacker moved TONIC — Tectonic's own governance token, with roughly $1.34M of liquidity — and the protocol's price feed followed, jumping 6.46× in a single block about 14 seconds after the first deposit and roughly 100× over 20 minutes. Inflated TONIC was then posted as collateral against real assets. See techniques/T9.001-oracle-price-manipulation.md). No flash loan is recorded, so OAK-T9.002 is not claimed: the manipulation ran across many blocks over tens of minutes, which is the opposite of an atomic borrow-and-repay. OAK-T7.003 (Cross-Chain Bridge Laundering — the $9.19M that reached Ethereum and became 2,592 ETH; the offramp is the only part of the operation the chain-level response could not undo).
Attribution
unattributed. No named individual, group, or link to a tracked OAK actor has been published. Cronos and Tectonic identified the exploit path and coordinated the network response; neither published attribution.
Key teaching point
A protocol that accepts its own token as collateral has written its solvency as a function of its own share price, and thin liquidity sets the price of rewriting it. TONIC's entire market was about $1.34M deep. Against that, Tectonic held $122M of real assets and would lend against TONIC at a 20% collateral factor — a factor that reads as conservative and is meaningless when the denominator is manipulable for six figures. The exploitable ratio here is not loan-to-value; it is cost-to-move-the-price versus value-borrowable-after-moving-it, and it was inverted by two orders of magnitude. The general control is a liquidity-aware collateral ceiling: for any asset, the total borrow it can support must be bounded by the cost of manipulating its price, not by a percentage of a quoted valuation. Where a protocol lists its own token, that bound should be treated as near zero.

Summary

Tectonic was the largest lending protocol on Cronos, a Cosmos SDK / Tendermint chain operated by Crypto.com. Like Compound-family markets it lets users deposit an asset, take a collateralised loan against it, and be liquidated if the position falls under-collateralised. Among its listed collateral assets was TONIC, Tectonic's own token — priced at roughly $0.00000103 and supported by about $1.34M of on-chain liquidity, against a protocol holding $122M.

On 2026-08-30 an attacker traded against that thin book. The price feed Tectonic used to value TONIC followed: it rose 6.46× in one block, about fourteen seconds after the attacker's first deposit, and roughly 100× over twenty minutes. The attacker deposited TONIC at the inflated valuation and borrowed real assets against it — stablecoins, WBTC, WETH, CRO — in a borrow the official report records as a single transaction at 12:49:39, eleven minutes after the manipulation began — press reporting described a longer, ~65-minute operation, and OAK records both. When TONIC returned toward its real price, the loans were left standing against collateral worth almost nothing.

The response was not at the protocol layer. Cronos validators halted the entire network, which Tendermint's 100-validator cap made possible in minutes, and then rolled the chain state back to a point before the exploit. Block production resumed at 23:49:01 UTC on 2026-08-30 from block 90,896,189. The rollback reversed everything still on Cronos — $111.2M, about 92%. It could not reach what had already bridged to Ethereum, which the attacker converted to 2,592 ETH and which Cronos's report values at $9.19M.

Timeline (UTC, 2026-08-30)

When Event OAK ref
(standing) Tectonic lists TONIC, its own token, as collateral; TONIC liquidity ~$1.34M, collateral factor 20%, protocol TVL $122M (standing T9.001 surface)
12:38:56 Attacker begins driving TONIC's price against its thin book T9.001 manipulation
~12:39:10 (T+~14s) Tectonic's TONIC price feed rises 6.46× in a single block T9.001 — feed follows the trade
12:49:39 Single borrow transaction takes $120.4M across nine Tectonic markets — USDC, USDT, WBTC, WETH, CRO and smaller positions — against inflated TONIC collateral; TVL collapses $122M → <$3M T9.001 extraction
(reported) TONIC up roughly 100× over ~20 minutes; press reporting described a ~65-minute operation, which the official report's single-borrow timeline does not match. OAK records both (source divergence)
during Funds bridged to Ethereum, swapped for 2,592 ETH ($9.19M per Cronos) T7.003 — the part that survives
13:25:00 Cronos team detects irregular activity — T+46m from the first manipulation (detection latency)
14:32:47 Cronos validators halt the network at block 90,907,150; Tectonic tells users not to interact with the protocol (operator response, T+1h54m)
23:49:01 Cronos restores chain state to before the exploit and resumes from block 90,896,189, discarding 10,961 blocks (1h54m); $111.2M restored (chain-level remediation)
2026-09-08 Cronos publishes its official incident report: $120.4M borrowed, $111.2M recovered, $9.19M unrecoverable (operator disclosure, T+9d)

What defenders observed

  • The oracle did not fail; it reported honestly on a market that cost $1.34M to move. There is no misconfiguration here of the kind that produced Moonwell's February 2026 cbETH mispricing. The feed tracked a real price of a real asset. The defect is upstream of the oracle — in the decision to treat a price from a shallow venue as collateral-grade — which is why oracle hardening (TWAP windows, multiple feeds, deviation bounds) mitigates but does not solve this class: every one of them still ends up reporting the manipulated market, just more slowly.
  • A 6.46× jump in one block is a complete detection signal on its own. No external data, no oracle comparison, no liquidity model needed. A per-block deviation bound on any collateral asset's feed, with borrowing paused on breach, converts this from a $120M event into a failed transaction. The feed moved at T+14s; the borrow landed at T+10m43s; nobody looked until T+46m.
  • Self-listing is the amplifier. Tectonic's solvency depended on TONIC's price; TONIC's price depended on Tectonic's perceived health. That loop is fine while the price only goes up. Under manipulation it means the protocol's own collapse is the attacker's funding source.
  • Chain-level rollback recovered ~92% of the nominal loss and nothing else could have. No protocol-layer control existed at that point — the loans were validly issued against validly priced collateral. This is the strongest recovery outcome in the 2026 corpus, and it was available only because Cronos is a Tendermint chain with a bounded validator set operated by a single commercial sponsor.
  • The bridge set the floor on recovery. Everything the rollback could not reach is exactly what crossed to Ethereum. Time-to-halt is worth precisely the value that leaves per minute, which makes cross-chain outflow rate — not TVL — the metric that should govern halt thresholds.
  • The rollback reversed 10,961 blocks, and every one of them belonged to somebody. Cronos restored state to the last block before the suspicious activity, so all activity in the 114-minute window was discarded regardless of whether it touched Tectonic — swaps, loan repayments, position changes, everything. Exchanges, bridges and any venue with off-chain accounting that credited the discarded fork must now reconcile against a history that no longer exists, and Cronos has published no list of affected venues, no deadline, and no compensation policy for the $9.19M. The report also concedes the communication failure in plain terms — "saving user funds took priority over updates." The price of a rollback is paid by uninvolved users, and it is paid in a currency (settled transaction history) that nobody quotes beforehand.
  • Detection took 46 minutes; the halt took 114. The manipulation started at 12:38:56, the $120.4M borrow landed at 12:49:39, the team noticed at 13:25:00, and the network stopped at 14:32:47. Every minute between the borrow and the halt was time for value to bridge out, and that interval is exactly what set the $9.19M floor. The response was fast by industry standards and still an order of magnitude slower than the attack.
  • The escape hatch has a governance cost that is not paid at exploit time. Rewriting settled state to undo a loss is available to Cronos and not to Ethereum, and using it converts "immutable ledger" into "ledger the validator set will amend under sufficient loss." That trade is real and it was almost certainly correct here; it should be pre-committed and published, not decided at 23:00 UTC on a Sunday under nine figures of pressure.

Public references

Discussion

The mechanism is four years old. Mango Markets (2022-10) is the corpus's canonical anchor for pump-your-collateral-then-borrow, and the reporting on Tectonic named it immediately. What is worth filing is not the technique but the response, because Tectonic and Mango sit at opposite ends of what a chain can do about it. Mango's loss was final on Solana and settled through governance and, eventually, a criminal conviction. Cronos deleted the loss by rewinding state, and kept only what had already left the chain.

That difference is a property of the substrate, not of the security engineering, and it should be read carefully by anyone tempted to treat it as a control. Cronos could rewind because it has around a hundred validators, one dominant commercial operator, and a coordination path that runs in minutes. The same afternoon's lesson from Oraichain (2026-08-09) and Harmony (2026-08-12) elsewhere in this corpus is the same lesson in a smaller frame: chains that can stop themselves lose less, and the recoverable fraction is decided by how fast the halt happens relative to how fast value bridges out. Here that fraction was 92%.

The unglamorous conclusion is the one that would have prevented the incident. A lending market listed its own token, with $1.34M of depth, as collateral behind $122M of real assets, and configured a 20% collateral factor that made the arrangement look prudent. Collateral factors express confidence in a price; they say nothing about the cost of changing it. Contributors documenting future cases in this class should record the collateral asset's market depth at the time of attack next to the loss, because the ratio between them — not the loan-to-value setting — is what makes a case comparable.

Techniques demonstrated (3)