Haveno Brought Back the Arbitrator Multisig and Attackers Just Hijacked It

At 03:43 UTC on May 20, woodser opened an eight-line patch in TradeProtocol.java, and by the time it went up the exploit was already running against live RetoSwap trades.

Haveno Brought Back the Arbitrator Multisig and Attackers Just Hijacked It

On May 20th, 2026, at 03:43 UTC, Haveno lead developer woodser opened a one-file pull request titled "core: refuse to update node address before multisig created." Eight added lines, one deleted line. By the time the patch went up, the attack was already running against live trades on RetoSwap, the largest Haveno-based decentralized Monero exchange. Hours earlier, Monero community contributor @ofrnxmr posted a PSA on X quoting woodser directly: pull every offer off the books, stop trading, the protocol itself is bleeding.

Listen to this article
0:00 --:--
Failed to load audio

That eight-line patch tells you exactly what went wrong. Open TradeProtocol.java line 888 and look at the function called `onAckMessageAux`. Before the fix, when a node received an ACK message from a peer in a trade, the code would automatically update the peer's stored network address to whatever address sent the ACK. That sounds innocent because in a normal trade it just keeps the contact info current as Tor hidden service endpoints reconnect. The bug was that it ran the update before the multisig deposit was created, which meant the swap could happen before the cryptographic walls of the 2-of-3 wallet existed. An attacker who took a trade could send a forged out-of-order ACK message that impersonated the arbitrator, and the victim's client would obediently overwrite the real arbitrator's node address with the attacker's. From there the attacker controlled the third key in the multisig, and the wallet that was supposed to protect the trade was already compromised before any Monero ever hit it.

core/src/main/java/haveno/core/trade/protocol/TradeProtocol.java PR #2315 :: woodser :: 2026-05-20

The mechanism here matters because it answers a question Haveno's own architecture invites. The platform is a fork of Bisq that brought back the 2-of-3 arbitrator multisig, the exact design Bisq abandoned in version 1.2.0 back in 2019 after concluding the arbitrator-as-keyholder model was too dangerous to keep. Bisq wrote at the time that a hacked or impersonated arbitrator could "sweep the offer book and steal all locked funds, or bait takers into fraudulent trades." Seven years later, RetoSwap confirmed publicly that this is exactly what just happened on their fork, with the third key getting hijacked through message frontrunning during trade initiation, and the resulting multisig compromised before either honest party could deposit.

ACK Frontrun Sequence
Haveno TradeProtocol.java :: pre-deposit phase
Maker
honest.onion
Taker (You)
victim.onion
Arbitrator
real-arb.onion
Attacker
attacker.onion
1. Trade opens 2. Forged ACK 3. Address swap 4. Multisig compromised

The timeline is brutal. Version 1.4.0-reto shipped on May 18th, 2026, forty-eight hours before the exploit PR went up, and its release notes list WebTunnels Tor support, dispute cleanup, offer-edit fixes, and throttling tweaks. None of them mention this vulnerability because nobody on the dev side knew about it yet. Anyone who updated this week is running the version that's getting actively drained. The patch in PR #2315 exists but at the time of writing it's still open, meaning no release contains the fix. If you are sitting on an open offer right now, your client is the target. From what I found, the RetoSwap team has already banned the exploiter accounts and is publicly recommending the same thing woodser said: pull everything, wait.

For anyone who hasn't followed P2P exchange forensics, this rhymes hard with what happened to Bisq itself two weeks ago. On May 1st, 2026, an attacker drained about 11.6 BTC from 10 Bisq users by exploiting a missing validation check on miner fees in a trade, which the Bisq team later described as a likely AI-assisted vulnerability discovery. They conceded the failure was theirs, pushed reimbursement through their DAO, and explicitly admitted the mistake was "not only the missing validation check" but also "failing to react early enough to the changing security landscape." Same lesson on both sides of the fork: the trade protocol is the attack surface, and one missing check is where stolen funds come from. Bisq removed the arbitrator from the multisig in 2019 and still got hit. Haveno kept the arbitrator in the multisig, and just got hit at exactly that seam. The reto fork, with the largest network on Haveno's protocol at roughly $2M monthly volume per KYCnot.me, is now the most exposed.

Arbitrator Multisig: A Recurring Wound
Bisq → Haveno → RetoSwap, six years of the same design choice
Apr 2020
Bisq
Exploit
3 BTC and 4,000 XMR stolen from 7 Bisq traders
XMR/BTC market exclusively. Trade protocol flaw exploited over 12 days before discovery.
2019
v1.2.0
Architectural Retreat
Bisq removes arbitrators from the multisig
Moves to 2-of-2 between traders only. Bisq's stated reason: a hacked arbitrator could "sweep the offer book and steal all locked funds."
2023
Haveno
Fork With a Memory Gap
Haveno forks Bisq and brings the arbitrator back
2-of-3 multisig restored, with the arbitrator holding the third key. Monero-native, Tor-routed, non-custodial.
May 14
2024
Mainnet Launch
Haveno-reto goes live (later renamed RetoSwap)
First live mainnet fork of Haveno. Grows into the largest network on the protocol at roughly $2M monthly volume.
May 1
2026
Exploit
11.6 BTC drained from 10 Bisq users in a single attack
Missing miner-fee validation check on takes. Bisq team called it an AI-assisted vulnerability discovery and admitted the failure was theirs.
May 18
2026
Release
RetoSwap 1.4.0 ships with no mention of the ACK bug
Notes list WebTunnels Tor, dispute cleanup, throttling. The vulnerable code path is still live.
May 20
2026
Active Exploit
RetoSwap arbitrator hijack confirmed in the wild
Woodser opens PR #2315 at 03:43 UTC. Eight-line patch refuses ACK-driven address swaps before deposit. Trading halted.

This is a protocol-level bug, which means you can't patch around it with stricter OPSEC and you need the new client to be safe. The fix itself is correct and minimal, which is the kind of patch you want to see because it means the bug had one root cause and woodser found it cleanly. The new code refuses to apply an ACK-driven node-address update if `trade.isDepositRequested()` returns false, closing the window the attacker was using to hijack the arbitrator role before the deposit existed. The uncomfortable part is that this happened on a publicly auditable codebase that the broader Monero community treats as a flagship for non-custodial trading, and it still took an active exploit in the wild before the bug surfaced, which is roughly the same disclosure pattern Bisq just lived through two weeks ago.

Here is the practical guidance if you have any exposure. Open your RetoSwap or other Haveno-fork client, remove every offer, do not take or make new trades until a patched release is published, and watch the haveno-dex repository releases page and RetoSwap's official account for the announcement that the fix is live. If you were mid-trade when the exploit started, your security deposit is the first thing at risk, and the Haveno trade protocol docs describe what arbitration looks like once you're already in a dispute, but understand that the very role you would be appealing to is the role that just got impersonated. This is a hard week for P2P Monero, and the people running offers on these networks are the ones absorbing the cost while the patch finishes its review.

RetoSwap Exploit Quiz
Ten questions on the May 2026 Haveno-reto arbitrator hijack and the protocol bug behind it
Progress 0/10 answered
Question 1
What function in Haveno's TradeProtocol.java contained the vulnerable code path?
Question 2
What did the bug allow an attacker to do?
Question 3
How many lines did woodser's fix add?
Question 4
What condition does the fix check before updating a peer's node address?
Question 5
Which Bisq release removed the arbitrator from the trade multisig?
Question 6
When did RetoSwap ship version 1.4.0-reto?
Question 7
Who opened pull request #2315 with the fix?
Question 8
What was the May 1, 2026 Bisq incident?
Question 9
What kind of message did the attacker forge to hijack the arbitrator slot?
Question 10
What does woodser recommend users do immediately?
0/10
Your Score
0
Correct
0
Incorrect
0
Unanswered
Coins by Cryptorank