# 论文 · 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 &#43; 实证评测
- 核心贡献：提出 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. 现有不足 &amp; 本文改进

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&#43;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. 延伸研究方向

1. 为漏洞检测 agent 设计专门的工具使用 prompt，而不是直接套用通用 ReAct。
2. 引入静态分析、污点分析、调用图切片等工具作为 agent action。
3. 标注漏洞是否真正需要跨过程上下文，分层评测 agent 优势。
4. 改进 CWE 细分类预测，而不只判断 vulnerable/benign。
5. 构建更接近真实分布的非平衡仓库级 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 优势是条件性的，仍需要面向安全任务重新设计工具和控制逻辑。


---

> Author: [Ting](Tin10g.github.io)  
> URL: http://localhost:1313/posts/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB-benchmarking-llms-and-llm-based-agents-in-practical-vulnerability-detection-for-code-repositories/  

