Intentos de explotación observados de la vulnerabilidad Struts 2 S2-066 (CVE-2023-50164)
Introducción
Apache Struts es un potente marco de aplicaciones web de código abierto utilizado por empresas y organizaciones de todo el mundo. Apache Struts ha sido un objetivo principal de los hackers debido a su popularidad. Cuando se anuncia una vulnerabilidad crítica de ejecución remota de código (RCE), los equipos de seguridad y de TI deben adoptar medidas inmediatas para proteger sus sistemas.
El 7 de diciembre de 2023 se publicó CVE-2023-50164. Esta vulnerabilidad permite a un atacante manipular los parámetros de carga de archivos para habilitar el cruce de rutas y cargar un archivo malicioso. Esto puede hacer que el atacante obtenga el control completo del sistema.
El 11 de diciembre se publicaron y difundieron ampliamente las primeras explotaciones de prueba de concepto (PoC). Los intentos de explotación siguieron poco después, el 12 de diciembre (Figura 1).
Acerca de la CVE
CVE-2023-50164 representa una vulnerabilidad crítica descubierta en Apache Struts 2, que es un marco de código abierto que se utiliza ampliamente para desarrollar y crear aplicaciones web Java EE. Apache Struts, conocido por su solidez y flexibilidad, desempeña un papel importante en la arquitectura de numerosos proyectos web comerciales y de código abierto. Esto hace que la vulnerabilidad sea motivo de preocupación importante en varios sectores, incluyendo sectores clave como el financiero, el sanitario y los servicios gubernamentales.
El problema principal de CVE-2023-50164 reside en su potencial de ejecución remota de código (RCE) a través de un defecto de cruce de rutas. En concreto, explota la forma en que el marco de Apache Struts gestiona las cargas de archivos. Al manipular los parámetros de carga de archivos, un atacante puede atravesar eficazmente la estructura de directorios del servidor web sin autorización.
Este cruce permite la colocación de archivos maliciosos, normalmente shells web basados en Java Server Page (JSP), en directorios o ubicaciones que originalmente no están diseñados ni son accesibles para el contenido de archivos cargados por el usuario. La explotación depende de la capacidad de eludir los mecanismos de seguridad del servidor de una forma que no habían previsto los desarrolladores de aplicaciones.
El proceso de ataque
El proceso de ataque es el siguiente:
1. El atacante realiza primero el reconocimiento e identifica un sitio web o una aplicación web que utiliza una versión vulnerable de Apache Struts y la ruta de URL de carga de archivos.
2. El atacante prepara un archivo malicioso, normalmente un archivo JSP o un shell web.
3. A continuación, el atacante crea una solicitud especial para cargar el archivo. Esta solicitud incluye datos manipulados, como el nombre y la ruta del archivo, manipulando así los parámetros de carga del archivo.
4. En la solicitud de carga que se menciona en el paso 3, el atacante incluye comandos del sistema que explotan la vulnerabilidad de cruce de rutas. Estos comandos indican al servidor que coloque el archivo fuera del directorio de carga normal. Esta es la etapa de cruce de rutas.
5. El atacante envía la solicitud de carga al servidor que ejecuta las versiones vulnerables de Apache Struts. Si se realiza correctamente, el servidor guarda el archivo malicioso o el shell web en una ubicación o directorio donde se pueda ejecutar.
6. A continuación, el atacante accede al archivo malicioso cargado mediante un navegador web o un script automatizado. El acceso a este archivo activa la ejecución del código malicioso o del shell web en el servidor web.
7. Una vez ejecutado el código en el paso 6, el atacante puede realizar acciones adicionales en el servidor. Estas pueden ser desde el robo de datos confidenciales, pasando por la modificación del contenido del sitio web, hasta la toma del control total del servidor web.
8. En función de las intenciones o las motivaciones del atacante, es posible que mantenga un acceso encubierto para futuras explotaciones o que utilice el servidor comprometido para lanzar más ataques.
Las implicaciones
Las implicaciones de la vulnerabilidad CVE-2023-50164 son de amplio alcance. Las vulnerabilidades de RCE se encuentran entre las amenazas más graves y críticas de las aplicaciones web, ya que permiten a los atacantes ejecutar comandos arbitrarios en un servidor afectado. Esto podría provocar un acceso no autorizado, el robo de datos y, potencialmente, el riesgo de comprometer todo el sistema.
La integración generalizada de Apache Struts amplifica estos riesgos, lo que convierte a CVE-2023-50164 en un problema de alta prioridad para organizaciones de todo el mundo.
Intentos de explotación observados
El 12 de diciembre, un día después de que la explotación de PoC estuviera disponible de forma generalizada,, comenzamos a ver intentos de explotación similares la explotación de PoC publicada (Figura 2). Aunque estos intentos de ataque son reales, no es probable que tengan éxito. Para que el ataque tenga éxito, el terminal objetivo debe poseer la funcionalidad de carga de archivos.
Además del análisis de PoC previsto, hemos comenzado a ver solicitudes que intentan explotar esta vulnerabilidad que no coinciden con la PoC publicada. Esta variante está dirigida a la ruta /s2/upload.action en lugar de la original /login.action (Figura 2). Curiosamente, el nombre del parámetro "fileFileName" se está utilizando para incluir el cruce de rutas que difiere del original "uploadFileName".
No está claro si estos terminales tienen funcionalidad de carga de archivos. Estamos observando los mismos intentos de explotación de la variante 2 por parte de un grupo de IP dirigidas a muchos clientes diferentes.
El grupo de inteligencia sobre seguridad de Akamai continuará analizando los registros de nuestro firewall de aplicaciones web (WAF) en busca de nuevas variantes y actualizará esta sección del blog con cualquier novedad.
Mitigación con App & API Protector
Los clientes que utilizan Adaptive Security Engine de Akamai en modo automático y tienen el grupo de ataque de plataforma web en el modo de denegación se protegen automáticamente frente a estos ataques. Los clientes que utilizan Adaptive Security Engine en modo manual deben validar que tienen el grupo de ataque de plataforma web o la siguiente regla individual en el modo de denegación (Figura 4):
3000929- Apache Struts Path Traversal and File Upload Attack Detected (CVE-2023-50164)
Resumen
Akamai App & API Protector ha mitigado con éxito estos intentos de ataque contra nuestros clientes de seguridad. Además, no hemos podido determinar de forma concluyente si los terminales objetivo poseen realmente la funcionalidad de carga de archivos; por lo tanto, no hemos observado ninguna acción posterior a la explotación que los atacantes puedan llevar a cabo tras un ataque con éxito.
Aunque la defensa más eficaz es actualizar rápidamente el código fuente, reconocemos el inmenso esfuerzo que requieren los equipos de seguridad para identificar y actualizar rápidamente los componentes vulnerables. Este desafío se ve agravado por el creciente número de aplicaciones y la naturaleza dinámica de estos entornos.
El dicho de que "la seguridad reside en las capas" puede parecer un cliché, pero es crucial considerar métodos complementarios adicionales para mejorar la seguridad general. Los atacantes se están adaptando rápidamente a las nuevas PoC públicas, a menudo en menos de 24 horas, lo que aumenta significativamente el desafío para los defensores.
La implementación de un firewall de aplicaciones web (WAF), como Akamai App & API Protector, puede servir como una capa de defensa adicional que puede proteger contra las CVE recién descubiertas y proporcionar un búfer de seguridad complementario.