### Summary
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.
### Details
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.
### PoC
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.
### Impact
This vulnerability can lead to executing arbitrary code.
### Workaround
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 by an extension you are using:
Mitigation for `geoserver.war` deploy:
1. Stop the application server
2. Unzip `geoserver.war` into a directory
3. Locate the file `WEB-INF/lib/gt-complex-x.y.jar` and remove
4. Zip the directory into a new `geoserver.war`
5. Restart the application server
Mitigation for GeoServer binary:
1. Stop Jetty
2. Locate the file `webapps/geoserver/WEB-INF/lib/gt-complex-x.y.jar` and remove
3. Restart Jetty
The following extensions and community modules are known to have a direct dependency on `gt-complex` jar and are not expected function properly without it. This is not comprehensive list and additional GeoServer functionality may be dependent on the availability of `gt-complex` jar:
* Extensions: Application Schema, Catalog Services for the Web, MongoDB Data Store
* Community Modules: Features-Templating, OGC API Modules, Smart Data Loader, SOLR Data Store
Patch available for prior releases:
1. Patched `gt-app-schema`, `gt-complex` and `gt-xsd-core` jars may be downloaded from the release page for GeoServer: 2.25.1, 2.24.3, 2.24.2, 2.23.2, 2.21.5, 2.20.7, 2.20.4, 2.19.2, 2.18.0.
2. To use follow the instructions above to locate `WEB-INF/lib` folder
3. Replace `gt-app-schema`, `gt-complex` and `gt-xsd-core` jars with those supplied by the patch
### References
[GHSA-w3pj-wh35-fq8w](https://github.com/geotools/geotools/security/advisories/GHSA-w3pj-wh35-fq8w "GHSA-w3pj-wh35-fq8w")
[https://osgeo-org.atlassian.net/browse/GEOT-7587](https://osgeo-org.atlassian.net/browse/GEOT-7587)
[geotools/geotools#4797](https://github.com/geotools/geotools/pull/4797)
[https://github.com/Warxim/CVE-2022-41852?tab=readme-ov-file#workaround-for-cve-2022-41852](https://github.com/Warxim/CVE-2022-41852?tab=readme-ov-file#workaround-for-cve-2022-41852)
All Comments (1)