VulnGym
收藏VulnGym 数据集概述
基本信息
VulnGym 是一个面向白盒漏洞狩猎智能体的项目级基准测试数据集,旨在评估智能体在真实工程上下文中的漏洞检测能力,并提供可验证的漏洞触发路径与代码语义证据链。
- 发布方:腾讯悟空代码安全团队(腾讯安全平台部)
- 许可协议:CC-BY-4.0
- 当前版本:v0.1.0(开源版本)
核心设计原则
- 🏗️ 实际项目级评估单元:每个样本绑定到一个真实仓库的特定漏洞提交,评估智能体在真实多文件、多模块工程项目中发现和定位漏洞的能力。
- 🧠 全面的漏洞类型覆盖:涵盖需要跨模块代码语义推理的业务逻辑缺陷(如授权绕过、认证失效)和传统安全缺陷(如注入、路径遍历)。
- ✅ 可验证的漏洞路径:每个样本附带人工审核的可达入口点(entry_point)、关键操作(critical_operation)和跨模块推理链(trace),支持可复现、可解释、确定性的评估。
数据集规模
| 指标 | 数值 |
|---|---|
| 安全公告(reports) | 184 |
| 可达入口点(entries) | 408 |
| 不同项目数 | 38 |
| 不同仓库数 | 23 |
漏洞类型分布
每条记录包含两级分类:vuln_category_l1(粗粒度类型)和 vuln_category_l2(细粒度子类型)。
业务逻辑漏洞(占总公告的 71.2%,即 131/184)
| 细分类别 | 公告数 | 占业务逻辑百分比 |
|---|---|---|
| BL-AUTHZ-BROKEN — 授权逻辑漏洞 | 31 | 23.7% |
| BL-AUTHZ-MISSING — 授权缺失 | 23 | 17.6% |
| BL-AGENT-CAPABILITY — AI/智能体能力边界绕过 | 20 | 15.3% |
| BL-PRIV-ESC — 权限提升 | 13 | 9.9% |
| BL-AUTH-BYPASS — 认证绕过 | 11 | 8.4% |
| 其他7个子类别(含源完整性缺失、工作流违规、不安全默认配置等) | 33 | 25.2% |
传统漏洞(占总公告的 28.8%,即 53/184)
| 类别 | 公告数 | 占传统漏洞百分比 |
|---|---|---|
| 代码注入 | 12 | 22.6% |
| 路径遍历/文件操作 | 9 | 17.0% |
| 命令注入 | 8 | 15.1% |
| XSS | 5 | 9.4% |
| 沙箱逃逸 | 5 | 9.4% |
| 其他(SSRF、认证绕过、反序列化等) | 14 | 26.4% |
数据文件与结构
数据集以两个 JSONL 文件形式提供,位于 data/ 目录下:
- reports.jsonl:184条记录,每个 GitHub Advisory 一条记录
- entries.jsonl:408条记录,每个可达入口点一条记录
每条记录包含 repo_url 和 commit 字段,可检出对应版本的完整漏洞源码树。详细数据模型和字段定义见 SCHEMA.md。
仓库目录结构
VulnGym/ ├── README.md # 英文版说明 ├── README_zh.md # 中文版说明 ├── SCHEMA.md # 字段参考与验证约束 ├── CHANGELOG.md ├── CITATION.cff ├── LICENSE # CC-BY-4.0 ├── data/ │ ├── reports.jsonl # 184行 │ └── entries.jsonl # 408行 └── examples/ ├── load_dataset.py # 标准库/pandas/HuggingFace数据集加载器 ├── example_result.jsonl # 示例工具发现结果提交 └── evaluate.py # 覆盖率/召回率评估器
评估方法
使用提供的 evaluate.py 脚本对工具生成的发现结果进行评估:
bash python3 examples/evaluate.py path/to/your_findings.jsonl -v
每个发现结果必须包含:repo_url、commit、entry_point(可达入口点)和 critical_operation(核心缺陷位置)。
评估指标:
- 公告级召回率(主要指标):被覆盖公告数 / 可用公告数
- 入口点级召回率(次要指标):匹配的入口点数 / 可用入口点数
默认匹配策略包括路径精确匹配、行容差(|Δ行| ≤ 5),所有策略可通过命令行参数配置。
现有基准测试的局限性对比
| 局限性 | 表现 |
|---|---|
| 评估粒度不足 | 多数基准使用函数或差异片段作为评估单元,无法反映在完整工程项目中的定位能力 |
| 漏洞类型狭窄 | 过度强调可模式匹配的CWE缺陷(如SQL注入、缓冲区溢出),缺乏对需深度上下文推理的类别覆盖 |
| 真相粒度粗糙 | 通常为二分类标签或补丁差异,无法精确验证是否定位到正确的入口点和缺陷位置 |
致谢与学术合作
由腾讯悟空代码安全团队联合以下学术机构共同构建:
- 复旦大学系统软件与安全实验室
- 北京大学深圳研究生院李辉教授团队
- 香港大学
- 哈尔滨工业大学
- 中国科学院信息工程研究所网络威胁分析实验室




