On July 23, 2026, nearly $7.54 million in assets was withdrawn from the Verus bridge smart contract on Ethereum. This was not a conventional code exploit: the attacker submitted proof of a transfer that appeared to pass verification, prompting the bridge to release millions of dollars even though there was apparently no corresponding collateral on the other side. The attacker immediately converted the proceeds into ETH and obscured the trail through a mixer. Most concerning of all, the same bridge had been exploited in a similar way just two months earlier.
BitOK analysts reconstructed how the attack unfolded. Here is how the attacker managed to create $7.5 million out of thin air.
Table of content:
How Approximately $7.54 Million Was Drained from the Verus Bridge
What Was Stolen
How the Attack Unfolded
Timeline
Key Addresses
Key Transactions
Not the First Incident
The Bigger Picture
The Lesson
How Approximately $7.54 Million Was Drained from the Verus Bridge
To understand the attack, start with the basic idea. A cross-chain bridge does not create genuinely unbacked coins. To receive an asset on one network, a user must lock an equivalent asset on another and provide proof that the lock occurred. The Verus bridge moved assets between the Verus blockchain and Ethereum: users locked collateral on one side and received an equivalent asset on the other.
The bridge has an important feature: it is non-custodial. In other words, no company or administrator controls the funds through a set of private keys. Transfers are confirmed by cryptographic proofs verified by the Verus network itself, including miners and stakers. That distinction explains the nature of the attack: there was no custodian to compromise. The bridge's security depended on proof verification, and that is precisely where the attacker struck.
Investigator's note: the attacker constructed a token import that the bridge accepted as a confirmed transfer from the Verus network. The Ethereum contract released the assets even though, based on the preliminary assessment, no corresponding collateral existed on the Verus side. The exact technical root cause has not yet been confirmed in an official post-mortem by the Verus team and therefore remains a working hypothesis.
A simple analogy helps explain the exploit. Imagine a container divided into two compartments: Verus on one side and Ethereum on the other. To collect goods from the Ethereum compartment, a customer must deposit goods of equal value in the Verus compartment and present a delivery receipt proving that the deposit was made. The attacker produced a receipt bearing what looked like a valid stamp. The guard checked the stamp but did not verify how many boxes had actually been placed in the other compartment. Believing everything was in order, the guard released the goods.
The key facts:
Losses: approximately $7.53-$7.54 million in various tokens withdrawn from the bridge.
Attack method: the attacker submitted an import proof that passed formal verification but was not securely bound to actual collateral on the Verus side. The contract followed its programmed rules and released the assets.
Where the funds went: the attacker quickly converted the various tokens into a single asset, Ether (ETH), and deposited 3,916.1 ETH into Tornado Cash, a mixer designed to break the on-chain link between sender and recipient.
BitOK's central hypothesis is as follows: before releasing assets, the bridge should have independently verified that the list of recipients and amounts originated from a confirmed transfer on the Verus side. That check appears to have been bypassed. For example, the bridge may have trusted data supplied by the attacker instead of matching it against the underlying transfer. In that scenario, the proof appears valid even though nothing actually backs it. The apparent weakness therefore lies in how the bridge binds a proof to the real transfer it is supposed to represent.
What Was Stolen
The bridge released a broad mix of assets to the attacker. Note the final row: DAI was not withdrawn from the bridge's reserves; it was minted directly within the malicious transaction.
Asset;Amount;Mechanism
ETH;1,137.45281584;Transferred from the bridge contract
tBTC;71.5045915;Transferred from the bridge contract
USDC;149,275.074098;Transferred from the bridge contract
USDT;78,300.537681;Transferred from the bridge contract
EURC;31,475.664323;Transferred from the bridge contract
MKR;59.42954384;Transferred from the bridge contract
scrvUSD;92,784.36027725;Transferred from the bridge contract
DAI;220,357.02707298;Minted within the malicious transaction
Here, tBTC is a tokenized form of Bitcoin on Ethereum, EURC is a euro-pegged stablecoin, and scrvUSD and MKR are tokens used in the decentralized finance ecosystem.
The presence of DAI and MKR among the proceeds was not coincidental. Together with ETH and the protocol's native coin, VRSC, they form part of the bridge reserves that fully back its internal asset.
A collection of different tokens is difficult to conceal, so the attacker consolidated them into a single cryptocurrency.
How the Attack Unfolded
The attacker proceeded as follows:
Preparation and funding. Two days before the attack, on July 21, a funding wallet received 0.09607 ETH from a 0.1 ETH Tornado Cash pool. Twenty-nine minutes later, it sent 0.07 ETH to a separate executor address to cover gas fees.
Preparatory calls. On July 23, the executor called the setLatestData helper function twice, at 03:23 and 03:41 UTC, apparently laying the groundwork for the attack. At 03:45:59, it submitted the main transaction, submitImports, containing the fraudulent import.
Asset withdrawal. The bridge contract transferred the assets to a separate proceeds wallet specified in the attack parameters. Separating the executor from the proceeds wallet is an obfuscation technique that makes the operations harder to link directly.
Conversion. Between 03:57 and 04:13 UTC, the stolen tokens were sold for ETH through Relay's trading infrastructure, Relay Router V3. All USDC, USDT, EURC, DAI, MKR, scrvUSD, and tBTC received by the proceeds wallet were moved out.
Laundering through Tornado Cash. Between 04:45 and 05:29 UTC, the proceeds wallet made 47 deposits totaling 3,916.1 ETH in round denominations: 39 deposits of 100 ETH, one of 10 ETH, six of 1 ETH, and one of 0.1 ETH. Breaking the funds into standardized amounts makes it more difficult to match deposits with subsequent mixer withdrawals.
Timeline
Time;Event
July 21;Funding wallet receives 0.09607 ETH from a Tornado Cash pool
July 21, +29 min;Funding wallet sends 0.07 ETH to the executor address for gas
July 23, 03:23:35;First setLatestData call
July 23, 03:41:47;Second setLatestData call
03:45:59;Main submitImports transaction: fraudulent import
~03:46;Bridge transfers assets to the proceeds wallet
03:57:59-04:13:47;Stolen tokens sold for ETH through Relay
04:45:11-05:29:59;47 Tornado Cash deposits totaling 3,916.1 ETH
How the attacker moved the funds. The graph was built using BitOK's Graph tool.
Not the First Incident
It is important to stress that this was the second attack on the bridge. In May 2026, the same intermediary contract lost approximately $11.6 million in an exploit targeting the same import mechanism. The July incident used a new set of addresses but involved the same contract, the same submitImports entry point, and a similar class of vulnerability.
Investigator's note: the attacker did not target an abandoned legacy version of the code. At the time of the incident, the bridge was running an updated import-processing implementation activated on July 12, more than ten days before the attack. A comparison of the versions shows that the update made few changes to the core import-creation logic. This suggests that the root cause of the May exploit may never have been fully addressed.
The Bigger Picture
The attacker pre-funded gas through a mixer and split operational roles across several wallets. The attacker then submitted a “proof” that the bridge treated as legitimate and withdrew nearly $7.54 million in assorted assets. What followed was a rapid conversion of the entire haul into ETH and 47 Tornado Cash deposits in less than an hour.
Unlike in some other incidents, the funds did not remain parked at a transparent address where they could be monitored. They were sent directly into a mixer, suggesting that laundering had been planned from the outset.
Investigator's note: on-chain data reliably confirms the transaction sequence and movement of funds. The precise root cause of the verification failure, however, remains a hypothesis pending an official post-mortem from the Verus team. There is also no evidence yet that the May and July attacks were carried out by the same individual or group.
The Lesson
The central lesson is that a bridge is only as secure as its verification of external proofs.
Verify the substance, not just the “stamp.” The contract released the assets because the proof passed formal verification. Yet the bridge's security appears to have remained compromised after the first exploit.
Failure to learn from the first attack. The same bridge fell for essentially the same technique twice. This suggests that the root cause was not fully eliminated after the first incident and that only the most obvious weaknesses may have been patched.
When moving assets between networks, users rely not only on the security of both blockchains but also on the correctness of the bridge contract and its verification logic. Before using a bridge, it is worth checking who maintains it, whether it has been audited, and what is known about its incident history.
In this case, the funds went straight into a mixer, leaving virtually no chance of recovery.