Blog de Akamai | Inyección de Spring Cloud Function SpEL (CVE-2022-22963) explotada libremente
Descripción general
El 24 de marzo de 2022, Pivotal creó un parche para una vulnerabilidad de inyección de código crítica en el servidor (inyección de Spring Expression Language) en Spring Cloud Function, cuyos efectos podrían poner en riesgo el sistema. Spring es el popular marco de Java de código abierto. Esta vulnerabilidad, junto con otra vulnerabilidad de ejecución remota de código (RCE) descubierta (Spring Core o "Spring4Shell") se mitigan con los conjuntos de reglas de Akamai Adaptive Security Engine (ASE) Kona Site Defender (KSD). Esta publicación se centra en las vulnerabilidades de Spring Cloud, pero puede leer acerca de la vulnerabilidad de Spring Core aquí.
La función Spring Cloud es una tecnología que permite desvincular la lógica empresarial de cualquier tiempo de ejecución específico. Spring Expression Language (SpEL) es un potente lenguaje de expresiones que se utiliza en toda la cartera de Spring, y que permite consultar y manipular un gráfico orientado a objetos durante el tiempo de ejecución. En el pasado, se informó de múltiples vulnerabilidades y exposiciones comunes (CVE) de ejecución remota de código en relación con la inyección de SpEL cuando la aplicación evaluó expresiones de código de entrada de usuario no de confianza de una manera no segura (véase la Figura 1).
Fig. 1: El parche al código de Spring Cloud Function en GitHub
Unos días después, el 26 de marzo, el usuario de GitHub "cckuailong" publicó un ataque de prueba de concepto que muestra una explotación satisfactoria de esta vulnerabilidad (véase la Figura 2).
Fig. 2: Un ataque de prueba de concepto publicado
Menos de un día más tarde, Akamai comenzó a observar intentos de explotación en Internet.
Fig. 3: Intentos de explotación a partir del 27 de marzo (fuente: Akamai Web Security Analytics de un cliente específico)
Como con Log4j, muchos (aunque no todos) de los intentos actuales son análisis de "ping back". Esto quiere decir que los atacantes ordenan a la aplicación enviar una baliza en caso de que la explotación sea satisfactoria.
Hemos observado miles de direcciones IP de todo el mundo enviar carga de ataque, si bien la mayoría son redes privadas virtuales (VPN) y proxies web alojados en nubes públicas.
La vulnerabilidad
Desde el parche, se puede ver que una expresión SpEL se puede recibir a través del encabezado HTTP "spring.cloud.function.routing-expression" para facilitar el enrutamiento de aplicaciones.
El código no incluía una verificación de si la expresión objeto de evaluación se podía recibir por medio de un encabezado. Para corregir el problema, se agregó un headerEvalContext independiente que es un SimpleEvaluationContext.
Mitigación con motor de seguridad adaptable KSD
Akamai Adaptive Security Engine (ASE) cuenta con amplias reglas integradas para detectar inyecciones de comandos, ya que el objetivo de muchos de estos ataques es ejecutar comandos a nivel del SO. ASE pudo detectar este día cero con reglas de inyección de comandos existentes:
Además, los conjuntos de reglas de Kona Site Defender también mitigan estos ataques:
3000041 - Inyección de plantillas del lado del servidor
3000156 - Detección de inyección de CMD (funciones PHP de alto riesgo)
Resumen
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 atacantes. Anticipamos que esto dará lugar a que muchos de esos cibercriminales lancen campañas de criptominería, DDoS y ransomware como vía para traspasar las defensas de las organizaciones en los próximos años. Sin embargo, los clientes de Akamai están protegidos Akamai Adaptive Security Engine y los conjuntos de reglas de Kona Site Defender.
El equipo de investigación de amenazas de Akamai continúa supervisando el aprovechamiento de esta vulnerabilidad e informará de las novedades a medida que surjan nuevas variantes o si observamos a nuevos grupos de cibercriminales agregar esta vulnerabilidad a su arsenal.