Spring Cloud Function SpEL Injection (CVE-2022-22963) explotada en la naturaleza

  • Reportajes

Federico Dios, pre-sales senior manager de Akamai Technologies, analiza en este artículo las vulnerabilidades de Spring Cloud.

El 24 de marzo de 2022, Pivotal parcheó una vulnerabilidad crítica de inyección de código en el lado del servidor (inyección en el lenguaje de expresiones de Spring) en Spring Cloud Function, que podría llevar a comprometer el sistema. Spring es el popular framework Java de código abierto. Esta, y otra vulnerabilidad descubierta de ejecución remota de código (RCE) (Spring Core o "Spring4Shell"), están mitigadas por los conjuntos de reglas de Akamai Adaptive Security Engine (ASE) Kona Site Defender (KSD).  Vamos a analizar las vulnerabilidades de Spring Cloud.

Spring Cloud Function es una tecnología que permite desacoplar la lógica de negocio de cualquier tiempo de ejecución específico. Spring Expression Language (SpEL) es un potente lenguaje de expresión, utilizado en toda la cartera de Spring, que permite consultar y manipular un gráfico de objetos en tiempo de ejecución. En el pasado se informó de muchas Vulnerabilidades y Exposiciones Comunes (CVE) de ejecución de código remoto en torno a la inyección de SpEL cuando la aplicación evaluaba expresiones de código de entrada de usuario no fiables de forma insegura. (véase la figura 1).

Fig 1: Parche de código de Spring Cloud Function en GitHub

Unos días más tarde, el 26 de marzo, el usuario de GitHub "cckuailong" publicó una prueba de concepto que mostraba la explotación exitosa de esta vulnerabilidad (véase la figura 2).

Fig. 2: Prueba de concepto publicada

Menos de un día después, Akamai comenzó a observar intentos de explotación en todo Internet.

Fig 3: Intentos de explotación a partir del 27 de marzo (Fuente: Akamai Web Security Analytics de un cliente específico)

Al igual que en el caso de Log4j, muchos (pero no todos) de los intentos actuales son sondas "ping back", en las que los atacantes ordenan a la aplicación que envíe una baliza en caso de que la explotación tenga éxito.

Hemos visto miles de direcciones IP de todo el mundo enviando cargas útiles de ataque, mientras que la mayoría son redes privadas virtuales (VPN) y proxies web alojados en nubes públicas.

Del parche se desprende que se podría recibir una expresión SpEL a través de la cabecera HTTP "spring.cloud.function.routing-expression" para facilitar el enrutamiento de la aplicación.

No se comprobaba en el código si la expresión a evaluar podía recibirse a través de una cabecera. Para solucionar el problema, se ha añadido un headerEvalContext independiente que es un SimpleEvaluationContext.

El Motor de Seguridad Adaptativa de Akamai (ASE) tiene extensas reglas incorporadas para detectar inyecciones de comandos, ya que el objetivo de muchos de estos ataques es ejecutar comandos a nivel del sistema operativo. ASE fue capaz de detectar este día cero con las reglas de inyección de comandos existentes:

Y los conjuntos de reglas de Kona Site Defender también mitigan estos ataques:

3000041 - Inyección de plantillas en el lado del servidor

3000156 - Inyección de CMD detectada (funciones de alto riesgo de PHP)

Aunque las funciones de Spring Cloud no están tan extendidas como la biblioteca Log4j, la facilidad de explotación de esta vulnerabilidad atraerá a muchos actores de amenazas. Anticipamos que esto dará lugar a que muchos de esos actores lancen campañas de minería de criptomonedas, DDoS, ransomware, y como billete de oro para entrar en las organizaciones durante los próximos años. Nuestros clientes  están protegidos con nuestro  motor de seguridad adaptable y los conjuntos de reglas de Kona Site Defender.

Nuestro Equipo de Investigación de Amenazas sigue vigilando la explotación de esta vulnerabilidad y la actualizará a medida que surjan nuevas variantes o si observamos que nuevas bandas cibernéticas añaden esta vulnerabilidad a su arsenal.

Federico Dios, pre-sales senior manager, Akamai Technologies