Skip to content

yangyuze-06/Vuln-Eval-Platform

Repository files navigation

Vuln-Eval-Platform 🔐

Security Evaluation Lab for Static Analysis Tools

License Status Python JDK CodeQL OWASP Security Research Evaluation Debut Project Created by L1ngSh1


📌 项目简介

Vuln-EVAL-LAB 是一个面向安全研究的静态分析评测框架, 用于统一评估不同漏洞检测工具在 OWASP Benchmark 数据集 上的检测能力。

本项目支持:

  • CodeQL 静态分析工具评测
  • CodeFuse-Query 静态分析工具评测
  • 多 CWE 漏洞检测对比
  • 自动化评测指标统计
  • 可复现实验流程设计

该框架旨在解决不同安全工具之间缺乏统一评测标准的问题, 提供工程化、可扩展的漏洞检测评测平台。

⚠ 本项目主要用于安全研究与工具评测实验。


🆕 版本说明

v1.1(当前版本)

  • 新增一键评估入口 run_eval.sh
  • 自动检测各 CWE 实验 SARIF 文件
  • scripts/ 目录按功能拆分为 converters/evaluation/reporting/
  • 新增 CodeFuse JSON → CSV 转换脚本 scripts/converters/codefuse_json_to_csv.py
  • 自动汇总 Precision / Recall / F1 等指标
  • 自动生成性能可视化图表
  • 自动输出英文报告与中文报告
  • 完整评估流程无需手动逐脚本执行

v1.0(平台基础版本)

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+

🐍 Python 环境配置

1. 创建虚拟环境

python3 -m venv .venv

2. 激活虚拟环境

source .venv/bin/activate

激活成功后终端将显示:

(.venv)

3. 安装 Python 依赖

pip install -r requirements.txt

4. 退出虚拟环境

deactivate

🔧 安装 CodeQL

参考官方文档:

https://codeql.github.com/docs/codeql-cli/


🔧 安装 CodeFuse / Sparrow

https://github.com/codefuse-ai/CodeFuse-Query


⚡ Quick Start

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

⚡ 一键评估(v1.1 推荐)

在完成检测并生成 SARIF 文件后:

./run_eval.sh

该命令将自动:

  • 检测 SARIF 文件是否齐全
  • 汇总各 CWE 指标
  • 生成性能可视化图
  • 输出英文评估报告
  • 输出中文评估报告

结果输出位置:

reports/data/metrics.json
reports/figs/
reports/report.md
reports/report_zh.md

🧪 实验流程

每个 CWE 实验统一遵循以下流程:

  1. 构建静态分析数据库
  2. 执行漏洞检测规则
  3. 导出检测结果(CodeQL: SARIF,CodeFuse: JSON)
  4. 结果归一化为 CSV
  5. Ground Truth 对比
  6. 统计评测指标

📊 评测指标

本项目采用标准漏洞检测评测指标体系:

指标 含义
TP 真实检测漏洞数量
FP 误报数量
FN 漏报数量
Precision 检测准确率
Recall 漏洞召回率
FNR 漏报率
FPR 误报率
FDR 误检率

🔍 CodeQL 实验示例

构建数据库

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.sarif

🔍 CodeFuse 实验示例

构建数据库

sparrow database create \
  -s dataset/benchmark/src/main/java \
  -lang java \
  -o dataset/codefuse-db \
  -overwrite

执行规则检测

sparrow 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

📁 结果分析

CodeQL:SARIF 转 CSV

python scripts/converters/sarif_to_csv.py

CodeFuse:JSON 转 CSV

python 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-reason

单 CWE 评测(CodeFuse)

python 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_gt

汇总统计结果(多 CWE)

python scripts/evaluation/aggregate_results.py

生成图表与报告

python scripts/reporting/plots_metrics.py
python scripts/reporting/generate_report.py

脚本完整说明

每个脚本的终端/VSCode 详细用法见:

scripts/README.md

📝 本次改动同步

  • rules/codefuse-query/CWE-022 已收敛为主线规则与辅助定位脚本:
    • checker_taint_no_fallback.gdl
    • checker_taint_no_fallback_debug.gdl
    • sourcefinder.gdl
    • sinkfinder.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 用法。

⭐ 自动评估流程(v1.1 推荐)

./run_eval.sh

实验统计结果将输出至:

reports/

📌 当前支持 CWE 类型

  • 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 的目标是构建一个结构化、可扩展、可复现的漏洞检测评测框架,使研究者能够更加系统地分析静态分析工具在真实漏洞数据集上的检测表现。

该项目既是一个研究实验平台,也记录了作者在安全研究与工程实践中的探索过程。

项目目前仍在持续演进中,欢迎对静态分析与漏洞检测感兴趣的研究者参与改进、提出建议或贡献规则。

如果本项目能够在安全研究或教学中提供帮助,将是作者非常欣慰的事情。


About

Automated vulnerability detection evaluation platform based on CodeQL and OWASP Benchmark

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors