Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monero-Oxide Security Research & Validation

An independent, hypothesis-driven security assessment of the monero-oxide codebase, a collection of memory-safe Rust libraries for the Monero protocol (including CLSAG, Bulletproofs, and FROSTLASS threshold signing).

🎯 Objective

To identify critical vulnerabilities matching the Immunefi Bounty Scope, specifically focusing on:

  • Cryptographic verification incompleteness
  • Wallet scanning logic flaws (e.g., false balance reporting)
  • Undocumented panics reachable from public APIs
  • State confusion in threshold signing protocols

🛠️ Methodology

This assessment strictly followed professional, evidence-based security research principles:

  1. Hypothesis Generation: Identifying potential invariant violations based on protocol specifications and code structure.
  2. Manual Verification: Tracing execution paths in Rust to confirm or deny the presence of vulnerabilities.
  3. Automated Stress Testing: Deploying cargo-fuzz with AddressSanitizer (ASAN) to validate parser resilience against billions of mutated inputs.
  4. Intellectual Honesty: Discarding hypotheses immediately upon finding evidence of intended behavior, documented API contracts, or safe error handling.

📊 Key Findings & Validated Invariants

After extensive manual review and automated fuzzing, the assessed components demonstrated a high degree of robustness. All tested hypotheses were disproven.

Component Hypothesis Tested Result Conclusion
CLSAG Verifier Small-order/identity points bypass early rejection Rejected at final math check (InvalidC1) ✅ Secure (Documented compatibility)
Wallet Scanner Identity tx_pubkey tricks scanner into false balance Explicitly handled for wallet2.cpp compatibility ✅ Secure (Protected by node consensus)
FROSTLASS Multisig Undocumented panics / state confusion during signing Safe Result error handling; panics are documented ✅ Secure (Exceptional defensive programming)
Epee Parser .unwrap() panics via malformed length fields Length checks make .try_into() mathematically infallible ✅ Secure (Safe by design)
Epee Parser (Fuzz) Memory safety / panic via random mutation 4.29+ Billion inputs tested, 0 crashes ✅ Secure (Highly robust invariants)

📂 Repository Structure

  • RESEARCH_LOG.md - Deep technical dive into each hypothesis, code traces, and final conclusions.
  • poc/ - Proof-of-Concept integration tests written during the assessment (e.g., CLSAG torsion validation).
  • fuzz/ - Custom cargo-fuzz harnesses developed to stress-test the Epee serialization layer.

📜 Disclaimer

This is an independent research log documenting validated invariants and methodology. It is not a comprehensive, formal security audit. The absence of findings is a testament to the quality of the monero-oxide codebase and the effectiveness of its prior audits.


Researcher: AlBochi
Date: July 2026
Tools: Rust, cargo-fuzz, libFuzzer, AddressSanitizer (ASAN), grep, sed

About

Independent, hypothesis-driven security assessment and validated cryptographic invariants of the monero-oxide Rust codebase.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages