anticsdecoded|Portfolio
SEC|2026
/audits / MONERO_OXIDE.rs
cat /audits/MONERO_OXIDE.rs
NODE: BOUNTY

Privacy wallet / Ring signatures

// engagement
protocolmonero-oxide
categoryPrivacy wallet / Ring signatures
kindbounty · Immunefi
date2026-05
duration1 week
languageRust
chainsMonero
nSLOC320
// findingsNODE: 1 FND
critical0
high0
medium1
low0
info0
gas0
// summary

Immunefi review of monero-oxide, a Rust implementation of Monero primitives, focused on the wallet-side decoy-selection routine that assembles the ring a transaction spends against.

// methodology
  • Manual review
  • PoC development
  • Differential analysis
// scope
pathnsloc
monero-oxide/wallet/src/decoys.rs320
total320
// findings
M-01mediumacknowledged

Off-by-one in decoy selection excludes the real output from the first RPC batch

The intended first-iteration guard is keyed on `iters == 0` but `iters` is incremented before the check, so the real output is never mixed into the first `get_unlocked_outputs` query; an on-path node computes the set difference between the on-chain ring and that first candidate set to isolate the true spend, collapsing the effective anonymity set to 1.