Vulnerabilidad en GeoServer (CVE-2024-36401)
Severidad:
CRÍTICA
Type:
CWE-94
Control incorrecto de generación de código (Inyección de código)
Fecha de publicación:
01/07/2024
Última modificación:
16/07/2024
Descripción
GeoServer es un servidor de código abierto que permite a los usuarios compartir y editar datos geoespaciales. Antes de las versiones 2.23.6, 2.24.4 y 2.25.2, varios parámetros de solicitud de OGC permitían la ejecución remota de código (RCE) por parte de usuarios no autenticados a través de entradas especialmente diseñadas en una instalación predeterminada de GeoServer debido a la evaluación insegura de nombres de propiedades como expresiones XPath. La API de la librería GeoTools a la que llama GeoServer evalúa los nombres de propiedades/atributos para tipos de entidades de una manera que los pasa de manera insegura a la librería commons-jxpath, que puede ejecutar código arbitrario al evaluar expresiones XPath. Esta evaluación XPath está destinada a ser utilizada únicamente por tipos de funciones complejas (es decir, almacenes de datos de esquemas de aplicación), pero también se aplica incorrectamente a tipos de funciones simples, lo que hace que esta vulnerabilidad se aplique a **TODAS** las instancias de GeoServer. No se proporciona ninguna PoC pública, pero se ha confirmado que esta vulnerabilidad es explotable a través de solicitudes WFS GetFeature, WFS GetPropertyValue, WMS GetMap, WMS GetFeatureInfo, WMS GetLegendGraphic y WPS Execute. Esta vulnerabilidad puede llevar a la ejecución de código arbitrario. Las versiones 2.23.6, 2.24.4 y 2.25.2 contienen un parche para el problema. Existe una workaround eliminando el archivo `gt-complex-xyjar` del GeoServer donde `xy` es la versión de GeoTools (por ejemplo, `gt-complex-31.1.jar` si ejecuta GeoServer 2.25.1). Esto eliminará el código vulnerable de GeoServer, pero puede interrumpir algunas funciones de GeoServer o evitar que GeoServer se implemente si se necesita el módulo gt-complex.
Impacto
Puntuación base 3.x
9.80
Severidad 3.x
CRÍTICA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:geoserver:geoserver:*:*:*:*:*:*:*:* | 2.23.6 (excluyendo) | |
cpe:2.3:a:geoserver:geoserver:*:*:*:*:*:*:*:* | 2.24.0 (incluyendo) | 2.24.4 (excluyendo) |
cpe:2.3:a:geoserver:geoserver:*:*:*:*:*:*:*:* | 2.25.0 (incluyendo) | 2.25.2 (excluyendo) |
cpe:2.3:a:geotools:geotools:*:*:*:*:*:*:*:* | 29.6 (excluyendo) | |
cpe:2.3:a:geotools:geotools:*:*:*:*:*:*:*:* | 30.0 (incluyendo) | 30.4 (excluyendo) |
cpe:2.3:a:geotools:geotools:*:*:*:*:*:*:*:* | 31.0 (incluyendo) | 31.2 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página
Referencias a soluciones, herramientas e información
- https://github.com/Warxim/CVE-2022-41852?tab=readme-ov-file#workaround-for-cve-2022-41852
- https://github.com/geoserver/geoserver/security/advisories/GHSA-6jj6-gm7p-fcvv
- https://github.com/geotools/geotools/pull/4797
- https://github.com/geotools/geotools/security/advisories/GHSA-w3pj-wh35-fq8w
- https://osgeo-org.atlassian.net/browse/GEOT-7587