Torna agli aggiornamenti
New releaseAug 20, 2026

rhabdomancer v0.10.0

Assistente per la ricerca di vulnerabilità che individua le chiamate a funzioni API potenzialmente non sicure in un file binario.

Condividi

rhabdomancer

build doc

"La strada verso i bug sfruttabili è lastricata di bug non sfruttabili."

-- Mark Dowd

Rhabdomancer è un plugin headless per IDA estremamente veloce che individua le chiamate a funzioni API potenzialmente insicure in un file binario. Gli auditor possono risalire da questi punti candidati per trovare percorsi che consentono l'accesso a input non attendibili.

Funzionalità

  • Esperienza utente headless estremamente veloce grazie a IDA 9.x e ai binding Rust di idalib-rs.
  • Supporto per binari C/C++ compilati per qualsiasi architettura implementata da IDA.
  • Le posizioni delle chiamate a funzioni API pericolose vengono stampate su stdout e marcate nell'IDB.
  • Le funzioni API pericolose note sono raggruppate in livelli di pericolosità per aiutare a prioritizzare il lavoro di audit.
    • [BAD 0] Priorità alta - Funzioni generalmente considerate insicure.
    • [BAD 1] Priorità media - Funzioni interessanti che dovrebbero essere verificate per casi d'uso insicuri.
    • [BAD 2] Priorità bassa - I percorsi di codice che coinvolgono queste funzioni dovrebbero essere controllati attentamente.
  • L'elenco delle funzioni API pericolose note può essere facilmente personalizzato modificando conf/rhabdomancer.toml.

Articoli

Vedi anche

Installazione

Il modo più semplice per ottenere l'ultima release è tramite crates.io:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, installa come segue:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer
    
    Su Windows, invece, usa i seguenti comandi:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo install rhabdomancer
    

Compilazione

In alternativa, puoi compilare dal sorgente:

  1. Scarica, installa e configura IDA (vedi https://hex-rays.com/ida-pro).
  2. Installa LLVM/Clang (vedi https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Su Linux/macOS, compila come segue:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release
    
    Su Windows, invece, usa i seguenti comandi:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo build --release
    

Utilizzo

  1. Assicurati che IDA sia configurato correttamente con una licenza valida.
  2. Personalizza l'elenco delle funzioni API pericolose note in conf/rhabdomancer.toml se necessario. Puoi sovrascrivere la posizione predefinita del file di configurazione impostando la variabile d'ambiente RHABDOMANCER_CONFIG.
  3. Assicurati che la variabile d'ambiente IDADIR sia impostata se la tua installazione di IDA si trova in una posizione non standard.
  4. Esegui come segue:
    rhabdomancer <binary_file>
    
    Qualsiasi file IDB .i64 esistente verrà aggiornato; in caso contrario, verrà creato un nuovo file IDB.
  5. Apri il file IDB .i64 risultante con IDA.
  6. Seleziona View > Open subviews > Bookmarks
  7. Goditi i tuoi risultati comodamente raccolti in una finestra di IDA.

[!NOTE] Rhabdomancer aggiunge anche commenti nelle posizioni delle chiamate marcate.

Compatibilità

Solo l'ultima versione di IDA è ufficialmente supportata, ma le versioni precedenti potrebbero funzionare comunque. La seguente tabella riassume l'ultima release compatibile per ciascuna versione di IDA:

Versione IDAUltima release compatibile
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.6
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714release corrente

[!NOTE] Consulta la documentazione di idalib-rs per ulteriori informazioni.

Crediti

Lo sviluppo di questo progetto è stato supportato dalle seguenti organizzazioni:

Changelog

TODO

  • Arricchire ulteriormente l'elenco delle funzioni API pericolose note (vedi https://github.com/0xdea/semgrep-rules).
  • Valutare l'ampliamento dell'ambito di normalizzazione in normalize_name per coprire più casi.
  • Implementare un set di regole di base nello stile di VulFi e VulnFanatic.

Categorie