CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →

GeoServer

product · product:geoserver single-source

Coverage
2
first 2026-08-15 → last 2026-09-29
Latest activity
2026-09-29
GeoServer zero-day exploited within hours of disclosure; fixed in 3.0.1, 2.28.5 and 2.27.6, and now tracked…
Peak priority
high
1 high · 1 notable
Targets
public-sector
sectors: public-sector, transport, energy · regions: europe, switzerland
Sources cited
9
9 hosts

Action items (2)

Do-now tasks recorded on the entries about GeoServer, newest first. Check the date before acting on an older one.

  • Upgrade every GeoServer instance backed by a PostGIS data store to 3.0.1, 2.28.5 or 2.27.6 (GeoTools 35.1 / 34.5 / 33.6, CVE-2026-76904), and keep any instance that cannot be upgraded this week off the public internet or behind authenticated access, do not substitute a configuration change, because preferQueryMode=extended is not a mitigation and the vendor advisory offers none. Include Oracle JDBC and H2-backed deployments in the inventory, which NCSC-CH and Field Effect name alongside PostGIS.
    2026-08-15CVE-2026-76904
  • For any instance that was internet-reachable and unpatched between 12 and 14 August, review the PostgreSQL role GeoServer connects as: if it held superuser or pg_execute_server_program, treat the database host as in scope for a compromise assessment rather than only upgrading.
    2026-08-15CVE-2026-76904

Defender insights

What each entry about GeoServer tells a defender to do, newest first.

2026-08-15HIGHexploitedGeoServer zero-day exploited within hours of disclosure; fixed in 3.0.1, 2.28.5 and 2.27.6, and now tracked as CVE-2026-76904

Latest update · triage

2026-09-07NOTABLEInsikt Group: the same six-tool stack followed thirteen unrelated CVEs into Exchange, SharePoint, FortiOS, Cisco IOS XE, F5 BIG-IP, GeoServer and Apache Shiro

Story timeline

  1. 2026-09-07Recorded Future's H1 2026 Malware and Vulnerability Trends: two clusters reuse an identical post-exploitation tool stack across thirteen and ten unrelated initial CVEs
    researchInsikt Group: the same six-tool stack followed thirteen unrelated CVEs into Exchange, SharePoint, FortiOS, Cisco IOS XE, F5 BIG-IP, GeoServer and Apache Shiro
  2. 2026-08-15GeoServer CVE-2026-76904: an unauthenticated SQL injection in the jsonArrayContains filter was exploited within hours of disclosure, before a patch existed, and NCSC-CH put it in front of Swiss operators
    trending-vulnerabilitiesGeoServer zero-day exploited within hours of disclosure; fixed in 3.0.1, 2.28.5 and 2.27.6, and now tracked as CVE-2026-76904
ATT&CK techniques (10 across 7 tactics)

10 techniques observed across 2 entries about this entity, derived from entry metadata and body evidence, never asserted without a published entry behind it · pinned to MITRE ATT&CK v20.0 · compare on the matrix · Navigator layer (JSON)

  • Initial AccessExploit Public-Facing Application
  • ExecutionCommand and Scripting Interpreter: PowerShell · Command and Scripting Interpreter: Windows Command Shell · Command and Scripting Interpreter: Unix Shell
  • PersistenceServer Software Component: Web Shell
  • DiscoverySystem Information Discovery
  • CollectionData from Local System
  • Command and ControlApplication Layer Protocol: Web Protocols · Ingress Tool Transfer
  • ExfiltrationExfiltration Over C2 Channel

Initial Access TA0001

T1190Exploit Public-Facing Application×2

Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network. The weakness in the system can be a software bug, a temporary glitch, or a misconfiguration.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · 2026-08-15/geoserver-jsonarraycontains-unauth-sqli-zeroday-exploited · ATT&CK page ↗

Execution TA0002

T1059.001Command and Scripting Interpreter: PowerShell×1

Adversaries may abuse PowerShell commands and scripts for execution. PowerShell is a powerful interactive command-line interface and scripting environment included in the Windows operating system. PowerShell can also be installed on Linux and macOS. Adversaries can use PowerShell to perform a number of actions, including discovery of information and execution of code. Examples include the <code>Start-Process</code> cmdlet which can be used to run an executable and the <code>Invoke-Command</code> cmdlet which runs a command locally or on a remote computer (though administrator permissions are required to use PowerShell to connect to remote systems).

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

T1059.003Command and Scripting Interpreter: Windows Command Shell×1

Adversaries may abuse the Windows command shell for execution. The Windows command shell (cmd) is the primary command prompt on Windows systems. The Windows command prompt can be used to control almost any aspect of a system, with various permission levels required for different subsets of commands. The command prompt can be invoked remotely via Remote Services such as SSH.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

T1059.004Command and Scripting Interpreter: Unix Shell×2

Adversaries may abuse Unix shell commands and scripts for execution. Unix shells are the primary command prompt on Linux, macOS, and ESXi systems, though many variations of the Unix shell exist (e.g. sh, ash, bash, zsh, etc.) depending on the specific OS or distribution. Unix shells can control every aspect of a system, with certain commands requiring elevated privileges.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · 2026-08-15/geoserver-jsonarraycontains-unauth-sqli-zeroday-exploited · ATT&CK page ↗

Persistence TA0003

T1505.003Server Software Component: Web Shell×1

Adversaries may backdoor web servers with web shells to establish persistent access to systems. A Web shell is a Web script that is placed on an openly accessible Web server to allow an adversary to access the Web server as a gateway into a network. A Web shell may provide a set of functions to execute or a command-line interface on the system that hosts the Web server.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

Discovery TA0007

T1082System Information Discovery×1

An adversary may attempt to get detailed information about the operating system and hardware, including version, patches, hotfixes, service packs, and architecture. Adversaries may use this information to shape follow-on behaviors, including whether or not the adversary fully infects the target and/or attempts specific actions. This behavior is distinct from Local Storage Discovery which is an adversary's discovery of local drive, disks and/or volumes.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

Collection TA0009

T1005Data from Local System×1

Adversaries may search local system sources, such as file systems, configuration files, local databases, virtual machine files, or process memory, to find files of interest and sensitive data prior to Exfiltration.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

Command and Control TA0011

T1071.001Application Layer Protocol: Web Protocols×1

Adversaries may communicate using application layer protocols associated with web traffic to avoid detection/network filtering by blending in with existing traffic. Commands to the remote system, and often the results of those commands, will be embedded within the protocol traffic between the client and server.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

T1105Ingress Tool Transfer×1

Adversaries may transfer tools or other files from an external system into a compromised environment. Tools or files may be copied from an external adversary-controlled system to the victim network through the command and control channel or through alternate protocols such as ftp. Once present, adversaries may also transfer/spread tools between victim devices within a compromised environment (i.e. Lateral Tool Transfer).

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

Exfiltration TA0010

T1041Exfiltration Over C2 Channel×1

Adversaries may steal data by exfiltrating it over an existing command and control channel. Stolen data is encoded into the normal communications channel using the same protocol as command and control communications.

Evidence: 2026-09-07/recordedfuture-h1-2026-tool-stack-reuse · ATT&CK page ↗

Entries about GeoServer (2)

2026-08-15 · view entry permalink →

HIGHCVE-2026-76904exploitedupdatedNATOB2

GeoServer CVE-2026-76904: an unauthenticated SQL injection in the jsonArrayContains filter was exploited within hours of disclosure, before a patch existed, and NCSC-CH put it in front of Swiss operators

A security researcher publicly disclosed an unauthenticated SQL-injection flaw in GeoServer on 2026-08-12, and attackers began probing for it the same day. The defect sits in jsonArrayContains, an OGC filter expression used to test whether a JSON array field contains a given value; user-supplied filter arguments reach the backend database query without adequate sanitisation, letting an unauthenticated caller alter the query's logic. The reporting states the function can be used with PostGIS and Oracle JDBC data stores (SecurityWeek, 2026-08-14), and Switzerland's NCSC records the prerequisite as "Network access to an exposed GeoServer instance configured with PostGIS or Oracle JDBC data stores" (NCSC-CH, 2026-08-14). watchTowr's Jake Knott told SecurityWeek the firm began seeing exploitation attempts within hours of disclosure and has since recorded hundreds of them from a small number of source addresses (SecurityWeek, 2026-08-14); Field Effect separately published on early exploitation attempts against the flaw on 2026-08-13, and states the observed activity consisted primarily of scanning and probing for vulnerable systems with no confirmed compromises described in public reporting as of that date (Field Effect, 2026-08-13). Knott puts it the same way to The Hacker News: attackers are probing to identify vulnerable systems, triggering errors and not proceeding further (The Hacker News, 2026-08-13). That distinction mattered for triage: at disclosure this was mass reconnaissance against an exposure with no patch, not yet a wave of confirmed intrusions.

At disclosure it had neither an identifier nor a fix. With no CVE, a purely CVE-driven patch process, scanner feed or SBOM pipeline could not surface it, the same blind spot the Metabase zero-day had shown six days earlier. And NCSC-CH's advisory stated plainly that no patch was available, telling operators to identify exposed instances, restrict public access and monitor for exploitation (NCSC-CH, 2026-08-14). The fix followed on 14 August and the identifier, CVE-2026-76904, later (both set out in the updates below). Escalation beyond data theft depends on the database account's privilege: The Hacker News quotes Knott saying the flaw could ultimately lead to remote code execution, and reports the researcher's claim that an administrator-level database account makes code execution achievable (The Hacker News, 2026-08-13). Knott also notes GeoServer's history of being targeted at scale, with multiple GeoServer flaws already in CISA's Known Exploited Vulnerabilities catalog (SecurityWeek, 2026-08-14).

The relevance to this constituency is the deployment pattern rather than a named victim: GeoServer is a standard component of government geoportals and INSPIRE-directive spatial-data infrastructure (cantonal and municipal GIS, land-registry and environmental-agency mapping services) and SecurityWeek notes it is used across government, agriculture, telecoms and transit (SecurityWeek, 2026-08-14). No Swiss or EU victim has been named publicly. Detection concepts, telemetry class first: in web-access telemetry for the GeoServer front end and any reverse proxy ahead of it, surface requests whose OGC Filter or CQL expressions carry jsonArrayContains arguments containing SQL metacharacters, quote characters or stacked-query syntax rather than well-formed JSON values; in database telemetry, watch for query-syntax errors and unexpected statement shapes issued under the GeoServer service account, since early probing tends to surface as malformed queries before it succeeds; in process-execution telemetry with parent lineage, any child process spawned by the Java servlet container hosting GeoServer is a strong post-exploitation signal, because GeoServer has no legitimate reason to spawn one.

Triage: legitimate GIS clients construct jsonArrayContains filters routinely, so the presence of the function in a request is not the signal. The discriminators are the argument's shape (quote characters, SQL keywords or stacked statements where a JSON value belongs) and the pairing of such a request with a database error or an anomalous query from the GeoServer service account moments later.

Within hours of public disclosure, we began observing exploitation attempts and have since recorded hundreds of attempts originating from a small number of source IP addresses.

watchTowr's Jake Knott, via SecurityWeek

Successful exploitation could allow attackers to achieve remote code execution on affected GeoServer instances via improperly sanitized user-supplied input.

No patch is currently available; organizations should monitor for a vendor fix.

NCSC Switzerland, Cyber Security Hub 2026-08-14

This release addresses security vulnerabilities and is an urgent update for production systems.

requires a Text or JSON column; affects PostGIS 12 and up

GeoServer project 2026-08-14

Actively Exploited, Proof of Concept Available

NCSC Switzerland, Cyber Security Hub 2026-08-14

The value comes directly from the CQL filter, which comes directly from the HTTP request. It is dropped into a SQL string literal with no escaping.

WFS 1.0 provides a path where a stacked PostgreSQL statement executes at the top level of the query.

Exploitation does not require preferQueryMode=simple on the JDBC connection. Default pgJDBC configuration is sufficient.

A restricted PostgreSQL account reduces the impact. It does not remove the injection.

Hadrian 2026-08-14
Updaterun 2026-08-18T0410Z-intelactionsaffected_productsevidencesourcestagstechniquesbody

The flaw, exploited with no vendor fix when first reported here and with exposure reduction the only advice available, has been patched, and the patch arrived with enough published detail to change how an operator scopes the exposure. GeoServer released 3.0.1, 2.28.5 and 2.27.6 on 2026-08-14, each bundling the corresponding GeoTools fix, and the project calls the release "an urgent update for production systems" (GeoServer project, 2026-08-14). Switzerland's NCSC appended the fixed versions to its own advisory on 2026-08-17, while still recording the exploitation status as "Actively Exploited, Proof of Concept Available" (NCSC-CH, 2026-08-17). The advisory is tracked as GHSA-mqjf-5f49-2fjh; GeoTools then scoped the affected package to org.geotools:gt-jdbc-postgis versions 35.0, ≥34.0 and ≥33.1, fixed in 35.1, 34.5 and 33.6 (the advisory header now lists 35.0, ≥34.0, ≥30.5 <31.0, ≥31.3 and ≥32.0 as affected) (GeoTools, 2026-08-15). No CVE identifier existed yet at that point, which kept it invisible to a purely CVE-driven patch process until CVE-2026-76904 was assigned.

The mechanism, now public. GeoServer hands CQL-to-SQL translation to GeoTools, and the jsonArrayContains filter function builds its SQL by formatting the attacker-supplied value straight into a PostgreSQL jsonb_path_exists() jsonpath expression: "The value comes directly from the CQL filter, which comes directly from the HTTP request. It is dropped into a SQL string literal with no escaping" (Hadrian, 2026-08-14). Every other GeoTools filter function uses parameterised queries; this one does not, because PostgreSQL does not accept bind parameters inside a jsonpath expression, so the function was written with string formatting instead. The reachable surface is the CQL_FILTER parameter of the public OGC WMS and WFS endpoints, which accept unauthenticated input by design, against any PostGIS-backed layer that "requires a Text or JSON column; affects PostGIS 12 and up" (GeoServer project, 2026-08-14). The maintainers describe the flaw as a regression of CVE-2023-25158 (The Hacker News, 2026-08-13).

Why the service version decides the outcome. The escalation from arbitrary SQL to arbitrary commands turns on the shape of the query GeoServer generates, which differs per service. WFS 2.0 has to populate numberMatched, so it wraps the filter in a derived-table count query and a semicolon in the injected value never escapes the wrapper. WFS 1.0 carries no numberMatched in its response schema, so no wrapper is generated: "WFS 1.0 provides a path where a stacked PostgreSQL statement executes at the top level of the query" (Hadrian, 2026-08-14). Where the stacked statement lands and the PostgreSQL role holds superuser or pg_execute_server_program, COPY ... TO PROGRAM executes a command on the database host, Hadrian confirmed this against a lab deployment, with the command running as the postgres account. WMS GetMap is also exploitable but needs a geometry column and more parenthesis closure. The JDBC setting operators reach for first is not a control: "Exploitation does not require preferQueryMode=simple on the JDBC connection. Default pgJDBC configuration is sufficient", the driver splits semicolon-separated SQL and executes each sub-statement even in extended mode.

What a locked-down database role does and does not buy. Removing superuser and pg_execute_server_program removes the command-execution path, and nothing else: "A restricted PostgreSQL account reduces the impact. It does not remove the injection" (Hadrian, 2026-08-14). Two extraction routes survive it, an error-based route that casts an expression to an integer so PostgreSQL leaks the result inside its type error, which works through both WFS and WMS with no special JDBC settings, and a time-based blind route through a subquery, which works even where prepared statements are enabled precisely because a subquery is not a stacked statement. Anything the GeoServer database user can read is therefore reachable, including credentials and connection strings held in other tables. On whether any configuration change helps, the vendor advisory and the reversing analysis disagreed when this was written. GeoTools' advisory then said no mitigation was available and that the mitigation published for the 2023 flaw (enabling prepared statements and disabling encode functions) was not effective. It has since been revised and now says only: "No mitigation is available: To limit scope of SQL Injection the PostGIS connection pool should be configured with limited rights." (GeoTools, 2026-08-15, revised since). Hadrian's remediation guidance says the opposite of one half of that pairing: "Disabling the encode functions option on the PostGIS datastore prevents jsonArrayContains from being translated into the vulnerable SQL form" (Hadrian, 2026-08-14). The two are not quite addressing the same thing (the advisory rates the 2023 pairing as a whole, the analysis isolates one setting) but an operator who cannot patch has one source telling them a switch closes the path and the vendor offering no mitigation at all. Treat it as unproven and not a substitute for the upgrade: it is worth setting where the estate can tolerate it, and worth verifying against your own deployment rather than trusting either statement.

Detection, telemetry class first. In web and reverse-proxy access logs, the anchor is an unauthenticated WMS or WFS request whose CQL_FILTER parameter invokes jsonArrayContains, with the WFS 1.0 service version the one that matters most because it is the version that reaches top-level SQL. In application logs, a JDBC driver error reporting that multiple result sets were returned by the query is a by-product of a stacked statement having executed, not a parsing failure; it is a post-exploitation signal, not a probe. In database audit telemetry (PostgreSQL statement logging or pgAudit), the signals are a COPY ... TO PROGRAM invocation from the GeoServer service role, malformed jsonpath arguments to jsonb_path_exists(), repeated integer-cast type errors from the same client session, and pg_sleep inside a subquery. Triage: legitimate GIS clients do call jsonArrayContains, so the function name alone is not the signal; the discriminators are quote and semicolon characters inside the value argument, the same client session producing a run of type-conversion errors against a layer it otherwise reads cleanly, and a shift of that client's traffic onto the WFS 1.0 endpoint when the rest of the estate's tooling speaks WFS 2.0.

Updaterun 2026-09-29T2134Z-audittitleheadlinesummarytagscvesevidenceactionsbody

The flaw now has an identifier. The GeoTools advisory tracks it as CVE-2026-76904, rated critical at CVSS 9.8 (CWE-89), with patched versions 35.1, 34.5 and 33.6 (GeoTools, 2026-08-15, revised since), and GeoServer's 3.0.1 release announcement names the same CVE (GeoServer project, 2026-08-14). A patch process that keys on CVE identifiers, a scanner feed or an SBOM match can now surface it, so a GeoServer that none of those flagged in August is worth a second look now. The fixed releases are unchanged: GeoServer 3.0.1, 2.28.5 and 2.27.6.

The advisory's mitigation text was revised at the same time. It no longer says the prepared-statements and encode-functions mitigation from the 2023 flaw is ineffective, and reads only: "No mitigation is available: To limit scope of SQL Injection the PostGIS connection pool should be configured with limited rights." (GeoTools, 2026-08-15, revised since). The upgrade remains the only remediation, and a restricted database role remains the way to take command execution off the table on an instance that is not yet upgraded.

vulnerability15 Aug 04:45Zmulti-sourceOpen finding →

2026-09-07 · view entry permalink →

NOTABLENATOB2

Recorded Future's H1 2026 Malware and Vulnerability Trends: two clusters reuse an identical post-exploitation tool stack across thirteen and ten unrelated initial CVEs

Recorded Future's Insikt Group published its H1 2026 Malware and Vulnerability Trends report on 3 September 2026, tracking 215 actively exploited CVEs in the first half of 2026, up 34% from 161 in H1 2025 (Recorded Future, 2026-09-03). Of those, 176 (82%) were network-accessible and 146 (68%) could be exploited without prior authentication; 142 of those 146 combined both properties, and 60 of 82 remote-code-execution CVEs combined network reachability, no authentication requirement and code execution in a single package (Recorded Future, 2026-09-03).

The report's most actionable finding for defenders is that post-exploitation tool-stack reuse persists across otherwise-unrelated initial-access vulnerabilities, regardless of vendor or product family (Recorded Future, 2026-09-03). A cluster the report designates StrikeShark applied an identical six-tool post-exploitation stack (SharkLoader, Cobalt Strike Beacon, FScan, Searchall, Pillager Stealer and SharpGPOAbuse) across thirteen separate CVEs spanning 2016 through 2025, reaching Microsoft Exchange, Microsoft SharePoint, Fortinet FortiOS, Cisco IOS XE, F5 BIG-IP, GeoServer and Apache Shiro (Recorded Future, 2026-09-03); SharkLoader itself was previously profiled by Kaspersky's GReAT, which found it deploying Cobalt Strike via "Perfect DLL Hijacking" in a campaign whose confirmed victims spanned government and diplomatic entities, software developers and organizations in several other sectors and regions (Kaspersky Securelist, 2026-06-24). Separately, Storm-1175 linked Mimikatz, Impacket, PsExec, Rclone and Medusa ransomware across ten different initial CVEs; a China-linked cluster the report designates SHADOW-EARTH-053 separately reused Mimikatz following exploitation of CVE-2021-26855 in Microsoft Exchange Server (Recorded Future, 2026-09-03). Insikt Group mapped 114 of the 215 CVEs to MITRE ATT&CK: exploitation of a public-facing application was associated with 77 CVEs (68%), and 50 of those 77 also co-occurred with PowerShell, Windows Command Shell or Unix Shell execution; every one of the 28 web-shell-associated CVEs also carried the public-facing-application technique. The next most frequently associated post-exploitation behaviors across the mapped CVEs were system-information discovery, collection of data from the local system, transfer of further tooling into the compromised environment, and exfiltration over the command-and-control channel or web-protocol-based C2 traffic (Recorded Future, 2026-09-03).

The report's own defender-facing conclusion is explicit: because the same limited tool stack recurs regardless of which vulnerability supplied the initial foothold, detection engineering should chain exploitation telemetry from public-facing systems through to the post-exploitation behaviors these clusters repeat (credential dumping, remote-service execution via native administration mechanisms, bulk outbound data transfer, and ransomware staging) rather than treating each CVE alert as an isolated, one-off event (Recorded Future, 2026-09-03).

Threat actors reused post-exploitation playbooks across different initial vulnerabilities; StrikeShark applied the same six-tool stack across thirteen CVEs, while Storm-1175 linked credential theft, remote execution, data transfer, and ransomware tooling across ten.

In the StrikeShark campaign, SharkLoader, Cobalt Strike Beacon, FScan, Searchall, Pillager Stealer, and SharpGPOAbuse were linked to the same thirteen CVEs. Those vulnerabilities spanned 2016 through 2025 and affected Microsoft Exchange and SharePoint, Fortinet FortiOS, Cisco IOS XE, F5 BIG-IP, GeoServer, Apache Shiro, and other public-facing technologies.

50 of the 77 CVEs associated with the exploitation of public-facing applications were also linked to PowerShell, Windows Command Shell, or Unix Shell, and all 28 web-shell-associated CVEs also included T1190.

Recorded Future (Insikt Group) 2026-09-03

Builds on: Kaspersky GReAT: "StrikeShark" loader deploys Cobalt Strike via "Perfect DLL Hijacking" against…

annual-report07 Sep 04:43Zsingle-sourceOpen finding →

Co-occurring entities

Derived: referenced by the same focused operational entries (weekly summaries and report roundups don't count); ×N counts the shared entries.

Where this entity is cited

  • Vulns1
  • Research1

Source distribution

  • fieldeffect.com1 (11%)
  • geoserver.org1 (11%)
  • github.com1 (11%)
  • hadrian.io1 (11%)
  • recordedfuture.com1 (11%)
  • securelist.com1 (11%)
  • security-hub.ncsc.admin.ch1 (11%)
  • securityweek.com1 (11%)
  • other1 (11%)