Vuln-EVAL-LAB 是一个面向安全研究的静态分析评测框架, 用于统一评估不同漏洞检测工具在 OWASP Benchmark 数据集 上的检测能力。
本项目支持:
- CodeQL 静态分析工具评测
- CodeFuse-Query 静态分析工具评测
- 多 CWE 漏洞检测对比
- 自动化评测指标统计
- 可复现实验流程设计
该框架旨在解决不同安全工具之间缺乏统一评测标准的问题, 提供工程化、可扩展的漏洞检测评测平台。
⚠ 本项目主要用于安全研究与工具评测实验。
- 新增一键评估入口
run_eval.sh - 自动检测各 CWE 实验 SARIF 文件
scripts/目录按功能拆分为converters/、evaluation/、reporting/- 新增 CodeFuse JSON → CSV 转换脚本
scripts/converters/codefuse_json_to_csv.py - 自动汇总 Precision / Recall / F1 等指标
- 自动生成性能可视化图表
- 自动输出英文报告与中文报告
- 完整评估流程无需手动逐脚本执行
SECURITY-EVAL-LAB 的首个完整版本, 实现了从 0 到 1 的漏洞检测评测平台搭建。
- 设计统一静态分析评测架构
- 接入 OWASP Benchmark 数据集
- 实现 SARIF 结果标准化处理流程
- 构建单 CWE 自动评测与统计机制
- 实现跨 CWE 汇总指标计算模块
- 建立可复现实验目录与执行流程
- 构建规则与实验结果的工程化管理体系
该版本使平台具备完整的静态分析工具评测能力, 能够独立支撑静态分析工具检测效果的系统化实验。
OWASP Benchmark Source Code
│
▼
Static Analysis Database
│
▼
Detection Rules Execution
(CodeQL / CodeFuse Query)
│
▼
Detection Result Export
(CodeQL SARIF / CodeFuse JSON)
│
▼
Result Normalization
(SARIF → CSV / JSON → CSV)
│
▼
Ground Truth Comparison
│
▼
Evaluation Metrics Output
- 构建统一漏洞检测评测框架
- 对比不同静态分析工具检测能力
- 提供自动化评测流程
- 支持安全研究实验复现
- 提供可扩展规则管理体系
Vuln-Eval-Lab
│
├── dataset # 数据集与分析数据库
│ ├── benchmark # OWASP Benchmark 源码
│ │ ├── data
│ │ ├── src
│ │ └── target
│ ├── codeql-db # CodeQL 数据库与结果
│ │
│ └── codefuse-db # CodeFuse 数据库目录
│
├── rules # 检测规则
│ ├── codeql-query # CodeQL 各 CWE 规则
│ └── codefuse-query # CodeFuse 各 CWE 规则
│
├── experiments # 实验目录
│ ├── cwe-022 ~ cwe-643 # 各 CWE 实验
│ │ ├── eval
│ │ ├── logs
│ │ └── results
│ └── examples # 示例实验
│
├── scripts # 脚本目录(按功能分类)
│ ├── converters # 结果格式转换
│ ├── evaluation # 指标评测与计算
│ └── reporting # 图表与报告生成
├── reports # 结果输出
│ ├── data
│ └── figs
│
├── run_eval.sh # 一键评估入口
├── requirements.txt
├── expectedresults-1.2.csv # 基准期望结果
├── LICENSE
└── README.md
更多实验流程说明请参考:
experiments/README.md
建议使用 Python 虚拟环境运行本项目。
- Python 3.8+
- CodeQL CLI
- Sparrow / CodeFuse-Query CLI
- Java JDK 17+
python3 -m venv .venvsource .venv/bin/activate激活成功后终端将显示:
(.venv)
pip install -r requirements.txtdeactivate参考官方文档:
https://codeql.github.com/docs/codeql-cli/
https://github.com/codefuse-ai/CodeFuse-Query
git clone https://github.com/yangyuze-06/SECURITY-EVAL-LAB.git
cd SECURITY-EVAL-LAB
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cd experiments
bash create.sh在完成检测并生成 SARIF 文件后:
./run_eval.sh该命令将自动:
- 检测 SARIF 文件是否齐全
- 汇总各 CWE 指标
- 生成性能可视化图
- 输出英文评估报告
- 输出中文评估报告
结果输出位置:
reports/data/metrics.json
reports/figs/
reports/report.md
reports/report_zh.md
每个 CWE 实验统一遵循以下流程:
- 构建静态分析数据库
- 执行漏洞检测规则
- 导出检测结果(CodeQL: SARIF,CodeFuse: JSON)
- 结果归一化为 CSV
- Ground Truth 对比
- 统计评测指标
本项目采用标准漏洞检测评测指标体系:
| 指标 | 含义 |
|---|---|
| TP | 真实检测漏洞数量 |
| FP | 误报数量 |
| FN | 漏报数量 |
| Precision | 检测准确率 |
| Recall | 漏洞召回率 |
| FNR | 漏报率 |
| FPR | 误报率 |
| FDR | 误检率 |
codeql database create owasp-benchmark-db \
--language=java \
--source-root=dataset/benchmark \
--command="mvn clean package -DskipTests -Dspotless.skip=true"codeql database analyze owasp-benchmark-db \
rules/codeql-query/CWE-xxx \
--format=sarifv2.1.0 \
--output=experiments/cwe-xxx/results/codeql/cwexxx.sarifsparrow database create \
-s dataset/benchmark/src/main/java \
-lang java \
-o dataset/codefuse-db \
-overwritesparrow query run \
-d dataset/codefuse-db \
-gdl rules/codefuse-query/CWE-022/checker_taint_no_fallback_debug.gdl \
-o experiments/cwe-022/results/codefuse-query执行后会在输出目录生成:
experiments/cwe-022/results/codefuse-query/checker_taint_no_fallback_debug.json
python scripts/converters/sarif_to_csv.pypython scripts/converters/codefuse_json_to_csv.py \
experiments/cwe-022/results/codefuse-query/checker_taint_no_fallback_debug.json \
experiments/cwe-022/results/codefuse-query/cwe022_codefuse.csv \
--include-reasonpython scripts/evaluation/eval_codefuse_results.py \
--expected expectedresults-1.2.csv \
--results experiments/cwe-022/results/codefuse-query/cwe022_codefuse.csv \
--cwe CWE-022 \
--outdir experiments/cwe-022/eval/codefuse \
--format csv \
--fp-mode all_non_gtpython scripts/evaluation/aggregate_results.pypython scripts/reporting/plots_metrics.py
python scripts/reporting/generate_report.py每个脚本的终端/VSCode 详细用法见:
scripts/README.md
rules/codefuse-query/CWE-022已收敛为主线规则与辅助定位脚本:checker_taint_no_fallback.gdlchecker_taint_no_fallback_debug.gdlsourcefinder.gdlsinkfinder.gdl
- 已验证运行
checker_taint_no_fallback_debug.gdl,结果输出到:experiments/cwe-022/results/codefuse-query/checker_taint_no_fallback_debug.json
- 新增 JSON 转 CSV 工具脚本:
scripts/converters/codefuse_json_to_csv.py
scripts/README.md已补充每个脚本的中文终端示例和 VSCode 用法。
./run_eval.sh实验统计结果将输出至:
reports/
- CWE-022
- CWE-078
- CWE-079
- CWE-089
- CWE-090
- CWE-327
- CWE-328
- CWE-330
- CWE-501
- CWE-614
- CWE-643
- 工程化漏洞评测框架
- 支持多工具统一评测
- 支持自动指标统计
- 支持实验复现
- 支持规则模块化管理
- 支持一键自动评估 pipeline(v1.1)
- 支持自动生成中英双语报告
- 支持性能可视化分析
- 关于codefuse-query的gdl查询还在建设中
- 支持更多静态分析工具
- 增加评测可视化模块
- 支持自动实验执行流水线
- 支持 ROC / PR 曲线分析
- 构建漏洞检测规则基准库
欢迎提交 Issue 或 Pull Request 参与项目改进。
本项目基于 MIT 开源许可证发布 您可以在遵守许可证条款的前提下自由使用、修改和分发本项目 完整许可证内容请参见 LICENSE 文件
L1ngSh1
本项目最初源于作者在安全研究实习期间,对不同静态分析工具评测方式缺乏统一标准的思考。
Vuln-Eval-Platform 的目标是构建一个结构化、可扩展、可复现的漏洞检测评测框架,使研究者能够更加系统地分析静态分析工具在真实漏洞数据集上的检测表现。
该项目既是一个研究实验平台,也记录了作者在安全研究与工程实践中的探索过程。
项目目前仍在持续演进中,欢迎对静态分析与漏洞检测感兴趣的研究者参与改进、提出建议或贡献规则。
如果本项目能够在安全研究或教学中提供帮助,将是作者非常欣慰的事情。