Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en el plugin Grails Resource (CVE-2014-3626)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-22 Limitación incorrecta de nombre de ruta a un directorio restringido (Path Traversal)
Fecha de publicación:
19/03/2018
Última modificación:
18/04/2018

Descripción

El plugin Grails Resource suele tener que intercambiar URI por recursos con otros componentes internos. Estos otros componentes descodificarán cualquier URI que se les pase. Para proteger contra salto de directorio, el plugin Grails Resource hizo lo siguiente: normalizó el URI, comprobó que este URI no saltaba fuera del directorio root apropiado (por ejemplo, el root de la aplicación web), descodificó el URI y comprobó que este no introducía secuencias /../ adicionales (y similares). Se introdujo un bug por el cual el plugin Grails Resource, en versiones anteriores a la 1.2.13, devolvía la versión descodificada del URI en lugar de su versión normalizada tras la comprobación de salto de directorio. Esto expuso una vulnerabilidad de doble descodificación. Para abordar este problema, el plugin Grails Resource Plugin ahora descodifica el URI hasta tres veces o hasta que la descodificación no cambie más el URI. Si el límite de descodificaciones de 3 se supera, el URI se rechaza. Un efecto secundario de esto es que el plugin Grails Resource no puede servir un recurso que incluye un carácter "%" en la ruta completa al recurso. No todos los entornos son vulnerables debido a las diferencias en la resolución de URI en diferentes contenedores de servlet. Las aplicaciones desplegadas en Tomcat 8 y Jetty 9 no son vulnerables; sin embargo, las aplicaciones desplegadas en JBoss EAP 6.3 / JBoss AS 7.4 y JBoss AS 7.1 sí lo son (no se han probado otras versiones de JBoss). En ciertos casos, JBoss devuelve URL de protocolo vfs específicas de JBoss de métodos de resolución de URL (ClassLoader.getResources). El protocolo vfs de JBoss soporta la resolución de cualquier archivo del sistema de archivos. Esto hizo que el salto de directorio fuese posible. Podrían haber otros contenedores, aparte de JBoss, en los que esta vulnerabilidad está expuesta.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:grails:resources:*:*:*:*:*:*:*:* 1.2.0 (incluyendo) 1.2.12 (incluyendo)


Referencias a soluciones, herramientas e información