
Minimal reproduction de CVE-2026-22732 — cabeceras HTTP de Spring Security eliminadas silenciosamente
Reproducción mínima de CVE-2026-22732 — los encabezados de respuesta HTTP de Spring Security se descartan silenciosamente cuando el código del controlador escribe directamente en la respuesta del servlet.
Spring Security utiliza la escritura de encabezados "perezosa" (lazy) por defecto. Cuando un controlador escribe en response.getOutputStream(), llama a response.flushBuffer(), o establece Content-Length mediante setIntHeader(), la respuesta se confirma antes de que Spring Security pueda inyectar sus encabezados de seguridad (X-Frame-Options, X-Content-Type-Options, Cache-Control, Strict-Transport-Security, etc.).
CVSS 3.1: 9.1 (Crítico) — no se requiere autenticación ni interacción del usuario.
src/main/java/com/example/vuln/
├── VulnApplication.java # Punto de entrada de Spring Boot
├── SecurityConfig.java # Configura los encabezados de seguridad (X-Frame-Options, CSP, etc.)
└── VulnController.java # 1 endpoint seguro + 3 vulnerables
src/test/java/com/example/vuln/
└── HeaderVerificationTest.java # Pruebas que FALLAN en versiones vulnerables
| Endpoint | ¿Vulnerable? | Disparador |
|---|---|---|
GET /safe | No | Retorno normal de Spring MVC |
GET /vuln/stream | Sí | Escribe en response.getOutputStream() |
GET /vuln/flush | Sí | Llama a response.flushBuffer() |
GET /vuln/content-length | Sí | Establece Content-Length mediante setIntHeader() |
./mvnw spring-boot:run
Luego verifique con curl:
# Seguro — los encabezados están presentes
curl -i http://localhost:8080/safe
# Vulnerable — los encabezados de seguridad FALTAN
curl -i http://localhost:8080/vuln/stream
curl -i http://localhost:8080/vuln/flush
curl -i http://localhost:8080/vuln/content-length
./mvnw test
En una versión vulnerable, las pruebas vuln* fallarán (encabezados faltantes).
En una versión parcheada (6.5.9+ / 7.0.4+), todas las pruebas pasan.
Actualice pom.xml para usar una versión parcheada de Spring Security:
<spring-security.version>6.5.9</spring-security.version>