zkLink Nova cross-chain bridge was hacked last night; a forged batch credential let about $780,000 slip through
At 22:21 UTC on October 28, a transaction withdrew about $780,000 from zkLink Nova’s Ethereum custody contract. That was 6:21 a.m. this morning Beijing time. Blockaid raised the first alarm, saying the attack was still underway and the main custody contract had not yet been paused. SlowMist’s analysis estimated the loss at about $783,100.
zkLink Nova is an aggregation-focused Layer 3 network that ultimately settles on Ethereum. When users withdraw from Nova to Ethereum, the custody contract first checks a credential called a batch root—the fingerprint of a batch of transactions. The contract releases the funds only if it recognizes the root. The problem was who could write that fingerprint into the contract.
SlowMist’s analysis points to the claimMessage function in the Arbitrator contract. It used finalizeMessageHash without clearing it afterward or requiring fresh authentication for every callback. The attacker first used a relay contract that anyone could call to load a valid hash, then changed the target to the Ethereum gateway, making the step that synced the batch root appear to come from the legitimate gateway. Once the impersonation succeeded, a fake root for batch 116409 was written into the contract. All the withdrawal proofs the attacker submitted checked out, and the custody contract released the funds. The entire operation happened in a single transaction, at block 26294188.
A total of 12 tokens were withdrawn. The largest haul was 245.74 pufETH from Puffer, worth about $615,000 and accounting for nearly 80% of the total. The rest included 22.43 ETH, 12.57 ezETH, 18,113 USDC, and small amounts of other tokens. In less than an hour, the attacker had swapped 123.26 ETH on Curve, then transferred about 303 ETH to three addresses in three transactions. Another attacker address later withdrew about 216.4 million ZKL, worth around $42,000, from the same bridge.
The lesson for retail investors isn’t about the amount. $780,000 isn’t much compared with the $292 million Kelp DAO incident in April this year. What really matters is the attack path. A publicly callable relay contract was treated as an authorized party, and a temporary value that wasn’t properly cleared broke the verification chain midway through. If the vault mistakes who’s at the door, it won’t matter how much is inside. At the time of writing, zkLink had not issued a public statement, confirmed whether the bridge was paused, or announced a compensation plan. Rushing to withdraw now could mean sending funds through a door that hasn’t been closed yet.
My view is straightforward. When a bridge is compromised, first check its official accounts for a pause announcement. Don’t rush to withdraw. If there’s no announcement that the bridge has been paused, don’t make new deposits or interact with it for now. If you already have assets in it, withdrawing in batches is safer than pulling everything out at once. Check the pause announcement before withdrawing.
Do you currently have assets locked in any cross-chain bridges? When did you last check their pause status and official announcements?
#BTC #跨链桥 #安全复盘 #zkLink #DeFi Security
—— web3 Chives Xiao Kai
This content is compiled from public information and does not constitute investment advice. The amounts mentioned are based on public records from Blockaid, SlowMist, and Etherscan. For subsequent updates, refer to the project’s official channels.