Worked example · 2026-08
TAC — the upstream fix was three days old and the attack method had been published two days earlier, so the chain was drained through a bug it could have patched and then froze for ten days — TAC (Cosmos EVM / TON-connected L1) — 2026-08-22
Summary
TAC is a Cosmos SDK Layer-1 with an EVM execution environment, positioned as a bridge between EVM tooling and the TON ecosystem. Its EVM layer runs Cosmos EVM, a shared upstream component.
Cosmos EVM carried a balance-accounting asymmetry. The EVM StateDB tracked only spendable tokens; the Cosmos SDK bank/staking ledger also treated locked vesting tokens as eligible for delegation. Because the two views disagreed about what an account held, a caller could delegate more than it actually owned, and the resulting subtraction underflowed — wrapping an account balance toward 2^256. The bug was reported to the Cosmos bug-bounty programme on 2026-04-25 and fixed on the main branch on 2026-05-15. The fix reached released versions in a backport on 2026-08-19. On 2026-08-20, Push Chain publicly described the attack method.
On 2026-08-22, TAC — running an unpatched build — was exploited. 2,985,651,403.40 TAC (28.6% of total supply) left a custodial account. TAC halted block production at block 24,671,475 (23:58 UTC) and published almost nothing. The attacker bridged out and sold: ~1.21B TAC on BNB Chain for roughly 950,000 USDT, and 49.9M TAC on TON for roughly 55,000 USDT.
The chain stayed frozen for more than ten days while validators converged on a patched binary. The recovery plan published with the 2026-09-01 postmortem was an accounting reconstruction rather than a recovery: freeze 65.1M TAC still reachable on-chain, accept that 1.66B TAC on BNB Chain was gone, and replace 1.26B TAC out of Foundation treasury reserves so that honest holders were made whole against a supply the protocol no longer controlled.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| (standing) | TAC runs Cosmos EVM with the StateDB / bank-ledger vesting-delegation asymmetry (affected: < 0.6.2 and 0.7.0–0.7.1) | (standing T9.007 surface) |
| 2026-04-25 | Bug reported to the Cosmos bug-bounty programme | (upstream disclosure begins) |
| 2026-05-15 | Patch merged to Cosmos EVM main branch | (fix exists) |
| 2026-08-19 | Backport released into shipping versions — the patch becomes deployable | (fix available) |
| 2026-08-20 | Push Chain publicly describes the attack method | exploitation window opens |
| 2026-08-22 | TAC exploited on an unpatched build; 2,985,651,403.40 TAC (28.6% of supply) drained via delegation underflow | T9.007 exploitation |
| 2026-08-22 23:58 | TAC halts block production at block 24,671,475; no amount, transaction, component, or timetable disclosed | (operator response — containment without disclosure) |
| (after) | ~1.21B TAC sold on BNB Chain (~950K USDT); 49.9M TAC sold on TON (~55K USDT) | T7.003 — cross-chain offramp |
| 2026-09-01 | Postmortem published: root cause, freeze 65.1M TAC, 1.66B TAC on BNB Chain unrecoverable, 1.26B TAC replaced from Foundation treasury | (recovery plan) |
| through 2026-09-02+ | Network still frozen — 10+ days — pending validator consensus on the patched binary | (cost of the halt) |
What defenders observed
- Every element of a working disclosure process functioned, and the chain was still drained. A researcher found the bug, a bounty programme paid for it, maintainers patched it, and a backport shipped. The one step with no owner was "someone at TAC upgrades the binary," and that is the step the whole chain depended on.
- Public attack-method write-ups compress the deployment window to days. Push Chain's 2026-08-20 description is normal, useful security communication. Its predictable effect is that every downstream chain on an affected version becomes a target within 48 hours. Downstream operators must treat an upstream disclosure as a deployment deadline, not as reading material.
- Version-inventory is the missing control and it is trivial. The affected range was published (< 0.6.2, 0.7.0–0.7.1). Any chain that could answer "what version of Cosmos EVM are we running, right now?" from a monitored source would have known it was exposed on 2026-08-19. Adopting a shared execution stack means inheriting its CVE feed as an operational obligation.
- Silence during the halt made the incident harder to reason about for everyone else. Withholding the amount, transaction, and vulnerable component for ten days did not slow the attacker — who had already sold — but it did prevent other Cosmos EVM chains from checking whether they shared the exposure. A halted chain's disclosure is a public-good obligation to its peers, not just to its holders.
- Nominal supply loss and realised proceeds are different quantities, and only one of them is a threat metric. 28.6% of the supply became roughly $1.0M, because the attacker's inventory was priced in a market they were destroying. Reporting a "$7.5M hack" describes neither what the attacker earned nor what the ecosystem paid — which was ten days of downtime plus 1.26B TAC of treasury.
- The freeze boundary is the bridge. 65.1M TAC frozen on-chain, 1.66B TAC written off on BNB Chain. The recoverable fraction was decided entirely by how much had already crossed a bridge when block production stopped.
Public references
[cryptoranktac2026]— CryptoRank, "TAC blockchain remains frozen for over 10 days after a massive exploit forces a 1.26 billion token bailout" (postmortem detail: StateDB / bank-ledger vesting asymmetry, unchecked subtraction wrapping toward 2^256, affected versions, 2026-04-25 → 05-15 → 08-19 → 08-20 → 08-22 sequence, 2,985,651,403.40 TAC / 28.6% of supply, BNB Chain and TON sale proceeds, freeze / write-off / treasury-replacement plan): https://cryptorank.io/news/feed/4e164-tac-remains-frozen-for-over-10-days-after-a-massive-exploit-forces-a-1-26-billion-token-bailout[cryptoslatetac2026]— CryptoSlate, "EVM network halts block production after supply exploit as TON connection remains dark" (halt at block 24,671,475 timestamped 2026-08-22 23:58 UTC; the explicit list of what TAC did not disclose; the ~$2.85M May bridge exploit): https://cryptoslate.com/evm-network-halts-block-production-after-supply-exploit-as-ton-connection-remains-dark/[kucointac2026]— KuCoin, "TAC Blockchain Hit by Cosmos EVM Module Exploit, $7.5M Stolen" (the ~$7.5M headline and the project's statement that no new tokens were created): https://www.kucoin.com/news/flash/tac-blockchain-hit-by-cosmos-evm-module-exploit-7-5m-stolen[bingxtac2026]— BingX, "TAC Blockchain Confirms Cosmos EVM Precompile Exploit; $7.5M Drained": https://bingx.com/en/flash-news/post/tac-blockchain-pauses-network-after-cosmos-evm-precompile-exploit-steals-m-and-b-tac-tokens[cryptopolitantac2026]— Cryptopolitan, "TAC climbs off record low after exploit forces chain halt": https://www.cryptopolitan.com/tac-climbs-after-exploit-forces-chain-halt/
Discussion
T9.007 entered the corpus as a story about forked contracts — a project copies another protocol's code, upstream patches a bug, the fork does not. BounceBit (2026-08-19) moved it up a layer to an adopted execution stack. TAC is the same layer as BounceBit with the timeline made explicit, and the explicit timeline is what makes it worth filing separately. Where most T9.007 cases are reconstructed after the fact — the fork was running old code, nobody knows since when — TAC's exposure window is documented to the day at every step: bounty report, main-branch merge, backport release, public attack description, exploitation. The interval that killed it was 72 hours long and every hour of it was public.
That precision changes what the case can teach. The usual conclusion from a fork-substrate incident is "track upstream," which is advice without a threshold. Here the threshold is measurable: a backport landed on 08-19, a method write-up on 08-20, an exploit on 08-22. Any downstream chain whose emergency-upgrade path is slower than about two days from upstream release is, in this class, running on the attacker's schedule rather than its own. Cosmos EVM is shared by a large and growing set of chains, and the affected version range was published — so the population at risk on 08-19 was enumerable by anyone, defenders included.
The aftermath is the corpus's cleanest illustration of a pattern also visible in Harmony (2026-08-12) and The Sandbox SAND (2026-08-22): mint or drain capacity is not extraction capacity. 28.6% of a token's supply realised about $1.0M, because the only buyers were the ones the attacker was selling into. The real bill was paid by the project — ten days of frozen chain and 1.26B TAC of treasury — and by the honest validators and users who had no part in any of it. Contributors documenting supply-scale incidents should record nominal, realised, and response cost as three separate figures, because collapsing them into one headline number misstates every question a defender would actually ask.