[Actualización 01/04/2022] Múltiples vulnerabilidades en productos Spring
- Spring Framework, versiones:
- desde 5.3.0 hasta 5.3.16;
- las versiones más antiguas y sin soporte también se ven afectadas.
- Spring Cloud Function, versiones:
- 3.1.6;
- 3.2.2;
- las versiones más antiguas y sin soporte también se ven afectadas.
- Spring Core, todas las versiones (según diversos investigadores, afecta a todos los usuarios que ejecutan JDK versión 9 y superiores, debido a una corrección parcial de la vulnerabilidad CVE-2010-1622).
- JDK, versión 9 o superior;
- Apache Tomcat como el contenedor Servlet;
- empaquetado como WAR;
- dependencias spring-webmvc o spring-webflux;
- Spring Framework, versiones:
- desde 5.3.0 hasta 5.3.17;
- desde 5.2.0 hasta 5.2.19;
- y versiones anteriores.
Para consultar la lista de fabricantes afectados, consulte la página de información de CERT/CC.
Spring es un proyecto mantenido por Spring.io (una filial de VMWare) y es utilizado por muchos frameworks de software empresarial basados en Java. Se han identificado 3 vulnerabilidades en Spring:
- DoS en Spring Framework, descubierta por 4ra1n, con severidad media e identificador CVE-2022-22950;
- RCE en Spring Cloud Function, descubierta por m09u3r, con severidad media e identificador CVE-2022-22963;
- RCE 0day en Spring Core (Spring4Shell), aún bajo investigación.
- Spring Framework, actualizar a la versión 5.3.17 o superiores.
- Spring Cloud Function, actualizar a las versiones 3.1.7 o 3.2.3.
- Spring Core, como medida de mitigación temporal recogida por Praetorian, se recomienda crear un componente ControllerAdvice (que es un componente de Spring compartido entre Controllers) y añadir una blacklist de patrones de campos vulnerables necesarios para la explotación. Adicionalmente, otras medidas de mitigación para Spring4Shell son:
- implementar reglas de filtrado y monitorización en el WAF, haciendo referencia a "class" ("class.*", "*.class.*", "Class.*", y "*.Class.*");
- utilizar reglas de Yara para detectar actividades relacionadas.
- los usuarios de versiones 5.3.x deben actualizar a la versión 5.3.18 o posteriores;
- los usuarios de versiones 5.2.x deben actualizar a la versión 5.2.20 o posteriores.
- Un usuario podría proporcionar una expresión SpEL (Spring Expression Language) especialmente diseñada para causar una condición de denegación de servicio (DoS) en Spring Framework. Se ha asignado el identificador CVE-2022-22950 para esta vulnerabilidad.
- Cuando se utiliza la funcionalidad de enrutamiento, sería posible que un usuario proporcione una expresión SpEL especialmente diseñada como expresión de enrutamiento, lo que podría dar lugar a un acceso a los recursos locales de Spring Cloud Function. Se ha asignado el identificador CVE-2022-22963 para esta vulnerabilidad.
- La vulnerabilidad Spring4Shell podría permitir a un atacante remoto, no autenticado, ejecutar código arbitrario en el sistema objetivo.
[Actualización 01/04/2022] La vulnerabilidad Spring4Shell afecta a las aplicaciones Spring MVC y Spring WebFlux que se ejecutan en JDK 9+. El exploit requiere que la aplicación se ejecute en Tomcat como un despliegue WAR. Si la aplicación se despliega como un JAR ejecutable de Spring Boot (configuración por defecto) no es vulnerable.
La explotación de esta vulnerabilidad requiere un endpoint con DataBinder habilitado y depende en gran medida del contenedor de servlets de la aplicación. Se ha asignado el identificador CVE-2022-22965 para esta vulnerabilidad.
IMPORTANTE: existen PoCs de Spring4Shell publicados.