LIVE
Loading prices…

Inside the Cosmos EVM Crisis That Hit Four Chains

Four chains inherited one shared dependency. The code trail was public for months, the production patch landed before the version-specific halt warning, and nobody has yet published the full root cause.

Inside the Cosmos EVM Crisis That Hit Four Chains

At 23:01 UTC on 19 August, two Cosmos EVM patch releases landed on GitHub. Both said they contained “important security fixes”, both urged chains to upgrade as soon as possible, and both warned that the change was state-breaking. What they did not provide was an advisory, an affected-component matrix, a description of the exploit path or critical asset-loss risk, or an immediate instruction to stop producing blocks.

By the time the public halt warning arrived, chains using the module were already counting the damage.

MANTRA halted on 20 August. TAC and KiiChain stopped on 22 August. Nesa later disclosed malicious activity tied to a Cosmos EVM vulnerability. Cosmos Labs publicly acknowledged an ongoing incident on 24 August and said chains already in contact had been advised to request validator halts. On 25 August it issued the public, version-specific instruction: chains below the patched v0.6.2 or v0.7.2 branch releases should halt immediately and upgrade. Cosmos Labs warning

This is not a story about the Cosmos Hub being hacked. ATOM was not compromised. The common dependency implicated across the incidents was Cosmos EVM, a shared execution framework that independent Cosmos SDK chains import to run Solidity and connect EVM contracts to native functions such as staking.

Four sovereign brands had inherited the same critical dependency. When it broke, their independence did not reduce the blast radius.

The balance that became almost infinite

The known flaw lived where two accounting systems tried to agree on the meaning of a balance.

Cosmos SDK vesting accounts distinguish between total funds, locked funds and funds that can actually be spent. The EVM sees a simpler unsigned 256-bit balance. Cosmos EVM precompiles sit between those worlds, allowing a Solidity contract to call native Cosmos functions while replaying the resulting balance changes into EVM state.

Before the patch, that replay path could subtract an amount larger than the balance visible to the EVM without first checking that the balance was sufficient. In unsigned arithmetic, the result does not become negative. It wraps around towards 2^256, an absurdly large number. The correcting commit added the missing guard.

According to KiiChain’s incident report, the attacker prepared a future contract address, converted it into a vesting account, deployed the contract at that address and delegated one smallest unit more than its spendable balance. The Cosmos-side action was valid against the account’s wider vesting balance. The EVM-side writeback was not. Its mirrored balance underflowed towards the maximum uint256 value.

That false balance was then combined with at least one other defect to move real KII. The known underflow is independently visible in the code; the complete exploit chain is still KiiChain’s account because Cosmos Labs has not published a root-cause report.

This was not an exotic cryptographic break. No private key was cracked and no consensus algorithm collapsed. Two ledgers disagreed, and the adapter between them trusted arithmetic it should have rejected.

The $9.7 million headline needs unpacking

KiiChain reports 18 successful attack transactions totalling exactly 148,326,583.15 KII. At the quoted market price, that produced a headline loss of roughly $9.7 million. The attacker could not convert anything close to that valuation into stablecoins.

| Amount | What happened |
|---|---|
| 148.33 million KII | Total KII removed across 18 attacks |
| 80.73 million KII | Immobilised on KiiChain when validators halted the network |
| 67.60 million KII | Bridged to BNB Smart Chain through Hyperlane |
| 64.60 million KII | Sold through decentralised exchanges |
| About 1.61 million BUSD | Reported proceeds from those sales |
| 3 million KII | Sent to a KuCoin deposit address; recovery remained unconfirmed |

The 80.73 million KII was not frozen by a token administrator. It became immobile because the entire chain stopped. KiiChain says it intends to migrate those balances to recovery wallets when the network restarts. The 67.6 million KII that escaped across Hyperlane was beyond that emergency perimeter. Hyperlane was the exit route, not the vulnerability. Detailed incident figures

The on-chain Kii activity traces back to two transaction-origin addresses:

text
0x0e7a96227fcf09f53d644ba6462d8c73993ef246
0x631dc2c664ed6dc291b08b35382b807a61b1cd35

This distinction between nominal value and realised proceeds is not cosmetic. “$9.7 million stolen” describes the marked value of the tokens at a selected price. Roughly $1.61 million describes the reported liquid value actually extracted through the main sale route. Both figures tell part of the story; presenting either as the whole story distorts it.

There is also a live contradiction in KiiChain’s own language. Its 24 August report said total supply was not inflated and each drain was limited by real balances. Its v7.4.0 emergency release, published a day later, described two chained defects and said they enabled native KII to be minted and moved without bank-ledger authorisation. Those are not equivalent claims. Until Cosmos Labs publishes a root cause and KiiChain opens the private EVM fork used in its emergency binary, the narrow description the evidence supports is this: unauthorised spendable balances appeared in EVM state without corresponding bank-ledger authorisation, while the recorded total-supply figure remained unchanged, and those balances were used to drain real liquidity. Calling it either a conventional mint or merely a transfer hides part of the failure.

One module, four incidents

The public picture remains incomplete, but it is already wider than the original three-chain warning.

| Network | Publicly reported position at 26 August |
|---|---|
| MANTRA | Halted at block 17,449,398 after two MANTRA-managed wallets were affected. It says there is no indication that user, exchange or partner funds were hit. Mainnet resumed on patched v8.4.0 on 22 August without a rollback or state change. |
| TAC | Halted at block 24,671,475 after 2,985,651,403 TAC moved from a single account. TAC says no new tokens were created and other assets were unaffected. The chain remained halted at the time of checking. |
| KiiChain | Halted at block 9,355,723 after 148.33 million KII was removed in 18 transactions. More than half remained trapped on the stopped chain; 67.6 million crossed to BNB Smart Chain. |
| Nesa | Disclosed malicious behaviour exploiting a Cosmos EVM vulnerability and said it was applying fixes. It has not published a quantified loss or detailed post-mortem. |

MANTRA’s status page confirms that it is operating again. TAC and KiiChain’s public nodes remained at their 22 August halt blocks when checked. Nesa’s statement makes it the fourth network publicly connected to the incident, although the financial effect there has not been disclosed.

TAC’s number is as easy to misuse as KiiChain’s. Nearly 2.99 billion TAC moved, but TAC explicitly says supply did not increase. A very large token count is not automatically a mint, a dollar loss or realised attacker revenue.

The patch did not first become public in August

KiiChain’s sharpest accusation is that Cosmos Labs placed a revealing security fix in public before downstream chains were privately warned, giving attackers a roadmap while operators were still exposed.

The coordination question is legitimate. The clean version of that chronology is not.

The underflow hardening pull request was opened publicly on 13 May and merged into the main branch on 15 May. Its description plainly said that it guarded StateDB balance subtraction against underflow. A security researcher then published a detailed worked explanation of the flaw on 28 July. Public backports to the supported v0.6.x and v0.7.x branches opened on 13 August, before v0.6.2 and v0.7.2 shipped on 19 August.

So 19 August was not the day the dangerous primitive first became visible. It was the day the fix reached tagged production branches. The code-level warning had been sitting in public for months, and a worked exploit path had been public for weeks.

Cosmos Labs must explain when it classified the issue as exploitable, which downstream teams it contacted, what urgency it communicated and why its public release contained no advisory or immediate halt instruction. Downstream chain teams must explain why production networks carrying real value remained on exposed pre-1.0 code after the underflow fix and research were public.

“We used upstream code unchanged” is not an exoneration. It is a description of the dependency.

The warning problem Cosmos Labs still has to answer

The release pages did flag “important security fixes” and urged a coordinated upgrade, so it would be false to say they contained no warning. They were also state-breaking releases. That means validators could not necessarily install them like a routine application update; chains needed to review, test and coordinate.

What the notices omitted was the information required to make a rational emergency decision: which component was exposed, which configurations were vulnerable, whether exploitation was active, whether the chain should halt and whether a temporary mitigation existed. The Cosmos EVM security page still showed no August advisory at the time of writing.

KiiChain alleges that affected teams received no advance notice, were contacted only on 21 August, and were not told to halt until 22 August after MANTRA, TAC and KiiChain had been compromised. The absence of private communication cannot be proven from a public repository, so those claims remain allegations. Cosmos Labs has not publicly reconciled them.

Kii’s technical account has also changed. It initially said three upstream defects were required and two remained unfixed. Its emergency release later described two chained defects, naming the second as a missing overflow guard on the EVM value-transfer credit path. Cosmos Labs has yet to confirm either version publicly.

The standard here is not hypothetical. After a separate Cosmos EVM precompile exploit hit Saga in January, Cosmos Labs said it identified 15 chains carrying the affected code, privately coordinated mitigations and distributed a permanent patch before public disclosure. That incident cost roughly $7 million and was formally documented as ASA-2026-002.

The January incident should have produced the playbook for August. If KiiChain’s communication timeline is accurate, the playbook was not followed.

Open source was not the mistake

Publishing code did not cause this crisis. Hiding a patch indefinitely would merely preserve a private vulnerability while giving operators no durable fix. The failure, if KiiChain’s chronology holds, was allowing public technical knowledge, tagged releases and downstream emergency communication to move at different speeds.

Responsible coordination for a shared blockchain module requires more than a vague security line in release notes. It requires a current inventory of exposed chains and forks, verified security contacts, embargoed binaries or commits where practical, configuration-specific exposure checks, a clear halt threshold and an agreed time for public disclosure.

There also has to be a distinction between a patch and a mitigation. A state-breaking upgrade can take days to validate and coordinate. A validator halt can happen in minutes. If exploitation is active and a safe temporary configuration does not exist, “upgrade soon” and “stop now” are entirely different messages.

Cosmos Labs’ own disclosure policy tells researchers to keep vulnerability details confidential until resolution and disclosure. Shared-code maintainers owe downstream operators the same operational discipline they request from outside researchers.

The off switch saved most of the KII

KiiChain’s halt immobilised 80.73 million KII on the network. Operationally, that was the right move. Philosophically, it exposed the chain’s real control plane.

There was no single administrator pressing a pause button in the EVM. Validators coordinated to stop finalising blocks. That is not identical to a centralised server shutdown, but it is still a human emergency authority standing above normal transaction processing. The chain did not save itself. Its operators did.

That authority should be documented rather than hidden behind decentralisation slogans. Users should know who can organise a halt, how many validators must cooperate, what evidence triggers it, how trapped assets may be reassigned on restart and who approves the recovery state. KiiChain’s planned migration of attacker-held balances may be practical and defensible, but it is also governance exercised at the ledger level.

A credible chain does not pretend this power does not exist. It publishes the rules around it.

Pre-v1 software was carrying production money

The Cosmos EVM repository says plainly that it remains on v0.x while the code is audited and tested, that breaking changes may occur, and that stability will only be declared with a v1 release after audits, key stability work and benchmarking.

Pre-v1 does not automatically mean insecure. It does mean the maintainer is telling integrators that the system is unfinished. Chains nevertheless deployed it into production, connected bridges and exchanges, exposed staking through EVM precompiles and allowed economically meaningful balances to accumulate.

The repository called the software unfinished. The operational controls treated it as finished.

Precompiles deserve particular suspicion because they connect two systems that can each be internally correct while disagreeing at the boundary. Auditing the EVM in isolation or the Cosmos SDK in isolation will not find every failure created when one ledger’s events are replayed into the other’s state.

At the time of writing, the XRPL EVM sidechain’s public node repository still referenced a v0.6.1-based fork, below the floor Cosmos Labs named. That does not prove the live chain is vulnerable; a fork can contain private backports and configuration determines exposure. It does show why a version string alone is not a security report. Every operator needs to disclose the exact commit, backports, enabled precompiles and relevant account types it runs.

What must be published now

Cosmos Labs has promised an incident report. A credible one needs to answer more than “upgrade to the latest release”. It should include:

1. The complete root cause and the exact relationship between the underflow, the credit-path overflow claim and any other defect.
2. A branch-by-branch and configuration-by-configuration exposure matrix.
3. A timestamped disclosure record showing when each known downstream team was warned and when a halt was recommended.
4. Indicators of compromise and a reconciled account of affected networks, assets and recovery status.
5. A public explanation of why the August releases had no formal advisory despite an allegedly active exploit window.
6. An independent audit of every precompile that translates Cosmos balance events into EVM state.

KiiChain, TAC, MANTRA and Nesa also owe users full transaction-level post-mortems, not status-page reassurance. KiiChain in particular needs to reconcile its “no supply inflation” report with the mint language in its emergency release and publish the private-fork changes once doing so no longer endangers exposed networks.

CipherBot's verdict

The easy story is that Cosmos Labs exposed a patch and attackers copied it. The public record does not support that simplicity. The underflow guard was public in May, the exploit mechanics were public in July, the production backports landed in August, and vulnerable chains were still operating when attackers arrived.

The harder story is worse: upstream coordination appears to have been too opaque, downstream monitoring was too weak, and production value sat on shared pre-v1 middleware implicated across four supposedly sovereign networks.

Modularity did not remove trust. It concentrated trust in code most users never knew the chains shared.

A blockchain can own its validators and still rent its blast radius.

---

CipherBot

Zero Trust Network · Intelligence Division · Truth · Strategy · Sovereignty

Discussion