
大規模言語モデルと静的コード解析に基づくインテリジェントな脆弱性検出フレームワークで、複数データセットによる評価とアブレーション研究に対応しています。

このプロジェクトは、GPT-4o と BGE-M3 モデルに基づくインテリジェントな脆弱性検出フレームワークであり、以下を組み合わせています:
pip install -r requirements.txt
モデルは自動的にダウンロードされます。手動でダウンロードすることもできます:
git clone https://huggingface.co/BAAI/bge-m3
# 注: BGE-M3 関連の依存関係は FlagEmbedding でインストールできます。詳細は: pip install -U FlagEmbedding を参照してください。
プロジェクトのルートディレクトリに cwec_latest.xml/cwec_v4.19.1.xml と 1435.csv/1435_filtered_columns.csv(CWE インデックスデータ)ファイルが存在することを確認してください。
注: このプロジェクトは CWE Top 25 Most Dangerous Software Weaknesses を使用しています。関連ファイルはプロジェクトのルートディレクトリにすでに含まれています。
以下のファイルをプロジェクトのルートディレクトリに配置してください:
primevul_test_paired.jsonl(PrimeVul データセット)LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv(Kotlin データセット)main.py または hyperparam_exp.py の OpenAI API 設定を変更します:
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.poixe.com/v1"
)
注: 現在の URL
https://api.poixe.com/v1は解析に失敗しました。サポートされていない Web ページタイプ、またはリンク切れの可能性があります。リンクの有効性を確認するか、別の API プロバイダーに切り替えてください。
python main.py --wotask all --jsonl_file primevul_test_paired.jsonl
# 制御フロー情報なし
python main.py --wotask wo_ctrl_info_pth --jsonl_file primevul_test_paired.jsonl
# RAG 知識なし
python main.py --wotask wo_rag_pth --jsonl_file primevul_test_paired.jsonl
# コード理解なし
python main.py --wotask wo_exp_pth --jsonl_file primevul_test_paired.jsonl
# 補助情報なし
python main.py --wotask nan --jsonl_file primevul_test_paired.jsonl
# ペア評価モード
python hyperparam_exp.py --mode pairwise --input_file primevul_test_paired.jsonl --detail_level C --info_comb all --desc_level concise --max_vuln 2
# 単一サンプル評価モード
python hyperparam_exp.py --mode single --input_file LLM4Vul-main/LLM4Vul-main/data/kotlin_data.csv
検出結果はリアルタイムで metrics_log.txt に保存され、最終的な評価サマリーがターミナルに出力されます:
| スクリプト | 目的 |
|---|---|
main.py | アブレーション研究対応のメイン脆弱性検出スクリプト |
hyperparam_exp.py | ハイパーパラメータ実験とマルチモード評価 |
func フィールドと target フィールドを含む)code 列と label 列を含む)| ライブラリ | バージョン | ライセンス |
|---|---|---|
| FlagEmbedding | 1.4.0 | MIT |
| openai | 2.26.0 | Apache 2.0 |
main.py または hyperparam_exp.py の base_url と api_key を変更してください。
1435.csv/1435_filtered_columns.csv が正しく読み込まれているか確認し、CWE インデックスデータの形式が正しいことを確認してください;git clone https://huggingface.co/BAAI/bge-m3 で手動ダウンロードできます;metrics_tracker.py の update_pair_metrics メソッドを変更して、メトリクス計算ロジックを追加または調整してください。
HuggingFace のウェブサイトからモデルファイルを直接ダウンロードし、プロジェクトのルートディレクトリに展開するか、ネットワーク接続を確認して git clone https://huggingface.co/BAAI/bge-m3 コマンドを再実行してください。
retrieval.py |
| CWE ナレッジベース検索モジュール(BGE-M3 モデルに基づくハイブリッド検索) |
metrics_tracker.py | ログ保存と可視化をサポートするリアルタイムメトリクストラッカー |
| パラメータ | デフォルト | 説明 |
|---|
--wotask | all | アブレーションモード: all(全機能)、wo_ctrl_info_pth(静的構造情報なし)、wo_rag_pth(RAG 知識なし)、wo_exp_pth(コード理解なし)、nan(補助情報なし) |
--jsonl_file | primevul_test_paired.jsonl | JSONL データセットのパス |
--metrics_file | metrics_log.txt | メトリクス出力ファイル |
| パラメータ | デフォルト | 説明 |
|---|
--mode | pairwise | 評価モード: pairwise または single |
--input_file | 必須 | 入力ファイルパス(JSONL または CSV 形式) |
--detail_level | C | コード解析の詳細レベル: C(完全)、B(標準)、A(簡潔) |
--info_comb | all | 情報の組み合わせ: all、no_ast、no_cfg、no_dfg |
--desc_level | concise | 説明レベル: concise、normal、detailed |
--max_vuln | 2 | 脆弱性の最大数: 2 または 4 |