Vulnerability Localization Benchmark
收藏资源简介:
Vulnerability Localization Benchmark是一个用于评估AI模型在仓库规模漏洞定位上的代理基准。给定漏洞描述和对代码库的只读终端访问权限,模型必须探索仓库并识别包含安全漏洞的文件。关键特征包括:来自公共GitHub安全公告的500个真实世界漏洞、两阶段评估(阶段A:查找漏洞,阶段B:确认修复)、多生态系统覆盖(npm、pip、maven、go、rust、composer)、Docker沙盒评估环境以及可通过MD5验证的数据集可重现性。
Vulnerability Localization Benchmark is a proxy benchmark for evaluating AI models' performance on repository-scale vulnerability localization tasks. Given a vulnerability description and read-only terminal access to a target codebase, the model must explore the repository and identify files that harbor security vulnerabilities. Key features of this benchmark include: 500 real-world vulnerability samples sourced from public GitHub security advisories; a two-stage evaluation protocol (Stage A: Vulnerability Discovery; Stage B: Fix Validation); coverage across multiple software ecosystems including npm, pip, maven, go, rust, and composer; a Docker sandboxed evaluation environment; and dataset reproducibility verifiable via MD5 checksums.
数据集概述:Vulnerability Localization Benchmark
这是一个用于评估AI模型在仓库级别定位安全漏洞能力的基准测试(Benchmark)。
核心目标
- 任务:给定一个漏洞描述和代码库的终端只读访问权限,模型需要探索仓库,识别出包含安全漏洞的文件。
- 评估方式:端到端的本地化性能衡量,基于真实的终端交互环境,而非静态代码理解。
关键特性
- 数据规模:包含500个来自公开GitHub安全公告的真实世界漏洞。
- 两阶段评估:
- 阶段A(Pre-push):模型探索存在漏洞的代码库,提交其认为包含漏洞的文件。评分指标为文件F1分数。
- 阶段B(Post-push):模型探索已修补的代码库,应声明“未发现漏洞”。评分指标为真负率。
- 多生态系统覆盖:涵盖npm、pip、maven、go、rust、composer六个生态系统。
- 沙盒化评估环境:使用Docker容器构建隔离的评估环境。
- 可复现性:数据集使用MD5校验和进行验证,确保结果可复现。
- 技术报告:待发布。
数据集详情
- 漏洞来源:来自公共GitHub安全公告。
- CVE分配:78%的漏洞拥有分配的CVE编号。
- 严重程度分布:
| 严重程度 | 数量 |
|---|---|
| 高 | 219 |
| 中 | 194 |
| 严重 | 57 |
| 低 | 30 |
- CWE类型分布(147个独特类型):
| CWE类型 | 数量 |
|---|---|
| CWE-400 (资源耗尽) | 53 |
| CWE-20 (输入验证不当) | 45 |
| CWE-200 (信息暴露) | 27 |
| CWE-22 (路径遍历) | 27 |
| CWE-770 (无限制的资源分配) | 23 |
- 许可证分布:
| 许可证 | 数量 | 百分比 |
|---|---|---|
| Apache-2.0 | 241 | 48.2% |
| MIT | 161 | 32.2% |
| 其他 | 46 | 9.2% |
| GPL-3.0 | 15 | 3.0% |
| LGPL | 12 | 2.4% |
| MPL-2.0 | 12 | 2.4% |
| BSD-3-Clause | 5 | 1.0% |
| Creative Commons | 4 | 0.8% |
| ISC | 2 | 0.4% |
| GPL-2.0 | 1 | 0.2% |
| AGPL-3.0 | 1 | 0.2% |
- 每个条目提供:
pre_push.zip:存在漏洞的提交版本(阶段A输入)。post_push.zip:修复合并后的仓库版本(阶段B输入)。ground_truth_files:安全补丁修改的代码文件(排除测试和非代码文件)。cwe_description:通用的CWE定义(用于评估提示)。
评估协议
- 代理行为:
- 每个条目最多15次终端调用。
- 最多20个回合(生成周期)。
- 若模型连续3回合无工具调用,则强制停止。
- 终端预算耗尽后,提示提交。
frequency_penalty=0.3防止重复循环。
- 关键参数:每次生成上限为16384个token。
使用方式
- 环境准备:需要Python 3.11+、Docker以及一个支持OpenAI兼容API的模型服务器(如vLLM)。
- 安装:克隆仓库,安装Python包,构建Docker沙盒镜像,下载并验证数据集。
- 运行评估:通过CLI工具分别运行阶段A和阶段B的评估。
数据集许可证
- 数据集中的公开漏洞数据和开源仓库保留其原始许可证。基准测试代码采用Apache License 2.0许可。




