Clicky

Falla crítica de Apache Struts: se recomienda actualizar de inmediato

Apache Struts

Apache Struts es ampliamente utilizado por empresas de todo el mundo

Una vulnerabilidad crítica de ejecución remota de código (CVE-2018-11776) en Apache Struts, el popular framework de código abierto para desarrollar aplicaciones web basadas en Java, podría permitir a atacantes remotos ejecutar código malicioso en los servidores afectados.

La vulnerabilidad fue descubierta e informada por Man Yue Mo, un investigador de seguridad de Semmle, y la empresa insta a las organizaciones y desarrolladores que usan Struts a actualizar de inmediato sus componentes Struts.

"Las revelaciones previas de vulnerabilidades igualmente críticas han resultado en exploits publicados en un día, poniendo en riesgo la infraestructura crítica y los datos de los clientes", señalaron. (La peligrosa brecha de Equifax se produjo debido a un defecto similar y parches poco estrictos).

Acerca de CVE-2018-11776

La Apache Software Foundation dice que se ven afectadas las versiones Struts 2.3 a 2.3.34 y 2.5 a 2.5.16, y que también pueden verse afectadas las versiones no soportadas del framework.

Tal como lo señalaron los investigadores de Tenable, la vulnerabilidad puede explotarse solo si está establecido en true el indicador alwaysSelectFullNamespace en la configuración de Struts y si el archivo de configuración de la aplicación de Struts contiene una etiqueta ‹action ...› que no especifica el atributo namespace (espacio de nombres) opcional o especifica un espacio de nombres comodín (por ejemplo, "/*").

La Fundación aconseja a los usuarios actualizar tan pronto como sea posible a la versión 2.3.35 o 2.5.17 (fija) de Apache Struts, pero ofrece algunos consejos temporales de mitigación para aquellos que no pueden obtener parches rápidamente: "Verifique que haya configurado (y siempre se olvidó de configurar) el namespace (si corresponde) para todos los resultados definidos en las configuraciones subyacentes. Verifique también que haya establecido (y siempre olvidado) un value o action para todas las etiquetas de url en sus JSP. Ambos son necesarios solo cuando sus configuraciones de acción superior(s) tienen namespace comodín o no".

Sin embargo, la acción preferida es la actualización, ya que incluso si una aplicación no es vulnerable actualmente, un cambio inadvertido en un archivo de configuración de Struts puede hacer que en el futuro la aplicación sea vulnerable.

El riesgo es alto

Apache Struts es ampliamente utilizado por empresas de todo el mundo.

"Las aplicaciones de Struts a menudo se enfrentan a Internet pública, y en la mayoría de los casos un atacante no requiere ningún privilegio existente para una aplicación vulnerable de Struts para lanzar un ataque en su contra. Para empeorar las cosas, es muy fácil para un atacante evaluar si una aplicación es vulnerable, y es probable que las herramientas de escaneo estén disponibles pronto. Tales herramientas permitirán a un actor malicioso identificar rápida y automáticamente aplicaciones vulnerables, explicaron el riesgo los investigadores de Semmle. "Un hacker puede encontrar su camino dentro de minutos, y puede filtrar datos o realizar ataques adicionales desde el sistema comprometido".

Tim Mackey, evangelista de tecnología en Synopsys, señaló que al identificar CVE-2018-11776, el investigador examinó dentro de Struts las vulnerabilidades de ejecución de código remoto anterior para determinar si había un patrón de codificación que las condujera.

"En el caso de CVE-2018-11776, la causa principal fue la falta de validación de entrada en la URL pasada al marco de Struts. A diferencia de CVE-2018-11776, las vulnerabilidades anteriores estaban todas en código dentro de un único área funcional del código de Struts. Esto significaba que los desarrolladores familiarizados con esa área funcional podían identificar y resolver problemas rápidamente sin introducir nuevos comportamientos funcionales. CVE-2018-11776 opera a un nivel mucho más profundo dentro del código que, a su vez, requiere una comprensión más profunda no solo del código Struts en sí, sino también de las diversas bibliotecas utilizadas por Struts. Es este nivel de comprensión lo que más preocupa, y esta preocupación se relaciona con cualquier framework de la biblioteca", explicó.

"La validación de la entrada a una función requiere una definición clara de lo que es aceptable. También requiere que todas las funciones disponibles para uso público documenten cómo usan los datos que se les pasan. A falta del contrato, tales definiciones y el formulario de documentación, es difícil determinar si el código está funcionando correctamente o no. Este contrato se vuelve crítico cuando se envían parches a las bibliotecas ya que no es realista suponer que todos los parches están libres de cambios de comportamiento. El software moderno es cada vez más complejo e identificar cómo deben pasar los datos debería ser una prioridad para todos los equipos de desarrollo de software".

Jesus_Caceres