@seclink: We just shipped JSEF v1.4.0-benchmark A Spring Boot 3.x Java vuln-mining benchmark, now +85 samples (503→588 checkpoint…

X AI KOLs Timeline Tools

Summary

JSEF v1.4.0-benchmark has been released, adding 85 new samples to the Spring Boot 3.x Java vulnerability mining benchmark for improved security testing coverage and validation.

We just shipped JSEF v1.4.0-benchmark A Spring Boot 3.x Java vuln-mining benchmark, now +85 samples (503→588 checkpoints), all passing dual-source validation. Mapped to OWASP BenchmarkJava, java-sec-code, JavaSecLab, micro_service_seclab, WebGoat & CodeQL. SSRF, JWT, IDOR, SSRF-style FP traps, Log4j2/Shiro/Fastjson, more.
Original Article
View Cached Full Text

Cached at: 08/16/26, 08:02 PM

We just shipped JSEF v1.4.0-benchmark A Spring Boot 3.x Java vuln-mining benchmark, now +85 samples (503→588 checkpoints), all passing dual-source validation. Mapped to OWASP BenchmarkJava, java-sec-code, JavaSecLab, micro_service_seclab, WebGoat & CodeQL. SSRF, JWT, IDOR, SSRF-style FP traps, Log4j2/Shiro/Fastjson, more.


XiaomingX/JSEF

Source: https://github.com/XiaomingX/JSEF

Java Security Education Framework (JSEF) - Spring Boot 安全实践平台

GitHub Stars License PRs Welcome Java Version Spring Boot Docker Ready

一款可复现、可实操、可学习的Spring Boot Web安全实验框架,助力开发者快速掌握Web安全漏洞原理与防御方案。

项目简介

Java Security Education Framework (JSEF) 是基于Spring Boot 3.x构建的Web安全实践平台,专为开发者、安全研究员、高校学生及企业培训设计。通过35+种真实业务场景下的安全漏洞实例(含注入攻击、越权访问、敏感信息泄露等核心类型),提供“原理讲解→漏洞复现→代码对比→修复验证”的完整学习闭环,帮助学习者从“理论”到“实战”快速掌握Web安全核心能力。

本项目不依赖复杂环境,支持本地一键启动与Docker部署,所有漏洞案例均基于真实业务逻辑设计,避免“为了漏洞而漏洞”的演示性代码,更贴近实际开发场景。

新结构说明: 项目代码已重构,所有漏洞相关控制器现在位于 com.freedom.securitysamples.vulnerability 包下。每个漏洞类别内部进一步细分为 vuln (包含不安全/脆弱实现) 和 sec (包含安全/修复实现) 子包,便于直接对比学习。API 路由也已统一为 /api/v1/{vulnerability-type}/unsafe/{scenario} 和 /api/v1/{vulnerability-type}/safe/{scenario} 格式。

核心优势(为什么选择JSEF?)

优势具体说明
漏洞实例真实可复现35+漏洞覆盖OWASP Top 10全类型,每个案例均模拟真实业务场景(如用户登录、数据查询、文件上传)。
学习闭环完整每个漏洞配套:原理文档+复现步骤+不安全代码+安全代码对比+防御最佳实践。
部署零门槛支持mvn一键启动、Docker容器化部署,无需手动配置数据库/中间件。
代码规范清晰采用Spring Boot最佳实践编码,漏洞代码与安全代码已按 vuln/sec 目录分离,便于对比学习。
资源生态丰富内置API文档、漏洞复现手册、安全编码规范,持续更新CVE最新漏洞案例。
高度可扩展提供插件化漏洞案例接口,支持开发者自定义新增漏洞场景或扩展防御方案。

快速开始

环境要求

  • JDK 17 或更高版本
  • Maven 3.6+ 或 Gradle 8.0+
  • Git(可选,用于克隆仓库)
  • Docker(可选,用于容器化部署)

方式1:本地Maven启动(推荐新手)

# 1. 克隆仓库(或直接下载ZIP包)
git clone --depth 1 https://github.com/XiaomingX/JSEF.git
cd JSEF

# 2. 构建项目(跳过测试加速构建)
mvn clean package -DskipTests

# 3. 启动服务
java -jar target/java-sec-code-plus-1.2.0.jar

方式2:Docker一键部署

# 1. 构建镜像
docker build -t jsef-security-sample:latest .

# 2. 启动容器
docker run -d -p 8080:8080 --name jsef-demo jsef-security-sample:latest

验证部署成功

启动后访问以下地址:

  • 项目首页:http://localhost:8080(查看项目导航与漏洞列表)
  • API文档(Swagger):http://localhost:8080/swagger-ui/index.html(查看所有漏洞接口详情)
  • 漏洞手册:http://localhost:8080/docs(查看在线漏洞复现指南)

漏洞案例分类(35+全列表)

关于所有已实现的漏洞案例的详细列表,请参阅 VULNERABILITIES.md。

适用场景

用户类型适用场景
开发工程师学习安全编码规范,避免在项目中写出存在漏洞的代码。
安全研究员复现漏洞原理,验证防御方案有效性,开发安全工具的测试环境。
高校师生信息安全/网络安全课程实验平台,替代传统演示性实验。
企业培训开发团队安全编码培训、渗透测试团队入门实战练习。
CTF选手基础漏洞实战练习,熟悉常见漏洞利用姿势。

SAST 能力与多模型漏洞挖掘 Benchmark

JSEF 不只是教学平台,还内置了一套用于验收 SAST 基础能力与对比多个大模型漏洞挖掘能力差异的 benchmark。设计基于 SAST 第一性原理(从 source 到 sink 的不可信数据可达性证明),样本带有区分度梯度,便于交叉对比误报、漏报、平均耗时、超时样本、报告简洁度与能力完备程度。

核心能力

能力维度说明
污点传播(变量无断点)单跳 / 多跳 / 间接(Map/字段)梯度,检验中间变量是否丢污点
状态机 / 调用链追踪跨方法 / 跨文件 / gadget chain,检验可达性分析深度
框架语义理解Spring 参数绑定、SpEL、@RequestParam 驱动的隐式 source/sink
误报抑制OWASP 式真假混淆样本,检验对“看似危险但安全“代码的判别

样本与区分度分级

样本按 L0-L5 分级(逐级加大推理距离与语义依赖,以拉开不同工具/模型的能力档次;L0 为能力基准,所有工具/模型都应命中):

级别含义示例
L0能力基准(显式直连)source 直接传入 sink,无中间变量
L1单跳直连Runtime.exec(userInput)
L2多跳(变量无断点)source -> 中间变量 -> builder -> sink
L3间接 / 跨方法污点经 Map/字段传递;经方法返回值跨函数
L4跨文件 / 框架语义Controller -> ServiceA -> ServiceB -> sink;Spring4Shell SpEL 语义
L5gadget chain多个安全类组合成危险可达性(CC 反序列化链抽象)

除基础分级外,另有两类“长程/复杂任务“样本族,专用于验收大模型的规划能力与一致性:

  • 长程任务(LT 系列):跨文件追踪 / 框架状态机 / gadget chain 还原 / 多跳拼接 / 版本门控,详见 benchmark/README.md §3。
  • 代码质量 / 性能 DoS + LGTM 缺口(PERF/TB/REFLECT/FMT/HOST/XSLT/FWD/SEED 系列):慢 SQL、资源泄漏、反射注入、信任边界、格式串注入等,对标 LGTM/CodeQL Java 规则库。

当前样本规模

数据来源:benchmark/expectedresults.csv(事实源,与源码 // [CHECKPOINT] 标注双向一致,经 validate_checkpoints.py 校验退出码 0)

  • 503 条机器可读 checkpoint 标注(覆盖 src/main 现有漏洞 + benchmark/cases 梯度样本 + 长程任务 + 代码质量/性能 DoS + LGTM 缺口 + 逻辑漏洞样本 + 原子范式样本族 TCM/SBM/DBG/STR)
  • 268 个 VULN(应报)+ 235 个 SAFE(不应报,用于算 TN/FP)
  • 难度分布:L0 x 18、L1 x 139、L2 x 106、L3 x 115、L4 x 86、L5 x 39(完整 L0-L5 梯度)
  • CWE 覆盖:69 类(仅计 VULN)。高频:表达式注入(917) x 25、反序列化(502) x 21、SQLi(89) x 17、命令注入(78) x 12、授权失效(285) x 10、硬编码凭证/密钥(798) x 7、业务逻辑(840) x 7、SSRF(918) x 6、IDOR(639) x 6、路径穿越(22) x 5、ReDoS(1333) x 5、性能 DoS(400) x 5
  • 覆盖 121 个 category(slug),含 OWASP Top 10 2021 全类;65 条样本带 trace= 路径节点(支持 --check-trace 路径正确性评测)
  • 专项样本族:长程任务(LT) x 16、代码质量/性能 DoS(PERF) x 15、信任边界(TB)/反射(REFLECT)/格式串(FMT)/hostname(HOST)/XSLT(XSLT)/forward(FWD)/种子(SEED) 各 x 2
  • 原子范式样本族(TCM/SBM/DBG/STR) x 64:从 Fastjson、Spring Boot、Dubbo、Struts2 的真实 0day/1day 中抽象出与具体库无关的底层危险组合,用纯 Java 标准库自包含复现。详见下方「原子范式样本族」章节。

原子范式样本族(TCM / SBM / DBG / STR)

为满足「评估大模型 / harness 对同类原理漏洞的检测能力」这一需求,JSEF 从近年高危框架(Fastjson、Spring Boot、Dubbo、Struts2)的 0day/1day 中抽象出去库化的原子级危险范式,构造了一批与具体框架解耦、但原理同源的复杂样本。每个范式族含 vuln + sec 对照(算 FP/TN),按 L1–L5 分级,全部带 // [CHECKPOINT] 标注且不出现原框架类名(纯标准库语义)。

命名空间抽象自原子范式维度(MECE,互不重叠)样本数
TCMFastjson 反序列化TCM-1 直接类型选择 · TCM-2 继承绕过白名单 · TCM-3 缓存/二次解析绕过 · TCM-4 私有字段可控 · TCM-5 属性即代码(getter/setter 危险)20
SBMSpring BootSBM-1 属性绑定穿越(Binder Traversal)· SBM-2 声明式配置被求值 · SBM-3 高权限端点暴露 · SBM-4 授权短路绕过16
DBGDubbo RPCDBG-1 解析器/格式协商切换 · DBG-2 跨信任域隐式信任(attachment)· DBG-3 类名黑名单编码变形绕过16
STRStruts2/OGNLSTR-1 双层求值(Double Evaluation)· STR-2 协议层字段注入 · STR-3 表达式排除列表/沙箱绕过12

设计要点:

  • 抽象原则:剥离「某 JSON 库 autotype」「某 Web 框架 SpEL」等具体机制,只保留「攻击者控制类型/数据 + 系统自动调用隐式方法 + 隐式方法链抵达危险 sink」等跨框架不变危险组合。
  • 与既有样本不重叠:刻意避开仓库已有的 JSEF-OGNL-*/JSEF-SPEL-* 单层表达式注入、JSEF-DESER-* 直接反序列化等场景,只覆盖上述框架独有且未被建模的原子维度(如 OGNL 双层求值、Spring4Shell 绑定穿越、Dubbo 解析器协商)。
  • 高区分度:含 L4 跨文件、L5 gadget chain、跨方法链等难例,专用于拉开不同工具/模型的能力档次。
  • 安全底线:所有危险调用仅 localhost 演示语义、占位字符串,不提供真实利用脚本。

样本位置:benchmark/cases/{vuln,sec}/{tcm,sbm,dbg,str}/;设计文档:plans/02-~05-*.md。

样本组织:

  • benchmark/cases/vuln/ 与 benchmark/cases/sec/:有区分度的梯度样本(含安全对照)
  • benchmark/cases/vuln/longtask/ 与 benchmark/cases/vuln/perf/ 等:长程任务与代码质量/性能 DoS 专项样本
  • benchmark/cases/vendor/:从 OWASP Benchmark / Juliet / PrimeVul / CVEfixes 抽象留存的高质量竞品样本,含来源 URL 溯源

如何运行与交叉对比

  1. 启动 JSEF:mvn clean package -DskipTests && java -jar target/*.jar
  2. 选定被测对象:SAST 工具(CodeQL/SonarQube/Snyk)+ 大模型(在 Claude Code 中切换模型,使用相同提示词 benchmark/prompts/vuln_hunt.md)
  3. 各对象对 benchmark/cases/ 跑一遍,产出 SARIF 或 id -> {hit,file,line} 结果,记录耗时
  4. 跑评分脚本得到交叉对比指标(在仓库根目录执行):
    python3 benchmark/scripts/scorecard.py --expected benchmark/expectedresults.csv --result <结果文件.json|.sarif> --name <被测对象名>
    
    输出 Recall / Precision / Youden Score (TPR - FPR) / 平均耗时 / 超时数 / 报告简洁度 / 能力完备度,并按 CWE 与 level 分组。

详细设计与协议见 benchmark/README.md 与 MY_PLAN.md。

官方文档

如何贡献

本项目欢迎所有形式的贡献,无论是漏洞案例新增、文档完善、代码修复还是功能建议,都能帮助更多人学习Web安全!

贡献方式

  1. 提交Issue:反馈漏洞、建议功能或报告Bug(推荐先搜索是否已有同类Issue)
  2. 提交PR:
    • 修复代码问题(如拼写错误、逻辑优化)
    • 新增漏洞案例(需遵循新增漏洞指南)
    • 完善文档(如补充复现步骤、翻译英文文档)
  3. 分享推广:Star本项目、在技术社区分享使用体验,帮助更多人发现JSEF

新手友好贡献

  • Good First Issues:适合新手的入门级任务(如文档补充、代码注释完善)

开源许可

本项目基于 MIT License 开源,允许:

  • 免费用于个人学习、企业培训及商业产品测试
  • 修改、分发项目代码(需保留原作者版权声明)
  • 基于本项目二次开发(需注明来源)

禁止:将本项目用于未经授权的渗透测试、恶意攻击等违法活动。

Star 历史

Star History Chart

致谢

  • 感谢OWASP提供的Web安全标准与漏洞分类框架
  • 感谢Spring社区提供的Spring Boot生态支持
  • 感谢所有贡献者的代码提交与反馈(Contributors)
  • 感谢安全社区技术博主的漏洞原理分享

免责声明

本项目仅用于学习、研究及企业内部安全培训,请勿用于任何未经授权的测试、攻击或破坏活动。使用本项目产生的一切法律责任,由使用者自行承担。

Similar Articles

@seclink: It seems we can create benchmarks for more languages. Overnight, everyone is rushing to evaluate the cybersecurity capabilities of large language models, to see if this is real emergence or just hype. Next, we need to continue adding high-quality samples for next.js, rust, golang, c/c++, python...

X AI KOLs Timeline

This article discusses creating benchmarks for more programming languages to evaluate the cybersecurity capabilities of large language models, and announces the release of JSEF v1.3.0, a Java security teaching framework and benchmark for measuring the vulnerability detection capabilities of SAST tools and LLMs.