What is GeoServer / JAI-EXT?
GeoServer is an open-source Java server for sharing, processing, and editing geospatial data, implementing OGC standards (WMS, WFS, WCS, WPS). It is widely used by government agencies, utilities, mapping services, and spatial data infrastructure providers worldwide. JAI-EXT (Java Advanced Imaging Extensions) is a library providing raster image processing operations used by GeoServer. The Jiffle scripting language within JAI-EXT allows users to define custom raster transformation expressions — a powerful feature that became a code injection vector.
Overview
CVE-2022-24816 is a pre-authentication remote code execution vulnerability (CWE-94) in the JAI-EXT library's Jiffle scripting engine, affecting GeoServer and any application using jt-jiffle. When Jiffle scripts can be supplied via network request (as they can in GeoServer's WCS/WPS processing), an attacker can inject a malicious Jiffle script that compiles to arbitrary Java code executed on the server. CVSS 10.0. The vulnerability was patched in April 2022 but CISA did not add it to KEV until June 2024, coinciding with the related GeoServer RCE wave (CVE-2024-36401).
Affected Versions
| Component | Vulnerable | Fixed |
|---|---|---|
| JAI-EXT (jt-jiffle) | Before 1.1.22 | 1.1.22 |
| GeoServer | Versions using JAI-EXT before 1.1.22 | GeoServer 2.21.x, 2.20.x (with updated JAI-EXT) |
Technical Details
Jiffle is a domain-specific language for raster image processing (similar to map algebra), designed to express pixel-by-pixel transformations. The Jiffle compiler translates Jiffle scripts into Java bytecode that is executed via the JVM.
The code injection vulnerability arises because the Jiffle compiler generates Java source code from the script and compiles it at runtime, but fails to sanitize the script content before compilation. An attacker can inject Java code into the Jiffle script that will be included verbatim in the generated Java class:
// Inject Java code into the compiled raster function
init { Runtime.getRuntime().exec("id"); }
result = x();
The compiled Java class executes in the JVM with the privileges of the GeoServer process.
In GeoServer, Jiffle scripts can be provided via:
- WCS (Web Coverage Service)
GetCoveragerequests withras:Jiffleprocess - WPS (Web Processing Service) requests invoking the Jiffle process
- Map styling using rendering transformations
All of these entry points are typically available without authentication on public GeoServer instances.
Discovery
Disclosed via GitHub Security Advisory for the JAI-EXT project. The vulnerability became more widely known in 2024 when active exploitation of GeoServer RCE vulnerabilities (including CVE-2024-36401, a related but distinct issue) prompted CISA to add this older CVE to the KEV catalog.
Exploitation Context
GeoServer instances hosting public mapping services are often internet-accessible without authentication for OGC protocol requests. Government GIS portals, utility mapping systems, and spatial data infrastructure deployments commonly use GeoServer.
The 2+ year delay between patch and KEV addition reflects a pattern where geospatial platform vulnerabilities receive less immediate attention than enterprise software, even when technically severe. The concurrent exploitation of GeoServer CVEs in 2024 prompted a catch-up review.
Remediation
- Update JAI-EXT to 1.1.22 or later: This is the primary fix. GeoServer users should update their JAI-EXT dependency and redeploy.
- Update GeoServer: Update to a GeoServer version that includes the patched JAI-EXT library. Check GeoServer release notes for the bundled JAI-EXT version.
- Disable Jiffle processing if unused: If your GeoServer deployment does not use Jiffle-based rendering transformations or WPS processes, disable or restrict the Jiffle process in GeoServer's WPS configuration.
- Restrict WPS/WCS access: Require authentication for WPS and WCS endpoints if they do not need to be publicly accessible.
- Review for exploitation: Check GeoServer access logs for unusual WCS or WPS requests containing
ras:Jiffle,Jiffle, orjiffleparameters.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2022-24816 |
| Vendor / Product | OSGeo — JAI-EXT |
| NVD Published | 2022-04-13 |
| NVD Last Modified | 2025-10-24 |
| CVSS 3.1 Score | 10 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Severity | CRITICAL |
| CWE | CWE-94 find similar ↗ |
| CISA KEV Added | 2024-06-26 |
| CISA KEV Deadline | 2024-07-17 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2022-04-13 | CVE published; JAI-EXT 1.1.22 released with fix |
| 2024-06-26 | Added to CISA Known Exploited Vulnerabilities catalog (2+ years after patch) |
| 2024-07-17 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD — CVE-2022-24816 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| GitHub Security Advisory GHSA-v92f-jx6p-73rx — JAI-EXT | Vendor Advisory |
| JAI-EXT 1.1.22 Release | Vendor Advisory |