Vulnerabilidad en Spring Core y Spring Cloud

Introducción
El pasado día 29 y 30 de marzo se detectaron dos vulnerabilidades que afectan a complementos de Spring. Uno es Spring Cloud y el otro es Spring Core. La vulnerabilidad de Spring Cloud tiene el identificador CVE-2022-22963, y la de Spring Core CVE-2022-22965. En ambas vulnerabilidades se permitiría a los atacantes ejecutar código arbitrario en la máquina y comprometer todo el host.

 

Análisis

La vulnerabilidad de Spring Cloud permite utilizar el parámetro spring.cloud.function.routing-expression de la cabecera de petición HTTP y la expresión SpEL para ser inyectada y ejecutada a través de StandardEvaluationContext.

Utilizando la funcionalidad de enrutamiento, es posible que un usuario proporcione una expresión de Spring Expression Language (SpEL) especialmente elaborada como expresión de enrutamiento para acceder a recursos locales y ejecutar comandos en el host.

Dado que Spring Cloud Function puede utilizarse en funciones sin servidor de la nube como AWS lambda o Google Cloud Functions, estas funciones también podrían verse afectadas.

Las versiones de Spring Cloud Function afectadas son las siguientes:

      • 3.1.6
      • 3.2.2
      • Las versiones más antiguas y no soportadas también se ven afectadas.

Explotando la vulnerabilidad es posible lograr el compromiso total del host o contenedor ejecutando comandos arbitrarios.

Según el sistema CVSS, tiene una puntuación de 9,0 como gravedad ALTA.

La vulnerabilidad de Spring Core parece afectar a las funciones que utilizan la anotación RequestMapping y los parámetros POJO (Plain Old Java Object). En ciertas configuraciones, la explotación de este problema es sencilla, ya que solo requiere que un atacante envíe una solicitud HTTP manipulada a un sistema vulnerable. Sin embargo, la explotación de diferentes configuraciones requerirá que el atacante realice una investigación adicional para encontrar cargas útiles que sean efectivas. Esta vulnerabilidad permite que un atacante no autenticado ejecute código arbitrario en el sistema de destino.
Las versiones de Spring Core afectadas son las siguientes:

      • JDK >=9

 

Recomendaciones

Para solucionar la vulnerabilidad de Spring Cloud, debería actualizar la aplicación a las versiones más recientes 3.1.7 y 3.2.3

Para solucionar la vulnerabilidad de Spring Core, se recomienda en primer lugar actualizar la aplicación a las versiones más recientes 5.3.18 o 5.2.20 dependiendo de la versión que el usuario utilice. Además hay 2 formas de mitigarla de forma temporal (WAF y en el Código Java). Se pueden encontrar en el enlace [2].

 

 

Referencias


[1] https://tanzu.vmware.com/security/cve-2022-22963

[2] https://www.cyberkendra.com/2022/03/springshell-rce-0-day-vulnerability.html

[3] https://tanzu.vmware.com/security/cve-2022-22965

[4] https://sysdig.com/blog/cve-2022-22965-spring-core-spring4shell/

[5] https://unit42.paloaltonetworks.com/cve-2022-22965-springshell/