CVE-2024-36401 OSGeo GeoServer GeoTools Eval Injection
Unauthenticated attackers can execute arbitrary code on GeoServer via crafted OGC requests due to unsafe XPath evaluation in property names.
- Exploited in the wild
- Since 15 Jul 2024
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-36401?
CVE-2024-36401 is a critical code injection vulnerability in geoserver, published on 1 Jul 2024. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
GeoServer is an open source server that allows users to share and edit geospatial data. Prior to versions 2.22.6, 2.23.6, 2.24.4, and 2.25.2, multiple OGC request parameters allow Remote Code Execution (RCE) by unauthenticated users through specially crafted input against a default GeoServer installation due to unsafely evaluating property names as XPath expressions.
The GeoTools library API that GeoServer calls evaluates property/attribute names for feature types in a way that unsafely passes them to the commons-jxpath library which can execute arbitrary code when evaluating XPath expressions. This XPath evaluation is intended to be used only by complex feature types (i.e., Application Schema data stores) but is incorrectly being applied to simple feature types as well which makes this vulnerability apply to **ALL** GeoServer instances. No public PoC is provided but this vulnerability has been confirmed to be exploitable through WFS GetFeature, WFS GetPropertyValue, WMS GetMap, WMS GetFeatureInfo, WMS GetLegendGraphic and WPS Execute requests. This vulnerability can lead to executing arbitrary code.
Versions 2.22.6, 2.23.6, 2.24.4, and 2.25.2 contain a patch for the issue. A workaround exists by removing the `gt-complex-x.y.jar` file from the GeoServer where `x.y` is the GeoTools version (e.g., `gt-complex-31.1.jar` if running GeoServer 2.25.1). This will remove the vulnerable code from GeoServer but may break some GeoServer functionality or prevent GeoServer from deploying if the gt-complex module is needed.
Which versions are affected by CVE-2024-36401?
24 open source packages ship an affected version, including org.geoserver.web:gs-web-app, org.geoserver:gs-wfs and org.geoserver:gs-wms. It affects 2 products.
| Package | Affected | Fixed in |
|---|---|---|
org.geoserver.web:gs-web-app Maven | All versions | 2.22.6 |
org.geoserver.web:gs-web-app Maven | All versions | 2.22.6 |
org.geoserver.web:gs-web-app Maven | From 2.23.0 | 2.23.6 |
org.geoserver.web:gs-web-app Maven | From 2.23.0 | 2.23.6 |
org.geoserver.web:gs-web-app Maven | From 2.24.0 | 2.24.4 |
org.geoserver.web:gs-web-app Maven | From 2.24.0 | 2.24.4 |
18 more packages
org.geoserver.web:gs-web-app Maven | From 2.25.0 | 2.25.2 |
org.geoserver.web:gs-web-app Maven | From 2.25.0 | 2.25.2 |
org.geoserver:gs-wfs Maven | All versions | 2.22.6 |
org.geoserver:gs-wfs Maven | All versions | 2.22.6 |
org.geoserver:gs-wfs Maven | From 2.23.0 | 2.23.6 |
org.geoserver:gs-wfs Maven | From 2.23.0 | 2.23.6 |
org.geoserver:gs-wfs Maven | From 2.24.0 | 2.24.4 |
org.geoserver:gs-wfs Maven | From 2.24.0 | 2.24.4 |
org.geoserver:gs-wfs Maven | From 2.25.0 | 2.25.2 |
org.geoserver:gs-wfs Maven | From 2.25.0 | 2.25.2 |
org.geoserver:gs-wms Maven | All versions | 2.22.6 |
org.geoserver:gs-wms Maven | All versions | 2.22.6 |
org.geoserver:gs-wms Maven | From 2.23.0 | 2.23.6 |
org.geoserver:gs-wms Maven | From 2.23.0 | 2.23.6 |
org.geoserver:gs-wms Maven | From 2.24.0 | 2.24.4 |
org.geoserver:gs-wms Maven | From 2.24.0 | 2.24.4 |
org.geoserver:gs-wms Maven | From 2.25.0 | 2.25.2 |
org.geoserver:gs-wms Maven | From 2.25.0 | 2.25.2 |
Products include Geoserver Geoserver, Geotools Geotools.
How do I fix CVE-2024-36401?
Upgrade org.geoserver.web:gs-web-app to a fixed version for your release line: 2.22.6, 2.23.6, 2.24.4 or 2.25.2. US federal agencies must fix it by 5 Aug 2024.
Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.
Is CVE-2024-36401 being exploited?
Yes. Attackers have exploited CVE-2024-36401 in the wild since at least 15 Jul 2024.
Public exploit code: 1 Metasploit module, 1 Nuclei template and 23 proofs of concept on GitHub.
Other vulnerabilities in geoserver
- CVE-2025-58360 OSGeo GeoServer Improper Restriction of XML External Entity Reference
- CVE-2023-35042 GeoServer RCE due to improper control of generation of code in jai-ext`Jiffle` map algebra language
- CVE-2024-24749 Classpath resource disclosure in GWC Web Resource API on Windows / Tomcat
- CVE-2023-41877 GeoServer log file path traversal vulnerability
- CVE-2023-51444 GeoServer arbitrary file upload vulnerability in REST Coverage Store API
Sources
Also known as GHSA-6jj6-gm7p-fcvv.