
The code of VulTriage: Triple-Path Context Augmentation for LLM-Based Vulnerability Detection

一种基于大语言模型和静态代码分析的智能漏洞检测框架,支持多数据集评估和消融研究。

本项目是一个基于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最危险软件弱点。相关文件已包含在项目根目录中。
将以下文件放入项目根目录:
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解析失败。可能是无法支持的网页类型或链接已断开。请验证链接有效性或切换到其他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 | 超参数实验和多模式评估 |
retrieval.py | CWE知识库检索模块(基于BGE-M3模型的混合检索) |
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 命令。
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 |