Forensic Report · Last updated 31 March 2026
On March 13 and 14, 2026, an attacker exploited a vulnerability in the Messina cross-chain bridge to steal approximately 475 million OPUL tokens from bridge escrow vaults across three blockchains: Arbitrum, Ethereum, and BSC.
The vulnerability was a token multiplication flaw in the bridge's hop() function. By repeatedly calling this function, the attacker was able to generate new legitimate transfer approvals from a single original deposit, multiplying the claimable amount up to 143 times. The bridge's Guardian network, which is designed to sign all valid on-chain events without evaluating business logic, signed each of these approvals as legitimate.
The stolen tokens were rapidly sold on decentralized exchanges for ETH, USDC, and USDT. Our forensic investigation has traced the full flow of funds, identified 28 confirmed attacker wallets, and established direct links to two centralized exchanges (OKX and Gate.io) that the attacker used to fund the operation. A police report has been filed with the BVI Police, and we are cooperating with law enforcement to identify the attacker through exchange KYC records.
The root cause analysis was provided by the Messina bridge security team. The vulnerability stems from three issues that, combined, allowed the attacker to multiply tokens from a single deposit.
The Messina bridge has two smart contracts that interact with the Wormhole messaging protocol: the Bridge (for normal token transfers) and the Router (for cross-chain hops). Both contracts emit the exact same LogMessagePublished event through the Wormhole Core contract. The only difference is the sender address. This means, from the Guardian network's perspective, events from both contracts look identical.
The Wormhole Guardian network is designed as a protocol-agnostic notary. Guardians only verify that an event was emitted from the Core Wormhole contract and that the block has been finalized. They do not evaluate:
This is by design, as the Guardian network serves multiple protocols with different business logic. The responsibility for validation sits at the smart contract level.
The Router's hop() function lacked critical validation checks. Specifically, it did not prevent:
hop() with the current network as the destinationhop() as input for another hop()The attack followed this sequence:
hop() repeatedly on the Avalanche Router, using each new VAA as input for the next hop. Each call generated a fresh Guardian-signed VAA for the same token amount.| Time (UTC) | Chain | Event |
|---|---|---|
| 13 Mar, ~14:28 | Ethereum | First exploit claims begin on Ethereum |
| 13 Mar, ~20:47 | BSC | Exploit expands to BSC |
| 14 Mar, ~04:11 | Arbitrum | Main exploit phase begins on Arbitrum (largest volume) |
| 14 Mar, ~15:46 | Avalanche | Attacker receives OKX and Gate.io funding for relay wallets |
| 14 Mar, ~20:33 | Arbitrum | Last exploit transactions recorded |
Based on the combined analysis from our forensic investigation and Messina's root cause report, the total stolen tokens break down as follows:
| Chain | OPUL Stolen | Attacker Wallets | Escrow Vault |
|---|---|---|---|
| Arbitrum | 436,209,123 | 11 | 0x9b3f...bf7 |
| Ethereum | 37,477,500 | 1 | Ethereum bridge vault |
| BSC | 1,289,995 | 1 | BSC bridge vault |
| Total | ~474,976,619 | 13 |
Our independent investigation verified 819 exploit transactions on Arbitrum that drained the Arbitrum escrow vault through unauthorized completeTransfer() calls to the exploited bridge relay contract. The Ethereum and BSC chains were exploited separately using the same hop() multiplication technique.
These are victim-side and bridge infrastructure addresses. They are not attacker wallets.
| Role | Address | Chain |
|---|---|---|
| Victim vault (bridge escrow) | 0x9b3fb3b1b5d994750d66dcc5ad7a6c7477b00bf7 | Arbitrum |
| Exploited bridge relay | 0x537816fbb8ec6078fb8b51f3bc35d5444edcb361 | Arbitrum |
| Bridge emitter (Router) | 0x0f7ba1632447ded5dd18ceb65755e3d36aff4587 | Avalanche |
| OPUL token contract | 0x0c5fa0e07949f941a6c2c29a008252db1527d6ee | Arbitrum |
The following wallets are confirmed as part of the attack infrastructure. Each has a direct, provable on-chain link to the exploit: it either called completeTransfer() on the exploited relay contract, was funded by exchanges to execute the relay phase, received stolen proceeds, or was identified by Messina as a claim destination.
These wallets received the largest amounts of stolen OPUL directly from the Arbitrum escrow vault.
| # | Wallet | Role | OPUL Received |
|---|---|---|---|
| 1 | 0x3c6e...cb33 | completeTransfer() caller | 173,576,501 |
| 2 | 0x80fb...880a | completeTransfer() caller | 69,839,545 |
| 3 | 0x50a9...72a3 | completeTransfer() caller | 67,451,590 |
| 4 | 0xa2f2...9019 | Relay wallet + DEX seller (OKX + Gate.io funded) | 53,297,206 |
| 5 | 0xa60d...cf40 | completeTransfer() caller | 42,604,889 |
| 6 | 0x5960...47d1 | Relay wallet (OKX + Gate.io funded) | 17,393,164 |
| 7 | 0x4713...bc31 | Relay wallet (OKX funded) | 7,406,514 |
| 8 | 0x0b20...c4e5 | completeTransfer() caller | 4,638,033 |
This wallet received stolen OPUL on both Ethereum and BSC, as identified by Messina's analysis.
| Wallet | Chain | OPUL Received |
|---|---|---|
| 0x0250...fc62 | Ethereum | 37,477,500 |
| 0x0250...fc62 | BSC | 1,289,995 |
The attacker funded the relay wallets on Avalanche using two centralized exchanges. These exchange-linked transactions represent the strongest leads for identifying the attacker through KYC records.
Three AVAX withdrawals from an OKX-confirmed custodial wallet directly funded wallets that then executed the bridge exploit.
| Time (UTC) | To | Amount | TX Hash |
|---|---|---|---|
| 14 Mar, 15:46 | 0x4713...bc31 | 1.045 AVAX | 0x8b81...a8f4 |
| 14 Mar, 15:49 | 0x5960...47d1 | 1.000 AVAX | 0x0d48...7511 |
| 14 Mar, 16:14 | 0xa2f2...9019 | 1.000 AVAX | 0x2601...4eef |
Four USDt transfers from a publicly labeled Gate.io wallet funded the same relay wallets.
| Time (UTC) | To | Amount | TX Hash |
|---|---|---|---|
| 14 Mar, 15:49 | 0x5960...47d1 | 399.95 USDt | 0xe5c3...acef |
| 14 Mar, 16:12 | 0xa2f2...9019 | 199.95 USDt | 0x57cd...4ed0 |
| 14 Mar, 16:23 | 0x5960...47d1 | 199.95 USDt | 0x0973...abf3 |
| 14 Mar, 16:40 | 0x5960...47d1 | 166.90 USDt | 0xcf98...278e |
All evidence in this report is verifiable on public blockchain explorers. You do not need to trust us. You can independently confirm every claim.
0x537816fbb8ec6078fb8b51f3bc35d5444edcb361.