Security Digest · Vulnerability record
CVE-2024-36404: GeoTools Remote Code Execution (RCE) vulnerability in evaluating XPath expressions
GeoTools is an open source Java library that provides tools for geospatial data.
CVSS 9.8 Critical EPSS 76.1% · p99.5
Should you act?
High exploit likelihood
EPSS ranks it in the top 5% of all CVEs for likely exploitation in the next 30 days. This signal is computed from CISA KEV, EPSS and CVSS data; it is not an editorial verdict.
- No confirmed exploitation. It is not in CISA’s KEV catalog and CISA’s SSVC assessment records no known exploitation. That can change quickly after a public write-up; re-check if you are affected.
- EPSS 76.1%, percentile 99.5: FIRST’s model estimates a 76.1% chance of exploitation activity in the next 30 days, higher than 99.5% of all scored CVEs (very high). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes
org.geotools:gt-app-schema(Maven) >= 30.0, < 30.4, fixed in 30.4;org.geotools:gt-complex(Maven) >= 30.0, < 30.4, fixed in 30.4;org.geotools.xsd:gt-xsd-core(Maven) >= 30.0, < 30.4, fixed in 30.4;org.geotools:gt-app-schema(Maven) >= 31.0, < 31.2, fixed in 31.2. Check your lockfile, including transitive dependencies.
What it is
GeoTools is an open source Java library that provides tools for geospatial data. Prior to versions 31.2, 30.4, and 29.6, Remote Code Execution (RCE) is possible if an application uses certain GeoTools functionality to evaluate XPath expressions supplied by user input. Versions 31.2, 30.4, and 29.6 contain a fix for this issue. As a workaround, GeoTools can operate with reduced functionality by removing the gt-complex jar from one's application. As an example of the impact, application schema datastore would not function without the ability to use XPath expressions to query complex content. Alternatively, one may utilize a drop-in replacement GeoTools jar from SourceForge for versions 31.1, 30.3, 30.2, 29.2, 28.2, 27.5, 27.4, 26.7, 26.4, 25.2, and 24.0. These jars are for download only and are not available from maven central, intended to quickly provide a fix to affected applications.
From the GitHub advisory
Summary Remote Code Execution (RCE) is possible if an application uses certain GeoTools functionality to evaluate XPath expressions supplied by user input.
Details The following methods pass XPath expressions to the commons-jxpath library which can execute arbitrary code and would be a security issue if the XPath expressions are provided by user input.
org.geotools.appschema.util.XmlXpathUtilites.getXPathValues(NamespaceSupport, String, Document) org.geotools.appschema.util.XmlXpathUtilites.countXPathNodes(NamespaceSupport, String, Document) org.geotools.appschema.util.XmlXpathUtilites.getSingleXPathValue(NamespaceSupport, String, Document) org.geotools.data.complex.expression.FeaturePropertyAccessorFactory.FeaturePropertyAccessor.get(Object, String, Class ) org.geotools.data.complex.expression.FeaturePropertyAccessorFactory.FeaturePropertyAccessor.set(Object, String, Object, Class) org.geotools.data.complex.expression.MapPropertyAccessorFactory.new PropertyAccessor() {...}.get(Object, String, Class ) org.geotools.xsd.StreamingParser.StreamingParser(Configuration, InputStream, String)
PoC The following inputs to StreamingParser will delay the response by five seconds:
Impact
Weakness type: CWE-95.
Product: org.geotools:gt-app-schema (Maven) · Assigned by: GitHub_M · Published: 2024-07-02
Affected and fixed versions
| Ecosystem | Package | Vulnerable | First fixed |
|---|---|---|---|
| Maven | org.geotools:gt-app-schema | >= 30.0, < 30.4 | 30.4 |
| Maven | org.geotools:gt-complex | >= 30.0, < 30.4 | 30.4 |
| Maven | org.geotools.xsd:gt-xsd-core | >= 30.0, < 30.4 | 30.4 |
| Maven | org.geotools:gt-app-schema | >= 31.0, < 31.2 | 31.2 |
| Maven | org.geotools:gt-complex | >= 31.0, < 31.2 | 31.2 |
| Maven | org.geotools.xsd:gt-xsd-core | >= 31.0, < 31.2 | 31.2 |
| Maven | org.geotools:gt-app-schema | >= 29.0, < 29.6 | 29.6 |
| Maven | org.geotools:gt-complex | >= 29.0, < 29.6 | 29.6 |
| Maven | org.geotools.xsd:gt-xsd-core | >= 29.0, < 29.6 | 29.6 |
| Maven | org.geotools:gt-app-schema | < 28.6 | 28.6 |
| Maven | org.geotools:gt-complex | < 28.6 | 28.6 |
| Maven | org.geotools.xsd:gt-xsd-core | < 28.6 | 28.6 |
| Vendor | Product | Affected versions (per CVE record) |
|---|---|---|
| geotools | geotools | < 29.6, >= 30.0, < 30.4, >= 31.0, < 31.2 |
Severity scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| GitHub_M | 3.1 | 9.8 Critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| GitHub | 3.1 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
- Attack vector: network (remotely reachable)
- Attack complexity: low
- Privileges required: none (no login)
- User interaction: none
- Scope: unchanged
CVSS measures how bad a flaw is if exploited, not how likely exploitation is. Read it next to the exploitation data below.
Exploitation and urgency
- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation none, automatable yes, technical impact total.
- FIRST EPSS (model of 2026-10-21): 76.06% probability of exploitation activity in the next 30 days; percentile 99.5.
Timeline
- — CVE record published by GitHub_M
- — CVE record last updated
- — GitHub-reviewed advisory GHSA-w3pj-wh35-fq8w published (critical)
Sources and references
Original sources first. Version and fix details should always be confirmed against the vendor or project advisory.
Vulnerability records
- GitHub Advisory GHSA-w3pj-wh35-fq8w github.com
- CVE.org record CVE-2024-36404 cve.org
- NVD entry CVE-2024-36404 nvd.nist.gov
Other references from the CVE record and advisory
- github.com github.com
- github.com github.com
- github.com github.com
- github.com github.com
- osgeo-org.atlassian.net osgeo-org.atlassian.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net
- sourceforge.net sourceforge.net