Retour aux mises à jour
New releaseAug 20, 2026

rhabdomancer v0.10.0

Assistant de recherche de vulnérabilités qui localise les appels à des fonctions API potentiellement non sécurisées dans un fichier binaire.

Partager

rhabdomancer

build doc

"La route des bugs exploitables est pavée de bugs inexploitables."

-- Mark Dowd

Rhabdomancer est un plugin IDA headless extrêmement rapide qui localise les appels à des fonctions d'API potentiellement vulnérables dans un fichier binaire. Les auditeurs peuvent remonter la trace à partir de ces points candidats pour trouver des chemins permettant d'accéder à des entrées non fiables.

Fonctionnalités

  • Expérience utilisateur headless et extrêmement rapide grâce à IDA 9.x et aux bindings Rust idalib-rs.
  • Prise en charge de binaires C/C++ compilés pour toute architecture implémentée par IDA.
  • Les emplacements des appels à des fonctions d'API dangereuses sont affichés sur stdout et marqués dans l'IDB.
  • Les fonctions d'API dangereuses connues sont regroupées en niveaux de dangerosité pour aider à prioriser le travail d'audit.
    • [BAD 0] Priorité haute - Fonctions généralement considérées comme non sécurisées.
    • [BAD 1] Priorité moyenne - Fonctions intéressantes qui doivent être vérifiées pour des cas d'usage non sécurisés.
    • [BAD 2] Priorité basse - Les chemins de code impliquant ces fonctions doivent être soigneusement vérifiés.
  • La liste des fonctions d'API dangereuses connues peut être facilement personnalisée en éditant conf/rhabdomancer.toml.

Articles

Voir aussi

Installation

Le moyen le plus simple d'obtenir la dernière version est via crates.io :

  1. Téléchargez, installez et configurez IDA (voir https://hex-rays.com/ida-pro).
  2. Installez LLVM/Clang (voir https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Sous Linux/macOS, installez comme suit :
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer
    
    Sous Windows, utilisez plutôt les commandes suivantes :
    $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
    

Compilation

Vous pouvez également compiler à partir des sources :

  1. Téléchargez, installez et configurez IDA (voir https://hex-rays.com/ida-pro).
  2. Installez LLVM/Clang (voir https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. Sous Linux/macOS, compilez comme suit :
    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
    
    Sous Windows, utilisez plutôt les commandes suivantes :
    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
    

Utilisation

  1. Assurez-vous qu'IDA est correctement configuré avec une licence valide.
  2. Personnalisez si nécessaire la liste des fonctions d'API dangereuses connues dans conf/rhabdomancer.toml. Vous pouvez remplacer l'emplacement du fichier de configuration par défaut en définissant la variable d'environnement RHABDOMANCER_CONFIG.
  3. Assurez-vous que la variable d'environnement IDADIR est définie si votre installation d'IDA se trouve dans un emplacement non standard.
  4. Exécutez comme suit :
    rhabdomancer <binary_file>
    
    Tout fichier IDB .i64 existant sera mis à jour ; sinon, un nouveau fichier IDB sera créé.
  5. Ouvrez le fichier IDB .i64 résultant avec IDA.
  6. Sélectionnez View > Open subviews > Bookmarks
  7. Profitez de vos résultats commodément rassemblés dans une fenêtre IDA.

[!NOTE] Rhabdomancer ajoute également des commentaires aux emplacements d'appels marqués.

Compatibilité

Seule la dernière version d'IDA est officiellement prise en charge, mais les versions antérieures peuvent également fonctionner. Le tableau suivant résume la dernière version compatible pour chaque version d'IDA :

Version d'IDADernière version compatible
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.260714version actuelle

[!NOTE] Consultez la documentation idalib-rs pour plus d'informations.

Crédits

Le développement de ce projet a été soutenu par les organisations suivantes :

Changelog

TODO

  • Enrichir davantage la liste des fonctions d'API dangereuses connues (voir https://github.com/0xdea/semgrep-rules).
  • Envisager d'élargir la portée de la normalisation dans normalize_name pour couvrir davantage de cas.
  • Implémenter un ensemble de règles de base dans le style de VulFi et VulnFanatic.

Catégories