アップデート一覧に戻る
New releaseAug 20, 2026

rhabdomancer v0.10.0

バイナリファイル内の潜在的に安全でないAPI関数への呼び出しを特定する脆弱性調査アシスタント。

共有

rhabdomancer

build doc

「悪用可能なバグへの道は、悪用不可能なバグで舗装されている。」

-- 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 を編集することで簡単にカスタマイズできます。

記事

関連情報

インストール

最新リリースを入手する最も簡単な方法は、crates.io を利用することです:

  1. IDA をダウンロード、インストール、設定します (https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clang をインストールします (https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOS では、次のようにインストールします:
    export IDADIR=/path/to/ida # 設定されていない場合、ビルドスクリプトが一般的な場所を確認します
    cargo install rhabdomancer --locked
    
    一方、Windows では、次のコマンドを使用します:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # 設定されていない場合、ビルドスクリプトが一般的な場所を確認します
    cargo install rhabdomancer --locked
    

コンパイル

あるいは、ソース からビルドすることもできます:

  1. IDA をダウンロード、インストール、設定します (https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clang をインストールします (https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOS では、次のようにコンパイルします:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # 設定されていない場合、ビルドスクリプトが一般的な場所を確認します
    cargo build --release --locked
    
    一方、Windows では、次のコマンドを使用します:
    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" # 設定されていない場合、ビルドスクリプトが一般的な場所を確認します
    cargo build --release --locked
    

使用方法

  1. IDA が有効なライセンスで適切に設定されていることを確認します。
  2. 必要に応じて、conf/rhabdomancer.toml の既知の危険な API 関数のリストをカスタマイズします。RHABDOMANCER_CONFIG 環境変数を設定することで、デフォルトの設定ファイルの場所を上書きできます。
  3. IDA のインストール先が標準以外の場所にある場合は、IDADIR 環境変数が設定されていることを確認します。
  4. 次のように実行します:
    rhabdomancer <binary_file>
    
    既存の .i64 IDB ファイルがある場合は更新され、ない場合は新しい IDB ファイルが作成されます。
  5. 生成された .i64 IDB ファイルを IDA で開きます。
  6. 表示 > サブビューを開く > ブックマーク を選択します。
  7. 結果が IDA ウィンドウにまとめて表示されるのをお楽しみください。

[!NOTE] Rhabdomancer は、マークされた呼び出し位置にコメントも追加します。

互換性

公式にサポートされているのは最新の IDA リリースのみですが、古いバージョンでも動作する可能性があります。次の表は、各 IDA バージョンで互換性のある最新リリースをまとめたものです:

IDA バージョン互換性のある最新リリース
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.260714現在のリリース

[!NOTE] 追加情報については、idalib-rs のドキュメントを確認してください。

クレジット

このプロジェクトの開発は、以下の組織によってサポートされています:

変更履歴

TODO

  • 既知の危険な API 関数リストをさらに充実させる (https://github.com/0xdea/semgrep-rules を参照)。
  • より多くのケースに対応するために、normalize_name の正規化の範囲を広げることを検討する。
  • VulFiVulnFanatic のスタイルで基本的なルールセットを実装する。

カテゴリ