Apache ha confirmado
una vulnerabilidad en el proyecto Apache Struts que podría permitir a un
atacante remoto ejecutar código arbitrario.
Struts es un entorno
de trabajo de código abierto para el desarrollo de aplicaciones web en Java EE
bajo el patrón MVC (Modelo Vista Controlador). Desarrollado por la Apache
Software Foundation, en un primer momento formaba parte del proyecto Jakarta,
convirtiéndose en proyecto independiente en 2005.
La vulnerabilidad,
considerada de gravedad crítica (con CVE-2018-11776), se debe a una validación
insuficiente de los datos introducidos por el usuario. Esta vulnerabilidad
reside en el core del framework y existen varios vectores de ataque:
Cuando se utilizan
resultados que no especifican un espacio de nombres (ni el el fichero de
configuración de Struts ni en el propio código Java)
Cuando se utiliza la
etiqueta 'url' en una plantilla sin especificar una acción y un valor.
A través de estos
vectores un atacante remoto podría inyectar un espacio de nombres arbitrario
pasándolo como parámetro en una petición HTTP.
Para que el ataque se
haga efectivo, se tienen que cumplir dos condiciones:
El parámetro
'alwaysSelectFullNamespace' debe estar a 'true' en la configuración de Struts.
El fichero de
configuración de Struts contiene una etiqueta '' que no
especifica ningún espacio de nombres.
La forma más sencilla
para evitar las vulnerabilidades es actualizar a Apache Struts versiones 2.3.35
o 2.5.17; disponibles desde: http://struts.apache.org/download.html#struts-ga
Más información:
·
S2-057
- Apache Struts https://cwiki.apache.org/confluence/display/WW/S2-057
·
Semmle
Discovers Critical Remote Code Execution Vulnerability in Apache Struts https://semmle.com/news/apache-struts-CVE-2018-11776
Fuente: Hispasec