Spring-core es un framework ampliamente utilizado en aplicaciones Java que permite a los desarrolladores de software desarrollar aplicaciones Java con componentes de clase empresarial. Se ha identificado una nueva vulnerabilidad que afecta a este producto y ya están disponibles en Internet exploits y pruebas de concepto que la aprovechan.
SRING4SHELL - CVE-2022-22965
"Spring4Shell" o "SpringShell" es una vulnerabilidad en Spring framework , publicada el 30 de marzo de 2022, siendo una vulnerabilidad de día cero o zero-day, que permite la ejecución remota de código - Remote Code Execution (RCE). La explotación de esta vulnerabilidad depende de un endpoint con DataBinder habilitado, que decodifica los datos del cuerpo de la petición automáticamente. Esta propiedad puede permitir a un atacante aprovechar Spring4Shell contra una aplicación vulnerable.
Requisitos para la explotación de la vulnerabilidad:
- JDK 9 o superior;
- Apache Tomcat como contenedor de Servlets;
- Empaquetado como un WAR tradicional (a diferencia de un jar ejecutable de Spring Boot);
- Dependencia spring-webmvc o spring-webflux;
- Spring Framework versiones 5.3.0 a 5.3.17, 5.2.0 a 5.2.19 y versiones anteriores.
Conclusión
Ante una vulnerabilidad que aún no ha sido parcheada, se recomienda seguir las instrucciones proporcionadas por el fabricante como forma de mitigar temporalmente la vulnerabilidad.
Paso a paso
Primer paso
Buscar globalmente la nota en el grupo de aplicaciones @InitBinder y ver si el dataBinder.setDisallowedFields dentro del método. Si se encuentra este fragmento de código, añada { "clase.", "Clase.", ".clase.", ".Clase."} a la lista de bloques original. (Nota: si este fragmento de código se utiliza con más frecuencia, será necesario añadirlo en cada ubicación).
Paso 2
Cree la siguiente clase global en el paquete del proyecto y asegúrese de que la clase es cargada por Spring (recomendamos añadirla al paquete donde se encuentra el Controlador). Después de añadir la clase, es necesario volver a compilar, generar un nuevo paquete de proyecto, verificar la funcionalidad y volver a publicar el proyecto.
Las recomendaciones dadas por Spring y más detalles pueden encontrarse en los siguientes enlaces:
Referencias
- Blog de Qualys
- Spring.io