@seclink: We just shipped JSEF v1.4.0-benchmark A Spring Boot 3.x Java vuln-mining benchmark, now +85 samples (503→588 checkpoint…
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.
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 安全实践平台
一款可复现、可实操、可学习的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 语义 |
| L5 | gadget 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,互不重叠) | 样本数 |
|---|---|---|---|
| TCM | Fastjson 反序列化 | TCM-1 直接类型选择 · TCM-2 继承绕过白名单 · TCM-3 缓存/二次解析绕过 · TCM-4 私有字段可控 · TCM-5 属性即代码(getter/setter 危险) | 20 |
| SBM | Spring Boot | SBM-1 属性绑定穿越(Binder Traversal)· SBM-2 声明式配置被求值 · SBM-3 高权限端点暴露 · SBM-4 授权短路绕过 | 16 |
| DBG | Dubbo RPC | DBG-1 解析器/格式协商切换 · DBG-2 跨信任域隐式信任(attachment)· DBG-3 类名黑名单编码变形绕过 | 16 |
| STR | Struts2/OGNL | STR-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 溯源
如何运行与交叉对比
- 启动 JSEF:
mvn clean package -DskipTests && java -jar target/*.jar - 选定被测对象:SAST 工具(CodeQL/SonarQube/Snyk)+ 大模型(在 Claude Code 中切换模型,使用相同提示词
benchmark/prompts/vuln_hunt.md) - 各对象对
benchmark/cases/跑一遍,产出 SARIF 或id -> {hit,file,line}结果,记录耗时 - 跑评分脚本得到交叉对比指标(在仓库根目录执行):
输出 Recall / Precision / Youden Score (TPR - FPR) / 平均耗时 / 超时数 / 报告简洁度 / 能力完备度,并按 CWE 与 level 分组。python3 benchmark/scripts/scorecard.py --expected benchmark/expectedresults.csv --result <结果文件.json|.sarif> --name <被测对象名>
详细设计与协议见 benchmark/README.md 与 MY_PLAN.md。
官方文档
- 部署指南:本地/Mac/Linux/Windows/Docker部署全方案
- 漏洞复现手册:每个漏洞的详细复现步骤(含Payload示例)
- API文档:所有接口的请求参数、响应格式说明(支持Swagger在线调试)
- 安全编码规范:基于Spring Boot的安全编码最佳实践
- 新增漏洞指南:如何为项目新增漏洞案例
- Benchmark 设计与协议:SAST/LLM 漏洞挖掘验收 benchmark 的使用与扩展
- Benchmark 实施计划:能力模型、样本分级与待办进度
- 视频教程:B站配套漏洞复现视频(持续更新)
如何贡献
本项目欢迎所有形式的贡献,无论是漏洞案例新增、文档完善、代码修复还是功能建议,都能帮助更多人学习Web安全!
贡献方式
- 提交Issue:反馈漏洞、建议功能或报告Bug(推荐先搜索是否已有同类Issue)
- 提交PR:
- 修复代码问题(如拼写错误、逻辑优化)
- 新增漏洞案例(需遵循新增漏洞指南)
- 完善文档(如补充复现步骤、翻译英文文档)
- 分享推广:Star本项目、在技术社区分享使用体验,帮助更多人发现JSEF
新手友好贡献
- Good First Issues:适合新手的入门级任务(如文档补充、代码注释完善)
开源许可
本项目基于 MIT License 开源,允许:
- 免费用于个人学习、企业培训及商业产品测试
- 修改、分发项目代码(需保留原作者版权声明)
- 基于本项目二次开发(需注明来源)
禁止:将本项目用于未经授权的渗透测试、恶意攻击等违法活动。
Star 历史
致谢
- 感谢OWASP提供的Web安全标准与漏洞分类框架
- 感谢Spring社区提供的Spring Boot生态支持
- 感谢所有贡献者的代码提交与反馈(Contributors)
- 感谢安全社区技术博主的漏洞原理分享
免责声明
本项目仅用于学习、研究及企业内部安全培训,请勿用于任何未经授权的测试、攻击或破坏活动。使用本项目产生的一切法律责任,由使用者自行承担。
Similar Articles
@seclink: Just shipped a vulnerability-hunting benchmark inside JSEF (Java Security Education Framework). It's built to score bot…
JSEF adds a vulnerability-hunting benchmark that scores SAST tools and LLMs on identical prompts, with 52 machine-readable checkpoints across difficulty levels, using Youden Index scoring. MIT licensed.
@seclink: JSEF v1.10.0 is out A model-agnostic LLM eval toolchain + 20+ new hard vulnerability samples. Swap any OpenAI/Anthropic…
JSEF v1.10.0 is a model-agnostic LLM evaluation toolchain released with 20+ new hard vulnerability samples, designed for assessing LLMs in Java and web security contexts.
@seclink: JSEF security-teaching framework and vulnerability-mining benchmark has added Category C (patch-regression side effects…
JSEF security-teaching framework has added new categories for patch-regression side effects and long-range data flow, enhancing its benchmark for evaluating static analysis tools.
@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...
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.
@pilvar222: We ran DeepSeek v4 Pro 0813 on our cybersecurity benchmark, it outperformed EVERY (!) other model at finding vulnerabil…
DeepSeek v4 Pro 0813 outperforms all other models on a cybersecurity vulnerability-finding benchmark, achieving 87.5% CVE rediscovery at pass@3, though with lower precision and run consistency.