EthSecurity

Post

This post by its id.

https://api.web3aggregator.io/api/v1/posts/18416
curl -H "Authorization: Bearer $W3A_API_KEY" 'https://api.web3aggregator.io/api/v1/posts/18416'

Needs a key: W3A_API_KEY in your environment.

The API gives this message alone: an album's other parts are posts of their own there, linked by album.

API docs
zkLink Nova's Arbitrator hacked for~$780K

Rootcause: The Arbitrator contract had two related flaws that the attacker combined:
Uncleared transient storage of the authentication hash
During a legitimate claim, an authenticated gateway callback stores finalizeMessageHash (in transient storage). The Arbitrator later checks this hash against the expected source gateway, value, and message.
The contract never cleared finalizeMessageHash after use. Transient storage persists for the entire transaction, so a second claim in the same transaction could reuse the first claim’s already-set (and still-valid) hash without triggering a fresh authenticated callback.
Caller-controlled target and calldata in the claim path
The claim function accepted a user-supplied target address and calldata. This let the attacker point the second claim at the Ethereum Gateway and supply sendMessage() calldata that invoked a privileged syncBatchRoot update with an attacker-chosen root.
Resulting attack flow (same transaction):
First claim: legitimate Linea message → sets finalizeMessageHash and forwards normally.
Second claim: reuses the stale hash for verification while forcing the trusted Arbitrator to call the Ethereum Gateway with malicious root-update calldata.
The zkLink contract accepted the attacker-controlled root because it came from the authorized Gateway.
Attacker then submitted matching withdrawal proofs against the forged root and drained funds.
@EthSecurity1
This channelENOpen in TelegramChannel