zkLink Nova Exploit: A Stale Transient Hash Forged a Root
Originally published at zkLink Nova Exploit: A Stale Transient Hash Forged a Root At 22:21:35 UTC on 28 October 2026 (Ethereum block 26,294,188), a single transaction emptied the Ethereum escrows of zkLink Nova , an aggregated rollup. The attacker walked away with 22.43 ETH plus 11 ERC-20 tokens , led by about 245.74 pufETH . Security firms priced the haul at roughly $743K to $805K depending on…
In October 2026, an exploit on zkLink Nova, an aggregated rollup with escrows on Ethereum and other chains, resulted in the theft of 22.43 ETH and 11 ERC-20 tokens, valued at around $780K. The attacker manipulated the system by writing a stale transient hash into the bridge and then withdrawing against false proofs they constructed themselves. This attack was made possible due to two design flaws in the claimMessage function.
Firstly, claimMessage performed an arbitrary call with a trusted identity. The function called the source chain's canonical message service, which, when set to the EthereumGateway, accepted an injected sendMessage(...) function call wrapping syncBatchRoot(...) as if it were a legitimate message. This allowed the attacker to forge a root.
Secondly, claimMessage contained a validation hash that remained valid even after its check. The hash was stored in EIP-1153 transient storage, which remained active throughout the transaction. This meant that a subsequent claim in the same transaction could bypass the validation check, even if the external call didn't deliver any messages. This flaw enabled the attacker to update the root without proper validation.
To address the issue, zkLink suspended block production on Nova, patched the contracts, and temporarily disabled withdrawals.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.