
Ghidraを介して実行可能ファイルを逆コンパイルし、Semgrepで擬似Cコードをスキャンし、GPT-3.5-Turboを使用して検出結果を検証することで誤検知を低減する、自動化されたバイナリ脆弱性解析ツール。
インテリジェントな自動バイナリ脆弱性解析ツール
デモ:

Callisto は、インテリジェントな自動バイナリ脆弱性解析ツールです。その目的は、提供されたバイナリを自律的に逆コンパイルし、出力された疑似コードを繰り返し解析して、その疑似Cコード内の潜在的なセキュリティ脆弱性を探すことです。Ghidra のヘッドレスデコンパイラが、バイナリの逆コンパイルと解析部分を駆動します。疑似コード解析はまず Semgrep SAST ツールによって実行され、その後 GPT-3.5-Turbo に転送されて、Semgrep の発見内容の検証と、追加の脆弱性の可能性の特定が行われます。
このツールの目的は、バイナリ解析とゼロデイ脆弱性の発見を支援することです。出力は、研究者がバイナリ内の注目すべき領域や脆弱なコンポーネントを特定するのに役立ち、動的テストによる検証と悪用のためのフォローアップが可能になります。すべてをキャッチできるわけではありませんが、Semgrep から GPT-3.5-Turbo への二重検証により、誤検出を減らし、プログラムのより深い解析を可能にします。
このツールを高速なヘッドレスデコンパイラとして利用したい場合は、作成される output.c ファイルにバイナリから抽出されたすべての疑似コードが含まれています。これを独自の SAST ツールに取り込んだり、手動で解析したりできます。
Marco Ivaldi @0xdea 氏には、彼が公開したカスタム Semgrep C ルールと、デコンパイラからの疑似コード出力と semgrep を使用した脆弱性発見の自動化というアイデアに対して、多大な感謝を捧げます。彼の研究の詳細はこちら: Ghidra と Semgrep によるバイナリ脆弱性発見の自動化
必要条件:
pip install semgreppip install -r requirements.txtconfig.txt ファイルに Ghidra ディレクトリへの正しいパスが設定されていることを確認してください実行方法:
python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>
-ai => OpenAI GPT-3.5-Turbo 解析を有効にします。有効な OpenAI API キーを config.txt ファイルに配置する必要があります-o => 出力ファイルを定義します(出力を保存したい場合)-ai と -o はオプションのパラメータです-all は、Semgrep の発見結果に関係なく、すべての関数を OpenAI 解析で実行します。このフラグには前提条件として -ai フラグが必要ですpython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtプログラム出力例:
