Urgent.News

What's breaking now, across thousands of outlets.

Tech

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.

Read the original at dev.to →

More in Tech

What JSON.parse does to a 20-digit integer, and how to keep the digits

If an API sends you 12345678901234567890 as a JSON number, what does JSON.parse give you? I ran a few cases in Node v22.23.4 (V8) to see exactly where the digits go, and what the newer context.source…

  • JSON.parse converts 20-digit integer to incorrect value (12345678901234567000)
  • BigInt conversion via reviver preserves original digits (9007199254740993)
  • Recommended solution: request API to send integers as strings

Using Voice Cloning for Personalized Marketing

Why Voice Cloning Is a Game‑Changer for Marketing If you’ve ever listened to a brand’s radio ad and thought, “That voice sounds familiar,” you’ve already experienced the power of voice cloning.

  • Voice cloning creates personalized audio experiences at scale.
  • Reproduces speaker's unique vocal characteristics like tone and rhythm.
  • Services like ElevenLabs make technology accessible through APIs.

Cancel Deflection Without Dark Patterns

Every subscription business has a cancel button. What happens between the click and the cancellation decides whether that moment is a save opportunity or a trust bonfire.

  • Cancel buttons are standard in subscription businesses.
  • Dark patterns hide exit, shame users, create guilt.
  • Honest deflection respects customer choice, offers branded save.

First Touch, Last Click, and Why We Store Both

Ask a marketing tool where a customer came from and it will give you one answer, delivered with total confidence. The problem is that the honest answer is a journey: a directory listing read in…

  • Swipe Again captures both initial touch and complete touch trail for every merchant.
  • Data stored in first-party cookie for 90 days to preserve entire customer journey.
  • System uses stamp for last-click attribution while preserving data for analysis.

More from Thursday 29 October →