CVE-2026-76904: GeoTools has unauthenticated SQL injection in the jsonArrayContains filter function against PostGIS layers
GeoTools is an open source Java library that provides tools for geospatial data. Starting in version 30.5 and prior to versions 33.6, 34.5, and 33.6, an SQL Injection Vulnerability is present when executing OGC Filters with PostGIS DataStore implementation: `jsonArrayContains` function; Requires PostGIS 12 or greater with a String or JSON field. For PostGIS 12 and greater `jsonArrayContains(<column>, <pointer>, <value>)` function writes `<value>` into generated SQL without escaping. Patches are available in versions 33.6, 34.5, and 33.6. No known workaround is available. To limit scope of SQL Injection the PostGIS connection pool should be configured with limited rights.
Security readout for executives and security teams
Plain-English summary
A flaw in GeoTools can let an unauthenticated attacker manipulate database queries when a service processes specific geospatial filters against qualifying PostGIS layers. Depending on the database account’s permissions, successful exploitation could expose or alter data and disrupt service. Exploitation requires a particular GeoTools, PostGIS, field-type, and filter configuration.
Executive priority
Treat affected, externally reachable services as an immediate remediation priority. Rapidly identify deployments meeting all prerequisites, upgrade them, and reduce database privileges. Services without the required PostGIS DataStore and jsonArrayContains path are not demonstrated vulnerable by the supplied evidence.
Technical view
GeoTools’ PostGIS DataStore generates SQL for OGC jsonArrayContains filters without escaping the value argument. The vulnerable path requires an affected GeoTools version, PostGIS 12 or later, and a String or JSON field. Network-reachable, unauthenticated filter input could compromise database confidentiality, integrity, and availability under the connection account’s privileges.
Likely exposure
Exposure is most likely in applications using GeoTools 30.5–33.5, 34.0–34.4, or 35.0 with the PostGIS DataStore. The vulnerable path additionally requires PostGIS 12 or later, String or JSON fields, and attacker-influenced OGC filters invoking jsonArrayContains. Deployments lacking these conditions are not shown to be affected.
Exploitation context
The supplied record has a 9.8 CVSS score and requires no privileges or user interaction. It reports no CISA KEV listing and provides no evidence of active exploitation. Absence from KEV does not establish that exploitation is impossible.
Researcher notes
The bundle lists affected versions as 35.0, 34.0–34.4, and 30.5–33.5. Its patch sentence repeats 33.6 and omits a 35.x fix while referencing release 35.1. Confirm the exact 35.x remediation through the vendor advisory. No workaround is documented beyond limiting database privileges.
Mitigation direction
Upgrade affected 33.x deployments to 33.6 and 34.x deployments to 34.5.
For GeoTools 35.0, confirm the corrected 35.x release in the vendor advisory because the bundle's patch text is inconsistent.
Configure the PostGIS connection pool with least-privilege database rights to limit injection impact.
Do not rely on a workaround; the supplied advisory states none is known.
Validation and detection
Inventory deployed GeoTools versions, including transitive Java dependencies.
Confirm whether each service uses PostGIS DataStore with PostGIS 12 or later and String or JSON fields.
Trace whether untrusted OGC filters can invoke jsonArrayContains against those layers.
Verify database accounts used by the connection pool have only required permissions.
After upgrading, confirm the deployed artifact version and regression-test legitimate jsonArrayContains filter handling.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-89: Database access and collection lookup
Injection into data stores can inform collection, data access, and exfiltration detection reviews. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references database injection or access, so collection and exfiltration review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
10Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: yesTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.