
Rekt - Initia - Rekt
Rekt News post-mortem of the 23 October 2026 Initia exploit. A MoveVM script-caching bug let an attacker credit unbacked WETH, iUSD, AUSD0 and USDC without raising total supply, and bridges paid out about $2.73 million (1.4 million AUSD, 105 ETH, 1.08 million USDC). It includes 0xCanzi's local replay of a stale cached verification, the on-chain laundering timeline, and the Foundation's backing-restoration pledge.
What it is
On 23 October 2026 an attacker exploited a script-caching bug in Initia's Aptos-derived MoveVM. They credited one Initia account with unbacked iUSD, AUSD0, USDC and WETH, then withdrew through bridges. About $2.73 million in real assets left: 1.4 million AUSD and 105 ETH via LayerZero, and roughly 1.08 million USDC via Noble and Circle's CCTP. Initia attributed the cause to script caching that let malicious code bypass security checks. It did not name a file, commit or function.
How it works
The mechanism below is researcher 0xCanzi's local replay, which uses real Move VM code and models rollback locally. The page says it is a possible mechanism, not confirmation of the live attack.
- The attacker publishes a
Routermodule whoseswapdeclares aFungibleAssetreturn but aborts. A script passes the result ofswapto the primary fungible store's deposit function. The types line up, so the VM verifies the script and caches the result. - The abort rolls back the
Routerpublication, but the cached verification survives. - The attacker republishes
Routerat the same address, withswapreturning an attacker-builtQuoteobject (currency metadata plus a claimed amount). - The same script reruns. The VM reuses the old verdict, so
Quotereaches deposit as if it were a genuine token. Deposit credits the claimed amount.
flowchart TD
A[Rerun script after Router republished] --> B{Cached verification present?}
B -->|Yes| C[Quote passes as FungibleAsset, balance credited]
B -->|No, fresh VM| D[Rejected: TYPE_MISMATCH]This path adds to a balance without touching total supply, which matches Initia's report that recorded total supplies did not change. No native INIT was minted.
Timeline and losses
- 14:59:17 to 14:59:30 UTC: four batches forge 3 million iUSD, 2 million AUSD0, 2 million USDC and 200 WETH (about $7.48 million face value, per Bitquery).
- 15:01:59: 1.4 million AUSD released on Ethereum, swapped to 581.55 ETH at 15:03:23.
- About 1 million USDC from the Noble reserve swapped to 415.70 ETH at 15:04:59. 105 ETH paid out at 15:06:47.
- 15:24: last successful withdrawal, 80,000 USDC (about 33.18 ETH).
- 15:41:30: Initia halts the L1 and rollups. Five seconds later the attacker consolidates 1,135.52 ETH into a fresh wallet.
- 16:31:59: Agora's
batchFreezelands, but the attacker's AUSD balance was already zero.
The halt came about 14 minutes after Spreek's public alert, and the 28-minute gap before that alert was enough for most of the payout. D2 Finance counts the AUSD adapter at 71% depleted and the native-ETH adapter at 96%. The Noble USDC reserve fell to $63 by 15:37 UTC and ordinary withdrawals began failing.
Preconditions / Affected
Holders of the Initia-side representations (iUSD, AUSD0, USDC, WETH) and the Ethereum and Noble reserves backing them were affected. Bitquery counts $4.55 million in forged face value still on Initia at the halt. Two attempts to swap forged iUSD into AUSD0 failed.
What to do
The page gives one detection idea for Move VM forks: run the same script in a VM that retains its earlier verification result and in a fresh VM, after a rollback and module replacement, and flag any divergence. In the replay, the cached VM accepted the forged object and the fresh VM rejected it.
Caveats
- The live exploit sequence is unconfirmed, and Initia's public movevm repository listed no security advisories on 28 October.
- On 28 October the Initia Foundation approved funding to restore 1:1 backing, up to 1.08 million USDC, 105 ETH and 1.4 million AUSD0. This is subject to reconciliation and final transfer approval. No restart date was given, and the plan for the remaining forged balances is unstated.
- The Code4rena contest in January 2025 and a Zellic report (34 findings, two critical) covered Initia's movevm. The page does not establish whether either tested this interaction.
- A separate Hexens finding on a stale type-tag cache in Aptos's Move VM is a different mechanism. The page does not claim Initia's fork contained it.
- On 27 October the consolidation wallet sent 400 ETH to one address, which later made a 100 ETH Tornado Cash deposit.
Organisations named here
- 0xCanzi
- Agora
- AUSD
- Code4rena
- D2 Finance
- forged balances
- Hexens
- Spreek
- Sprunky
- stale verification cache
- Zellic
- Zon
Technologies named here
- Bitquery
- Tornado Cash
- LayerZero
- Cosmos SDK
- Ethereum
- Circle
- Liquid Network
- 0xCanzi's local replay
- 1inch
- AUSD0, iUSD, WETH and USDC representations on Initia
- AUSD batchFreeze
- Circle CCTP (used for USDC exits)
- Code4rena Initia Move contest (7 to 28 January 2025)
- D2 Finance
- Hexens
- Initia
- Initia L1 and rollups (halted 23 October at 15:41:30 UTC)
- Initia movevm repository (no published security advisories as of 28 October)
- Initia MoveVM (Aptos-derived Move VM, Rust, connected to Cosmos SDK via Go bindings), script caching bug
- INIT token (native INIT not minted; KuCoin suspended deposits and withdrawals on 24 October; Upbit and Bithumb trading-caution designation on 26 October)
- LayerZero bridge: Ethereum contract holding AUSD for Initia (0x38b8b7ca28e672018a299b20565aca8cf200c844), 1.4 million AUSD released, about 71% of holdings
- MoveVM
- Sprunky
- Zellic report on Initia
Techniques named here
- Bridge withdrawal of forged balances
- Differential testing of cached versus fresh VM
- MoveVM state spoofing
- Stale script verification cache exploitation
- Token swap to ETH and fund consolidation
- Tornado Cash gas funding
Related in Blockchain

THORChain Exploit Report #2 — GG20 root-cause disclosure

Black Thursday revisited: MakerDAO keeper exploited for $500K
.jpg)