## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SEMGREP-CVE-2026-22732-DEMO
# CVE-2026-22732 演示
**CVE-2026-22732** 的最小复现 — 当控制器代码直接写入 servlet 响应时,Spring Security HTTP 响应头会被静默丢弃。
## 漏洞详情
Spring Security 默认使用“惰性”响应头写入机制。当控制器写入 `response.getOutputStream()`、调用 `response.flushBuffer()` 或通过 `setIntHeader()` 设置 `Content-Length` 时,响应会在 Spring Security 注入其安全响应头(`X-Frame-Options`、`X-Content-Type-Options`、`Cache-Control`、`Strict-Transport-Security` 等)之前被提交。
**CVSS 3.1:9.1(严重)** — 无需身份验证或用户交互。
## 受影响版本
* Spring Security 5.7.0–5.7.21、5.8.0–5.8.23、6.3.0–6.3.14、6.4.0–6.4.14、6.5.0–6.5.8、7.0.0–7.0.3
## 项目结构
root@kitploit:~
src/main/java/com/example/vuln/
├── VulnApplication.java # Spring Boot 入口点
├── SecurityConfig.java # 配置安全响应头(X-Frame-Options、CSP 等)
└── VulnController.java # 1 个安全端点 + 3 个易受攻击端点
src/test/java/com/example/vuln/
└── HeaderVerificationTest.java # 在易受攻击版本上会失败的测试
## 端点
## 运行
root@kitploit:~
./mvnw spring-boot:run
然后使用 curl 验证:
root@kitploit:~
# 安全 — 响应头存在
curl -i http://localhost:8080/safe
# 易受攻击 — 安全响应头缺失
curl -i http://localhost:8080/vuln/stream
curl -i http://localhost:8080/vuln/flush
curl -i http://localhost:8080/vuln/content-length
## 运行测试
root@kitploit:~
./mvnw test
在**易受攻击** 版本上,`vuln*` 测试将**失败** (响应头缺失)。 在**已修补** 版本(6.5.9+ / 7.0.4+)上,所有测试均通过。
## 修复方案
更新 `pom.xml` 以使用已修补的 Spring Security 版本:
root@kitploit:~
<spring-security.version>6.5.9</spring-security.version>