CWE-Bench-Java
收藏资源简介:
CWE-Bench-Java是一个手动验证的数据集,用于检测Java项目中的安全漏洞。该数据集包含120个CVE,涵盖4种CWE类型,每个CVE包括有问题的和修复后的源代码,以及修复文件和函数的信息。数据集提供了项目信息、构建信息、修复信息等CSV文件,以及相关的补丁和安全公告信息。
CWE-Bench-Java is a manually validated dataset for detecting security vulnerabilities in Java projects. This dataset contains 120 CVE entries covering 4 CWE categories, where each CVE entry includes both the vulnerable and fixed source code, as well as information about the repaired files and functions. The dataset provides CSV files containing project information, build information, fix-related information and other relevant content, along with associated patches and security advisory information.
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 相关项目




