论文 · Benchmarking LLMs and LLM-Based Agents in Practical Vulnerability Detection for Code Repositories
基础信息
- 标题:Benchmarking LLMs and LLM-based Agents in Practical Vulnerability Detection for Code Repositories
- 类型:Benchmark + 实证评测
- 核心贡献:提出 JITVUL,基于 879 个 CVE 和 91 类 CWE 构造 1,758 个 vulnerable/fixed pairwise commits,用于评测 LLM 和 ReAct agent 的 just-in-time repository-level 漏洞检测能力。
Q1. 研究动机
函数级漏洞 benchmark 不能反映真实代码仓库中跨函数、跨调用链的漏洞语义;已有仓库级 benchmark 成本高、缺少 pairwise 修复前后比较,也较少研究 agent 通过工具按需获取上下文的能力。作者希望评测 LLM 和 ReAct agent 是否真正区分漏洞版本与修复版本。
Q2. 核心问题
论文关注的是:在给定仓库和目标函数时,模型能否判断当前版本是否脆弱,并在 pairwise 设定下同时正确标注 vulnerability-introducing commit 和 vulnerability-fixing commit 后的 benign 版本。
Q3. 现有不足 & 本文改进
Devign、BigVul 等偏函数级;
ReposVul、VulEval 虽引入仓库上下文但成本高、pairwise 评测不足。
本文改进是把每个函数连接到引入漏洞和修复漏洞的 commit,设计 pAcc 衡量一对样本是否同时判对,并比较 Plain LLM、Dependency-Augmented LLM 与 ReAct Agent。
Q4. 方法流程
作者从 CVE 条目定位漏洞修复 commit,抽取修复前后的目标函数,再回溯 vulnerability-introducing commit 形成 JITVUL。
评测时,Plain LLM 只看目标函数;Dep-Aug LLM 用相似度检索 Top-5 callers/callees 一次性加入 prompt
ReAct Agent 可循环调用 get_callers、get_callees、get_definition 三类工具,按需获取 interprocedural context
最后输出 vulnerable / not vulnerable 和 CWE。
Q5. 实验设计与结论
- 主实验:Table 2 比较 GPT-4o-mini 和 GPT-4o 上的 F1 与 pAcc。Plain/Dep-Aug LLM 多数 F1 更高,但 ReAct Agent 的 pAcc 更高。例如 GPT-4o-mini FS 下 ReAct pAcc=20.17,高于 Plain FS=7.56 和 Dep-Aug FS=7.27。
- pairwise 指标必要性:Table 3 在非 pair 数据集上 GPT-4o-mini F1 仅 5.41-12.21,显示 F1 对数据分布敏感,不能充分反映修复前后区分能力。
- prompting:CoT 和 FS 能提升 LLM 的 pAcc,但对 ReAct 帮助有限,作者认为 few-shot 示例没有体现跨过程分析,和 agent 工具使用不匹配。
- 开源模型:Table 4 显示 Llama-3.1/DeepSeek-Coder 上 ReAct Agent 常因格式和解析失败表现很差;DeepSeek-Coder 的 Dep-Aug CoT+FS 获得 F1=82.09、pAcc=69.24,说明代码模型和上下文增强有潜力。
Q6. 局限性
作者明确提出:
- JITVUL 的 vul-intro commit 追踪可能受代码演化复杂性影响。
- label-balanced 数据集可能影响 F1 比较,未来需加入更多 benign commits。
- 缺少跨过程漏洞比例等细粒度统计,人工标注成本高。
以下为分析归纳,非原文明确说明:
- ReAct 工具集只覆盖 callers/callees/definition,不能直接执行数据流、污点分析或符号执行。
- 评测使用商业模型时,结果受模型版本、输出格式和 prompt 稳定性影响。
Q7. 学术价值
- 理论价值:指出漏洞检测不能只看单点 F1,还要看修复前后 pairwise 一致性。
- 方法价值:JITVUL 提供了 JIT vulnerability detection 的仓库级 pairwise benchmark。
- 应用价值:对安全扫描 agent 的工具设计、上下文获取和评测指标具有直接参考意义。
Q8. 延伸研究方向
- 为漏洞检测 agent 设计专门的工具使用 prompt,而不是直接套用通用 ReAct。
- 引入静态分析、污点分析、调用图切片等工具作为 agent action。
- 标注漏洞是否真正需要跨过程上下文,分层评测 agent 优势。
- 改进 CWE 细分类预测,而不只判断 vulnerable/benign。
- 构建更接近真实分布的非平衡仓库级 benchmark。
Q9. 反直觉发现与方法失效分析
- Table 2 中 Plain LLM 常有更高 F1,却 pAcc 极低,例如 GPT-4o vanilla Plain LLM F1=65.96 但 pAcc=1.02;说明高 F1 可能来自把大量样本判为 vulnerable,而不是理解漏洞特征。
- ReAct Agent 的 pAcc 更高但 F1 常低,表明它更会区分修复前后版本,但召回/标签倾向不一定最优。
- Table 4 中开源模型 ReAct 经常失效,说明 agent framework 对输出格式和工具调用能力敏感,强代码模型未必自动适配 agentic workflow。
- 整体评价:论文最强贡献是评测设计和指标分析;ReAct 优势是条件性的,仍需要面向安全任务重新设计工具和控制逻辑。
WeChat Pay