CWE-Bench-Java
收藏CWE-Bench-Java 数据集概述
数据集简介
CWE-Bench-Java 数据集包含 120 个 CVE,涵盖 4 种 CWE(路径遍历、OS 命令注入、跨站脚本和代码注入)。每个 CVE 包含项目的有缺陷和修复后的源代码,以及修复文件和函数的信息。
项目标识
每个项目通过 Project Slug 唯一标识,包含仓库名称、CVE ID 和项目缺陷版本的标签。例如:
DSpace__DSpace_CVE-2016-10726_4.4 ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^ ^^^ | | | |--> 版本标签 | | |--> CVE ID | |--> 仓库名称 |--> Github 用户名
数据包内容
数据集包含以下文件和目录:
- data/
- project_info.csv
- build_info.csv
- fix_info.csv
- patches/<project_slug>.patch
- advisory/<project_slug>.json
Project Info
data/project_info.csv 文件包含每个项目的详细信息,字段如下:
id: 项目编号(1 到 120)project_slug: 项目唯一标识cve_id: CVE 标识符cwe_id: CWE 标识符(CWE-022, CWE-078, CWE-079, CWE-094)cwe_name: CWE 名称github_username: Github 用户名github_repository_name: Github 仓库名称github_tag: 版本标签github_url: Github 仓库 URLadvisory_id: Github 安全公告数据库中的公告 IDbuggy_commit_id: 缺陷提交的哈希值fix_commit_ids: 修复提交的哈希值集合(按顺序排列,用分号分隔)
Fix Info
data/fix_info.csv 文件包含每个 CVE 修复的 Java 方法和类,字段如下:
project_slug: 项目唯一标识cve_id: CVE 标识符github_username: Github 用户名github_repository_name: Github 仓库名称commit: 包含修复的提交哈希值file: 修复的.java文件class: 修复的类名class_start,class_end: 类的起始和结束行号method: 修复的方法名method_start,method_end: 方法的起始和结束行号signature: 方法签名(可能包含多个重载方法)
获取和构建项目
提供脚本用于获取、打补丁和构建项目。需要 Linux x64 系统,并确保有足够的存储空间。脚本需要 git, wget, python3 和 Java 开发工具(如 Maven 和 Gradle)。
构建信息
构建信息存储在 build-info 目录中,每个文件是一个 .json 文件,包含使用的 Java 版本和 Maven/Gradle 版本,例如:
json
{"jdk": "8u202", "mvn": "3.5.0"}
仅获取不构建
如果不想构建项目,可以运行以下命令: bash $ python3 scripts/setup.py --no-build
选择性获取/构建
可以使用以下参数选择要构建的项目: bash $ python3 scripts/setup.py --cwe CWE-022 CWE-078 # 仅构建 CWE-022 和 CWE-078 的项目 $ python3 scripts/setup.py --filter keycloak # 仅构建 keycloak 项目 $ python3 scripts/setup.py --exclude apache # 不构建任何 apache 相关项目




