
New releaseAug 20, 2026
rhabdomancer v0.10.0
バイナリファイル内の潜在的に安全でないAPI関数への呼び出しを特定する脆弱性調査アシスタント。
rhabdomancer
"The road to exploitable bugs is paved with unexploitable bugs."
-- Mark Dowd
Rhabdomancer は、バイナリファイル内の潜在的に安全でない API 関数への呼び出しを特定する、驚異的に高速な IDA ヘッドレスプラグインです。監査担当者はこれらの候補ポイントからバックトレースして、信頼できない入力へのアクセスを可能にする経路を見つけることができます。

特徴
- IDA 9.x と idalib-rs Rust バインディングによる、驚異的に高速なヘッドレスユーザー体験。
- IDA が実装する任意のアーキテクチャ向けにコンパイルされた C/C++ バイナリターゲットをサポート。
- 危険な API 関数の呼び出し箇所が stdout に出力され、IDB 内でマークされます。
- 既知の危険な API 関数は悪質度の階層にグループ化され、監査作業の優先順位付けに役立ちます。
- [BAD 0] 高優先度 - 一般に安全でないと見なされる関数。
- [BAD 1] 中優先度 - 安全でない使用例がないか確認すべき興味深い関数。
- [BAD 2] 低優先度 - これらの関数を含むコードパスは慎重に確認する必要があります。
- 既知の危険な API 関数のリストは、
conf/rhabdomancer.tomlを編集することで簡単にカスタマイズできます。
記事
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
関連情報
- https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
- https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
- https://github.com/idalib-rs/idalib
- https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html
インストール
最新リリースを入手する最も簡単な方法は crates.io を利用することです:
- IDA をダウンロード、インストール、設定します (https://hex-rays.com/ida-pro を参照)。
- LLVM/Clang をインストールします (https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
- Linux/macOS では、次のようにインストールします:
Windows では、代わりに次のコマンドを使用します:
export IDADIR=/path/to/ida # if not set, the build script will check common locations cargo install 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 install rhabdomancer
コンパイル
あるいは、ソース からビルドすることもできます:
- IDA をダウンロード、インストール、設定します (https://hex-rays.com/ida-pro を参照)。
- LLVM/Clang をインストールします (https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
- Linux/macOS では、次のようにコンパイルします:
Windows では、代わりに次のコマンドを使用します:
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 --releasegit 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
使用方法
- IDA が有効なライセンスで適切に設定されていることを確認します。
- 必要に応じて、
conf/rhabdomancer.tomlで既知の危険な API 関数のリストをカスタマイズします。RHABDOMANCER_CONFIG環境変数を設定することで、デフォルトの設定ファイルの場所を上書きできます。 - IDA のインストール先が標準ではない場所にある場合は、
IDADIR環境変数が設定されていることを確認します。 - 次のように実行します:
既存の
rhabdomancer <binary_file>.i64IDB ファイルがある場合は更新され、ない場合は新しい IDB ファイルが作成されます。 - 結果の
.i64IDB ファイルを IDA で開きます。 View>Open subviews>Bookmarksを選択します。- 結果が IDA ウィンドウにまとめて表示されるのを確認します。
[!NOTE] Rhabdomancer は、マークされた呼び出し箇所にコメントも追加します。
互換性
公式にサポートされているのは最新の IDA リリースのみですが、古いバージョンでも動作する場合があります。次の表は、各 IDA バージョンで最新の互換性のあるリリースをまとめたものです:
| IDA version | Latest compatible release |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | current release |
[!NOTE] 追加情報については、idalib-rs のドキュメントを確認してください。
クレジット
このプロジェクトの開発は、以下の組織によって支援されています:
変更履歴
TODO
- 既知の危険な API 関数リストをさらに充実させる (https://github.com/0xdea/semgrep-rules を参照)。
- より多くのケースに対応するために、
normalize_nameの正規化の範囲を広げることを検討する。 - VulFi と VulnFanatic のスタイルで基本的なルールセットを実装する。