CVE-2026-20253: Critical Unauthenticated Remote Code Execution in Splunk Enterprise via PostgreSQL Sidecar Service

CVE-2026-20253 (TL-2026-1103) is a critical-severity software vulnerability scored CVSS 9.8, first published 2026-06-10 and last reviewed 2026-07-19. It has no confirmed attribution, affects Splunk Splunk Enterprise, references 1 CVE (CVE-2026-20253), maps to 27 MITRE ATT&CK techniques (T1005, T1018, T1021), and is covered by 9 detection rules and 37 indicators of compromise.

Key facts for TL-2026-1103

Threat ID
TL-2026-1103
Severity
CRITICAL
CVSS
9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Status
ACTIVE
Category
VULNERABILITY
First published
2026-06-10
Last reviewed
2026-07-19
Attribution confidence
LOW
Motivation
UNKNOWN
Target sectors
government administration, technology, financial services, critical infrastructure
Target regions
North America, Europe
Detection rules
9
Indicators of compromise
37
Updates
2026-07-19 · revalidated 1× · latest source

Malware and tooling in CVE-2026-20253

Malware and tooling: Nuclei detection template (CVE-2026-20253), Snort SID 1.2069930.1, Zscaler App.Exploit.CVE-2026-20253, Zscaler Private Access AppProtection signature 6000500, watchTowr-vs-Splunk-CVE-2026-20253

Splunk Enterprise 10.2.x (prior to 10.2.4) and 10.0.x (prior to 10.0.7) contain an unauthenticated remote code execution vulnerability (CVE-2026-20253, CVSS 9.8) stemming from missing authentication on a PostgreSQL sidecar recovery endpoint that Splunk Web reverse-proxies to the internet. Splunk confirmed active in-the-wild exploitation on June 18, 2026, and CISA added the flaw to its Known Exploited Vulnerabilities catalog the same day — the first Splunk CVE ever listed there.

How CVE-2026-20253 works

CVE-2026-20253 is a critical (CVSS 9.8) unauthenticated remote code execution vulnerability in Splunk Enterprise, disclosed by Splunk PSIRT on June 10, 2026 as advisory SVD-2026-0603 and officially described as 'unauthenticated arbitrary file creation and truncation' via a PostgreSQL sidecar service endpoint. Splunk Enterprise ships an optional PostgreSQL 'sidecar' database used to support Edge Processor, OpAmp, and SPL2 data-pipeline features. This sidecar is meant to be reachable only on localhost (127.0.0.1:5435), but Splunk Web (the main HTTP interface on TCP 8000) reverse-proxies requests to sidecar recovery endpoints — including `/en-US/splunkd/__raw/v1/postgres/recovery/backup` — making the internal service remotely reachable. On AWS deployments the sidecar is enabled by default, broadening exposure versus on-premise installs where it must be explicitly enabled.

The recovery endpoint expects an HTTP Basic Authorization header but performs no real validation of the supplied credentials: a request carrying `Authorization: Basic Og==` (base64 for a blank `:` — empty username and password) is accepted and the backup operation is invoked. From there, watchTowr Labs (technical write-up and public PoC published June 12, 2026) demonstrated a multi-stage chain from this authentication bypass to full RCE:

1. **Unauthenticated trigger** — attacker sends an unauthenticated POST to the recovery/backup endpoint with an empty Basic-auth header. 2. **Path traversal / arbitrary file write** — the `backupFile` request parameter is passed directly to `pg_dump` as an output path with no directory constraint, so traversal sequences such as `../../../../../../tmp/backuptest` let the attacker write files anywhere the Splunk service account can reach. 3. **Connection-string injection** — because `pg_dump`/`pg_restore` are invoked with attacker-influenced libpq connection parameters, the attacker can inject `hostaddr=`, `dbname=`, `port=`, and `passfile=` values to redirect the sidecar's database connection to an attacker-controlled PostgreSQL server, causing the backup/restore machinery to pull attacker-supplied content. 4. **Credential disclosure** — the sidecar stores its own connection credentials in plaintext at `/opt/splunk/var/packages/data/postgres/.pgpass`, letting an attacker who can read arbitrary files authenticate directly to the sidecar as the privileged `postgres_admin` role. 5. **Backup/restore abuse and large-object export** — using `pg_restore` against an attacker-crafted dump (or PostgreSQL large-object export via `lo_export`), the attacker writes arbitrary file content to the filesystem during 'restoration', not merely truncating files. 6. **Persistence/code execution via scheduled script hijack** — the attacker overwrites a Splunk-scheduled Python modular-input script, `/opt/splunk/etc/apps/splunk_secure_gateway/bin/ssg_enable_modular_input.py`, with attacker-controlled code. When Splunk next invokes that modular input, the payload executes under the Splunk service account, completing the chain from zero authentication to full remote code execution.

Affected versions are Splunk Enterprise 10.2.0–10.2.3 and 10.0.0–10.0.6; versions 9.4 and earlier are unaffected, and Splunk Cloud Platform is not affected because it does not use PostgreSQL sidecars. Splunk shipped fixes in 10.2.4, 10.0.7, and 10.4.0+. CrowdSec deployed a detection scenario on June 15, 2026; the first real-world exploitation attempts were observed June 17, 2026, and by June 18 both Splunk PSIRT and CISA confirmed active in-the-wild exploitation, with CISA adding CVE-2026-20253 to the KEV catalog and ordering FCEB agencies to remediate by June 21/22 (reported variously as June 21–23), 2026 under Binding Operational Directive 26-04. CrowdSec's global sensor network flagged 20 unique malicious IP addresses attempting exploitation in the initial days after public disclosure of active attacks; Shadowserver separately reported roughly 1,400 internet-exposed Splunk instances globally (952 in North America, 223 in Europe), though the proportion still running vulnerable versions is unconfirmed. No specific threat actor or APT group has been publicly attributed; activity to date is consistent with opportunistic, automated mass-exploitation enabled by the low complexity of the exploit and the public availability of PoC and Nuclei detection/scanning templates.

Beyond the initial file-write primitive, Zscaler ThreatLabz's June 26, 2026 deep-dive confirms the sidecar also exposes a second reverse-proxied endpoint, `/en-US/splunkd/__raw/v1/postgres/recovery/restore`, abused analogously to `/recovery/backup` to trigger `pg_restore`-driven file writes. Zscaler's post-exploitation analysis states that once an attacker gains code execution, they can 'tamper with or delete security telemetry to degrade detection and response, harvest stored credentials/API keys from indexed data, establish persistence, disable logging mechanisms, and pivot to other internal systems' — turning a compromised Splunk instance into both an anti-forensics tool against the victim's own SIEM/logging pipeline and a lateral-movement pivot point across the monitored environment, since Splunk indexers/search heads typically hold credentials, tokens, and connectivity to many internal hosts. Defenders can add an interim workaround stanza (`[postgres]` / `disabled = true`) to `$SPLUNK_HOME/etc/system/local/server.conf` to disable the sidecar entirely, though this breaks Edge Processor, OpAmp, and SPL2 pipelines and is explicitly not a substitute for patching. Zscaler has released a network-layer detection signature (`App.Exploit.CVE-2026-20253` for Advanced Threat Protection customers) and a ZTNA-layer rule (Private Access AppProtection signature `6000500`) covering exploitation attempts, complementing the previously released Snort signature (SID 1.2069930.1) and CrowdSec detection scenario. Multiple independent vendor write-ups (Zscaler, Picus Security, NetSPI, watchTowr Labs, and Splunk's own advisory) consistently confirm Splunk Cloud Platform is NOT affected because it does not deploy PostgreSQL sidecars — only self-managed Splunk Enterprise deployments are vulnerable.

MITRE ATT&CK techniques used in TL-2026-1103

Collection

T1005 Data from Local System; T1213 Data from Information Repositories

Discovery

T1018 Remote System Discovery; T1046 Network Service Discovery; T1082 System Information Discovery; T1518 Software Discovery

Lateral Movement

T1021 Remote Services

Defense Evasion

T1036 Masquerading; T1070 Indicator Removal

Persistence

T1053 Scheduled Task/Job; T1505 Server Software Component

Execution

T1059 Command and Scripting Interpreter

Privilege Escalation

T1068 Exploitation for Privilege Escalation; T1078 Valid Accounts; T1548 Abuse Elevation Control Mechanism

Command and Control

T1071 Application Layer Protocol

Initial Access

T1133 External Remote Services; T1190 Exploit Public-Facing Application

Impact

T1489 Service Stop; T1565 Data Manipulation

Credential Access

T1552 Unsecured Credentials

stealth

T1574 Hijack Execution Flow

Resource Development

T1583 Acquire Infrastructure; T1587 Develop Capabilities; T1588 Obtain Capabilities

Reconnaissance

T1595 Active Scanning

defense-impairment

T1685 Disable or Modify Tools

Affected products and versions in CVE-2026-20253

  • Splunk — Splunk Enterprise
    Vulnerable versions: 10.2.0; 10.2.1; 10.2.2; 10.2.3; 10.0.0; 10.0.1; 10.0.2; 10.0.3; 10.0.4; 10.0.5
    Fixed in: 10.2.4; 10.0.7; 10.4.0 and later
  • Splunk — Splunk Enterprise on AWS
    Vulnerable versions: 10.2.0-10.2.3 (PostgreSQL sidecar enabled by default); 10.0.0-10.0.6 (PostgreSQL sidecar enabled by default)
    Fixed in: 10.2.4; 10.0.7; 10.4.0 and later
  • Splunk — Splunk Cloud Platform
    Fixed in: Not affected — Splunk Cloud Platform does not deploy PostgreSQL sidecar services

Remediation for CVE-2026-20253

Patches

  • Splunk Enterprise 10.2.4
  • Splunk Enterprise 10.0.7
  • Splunk Enterprise 10.4.0 and later

Immediate actions

  • Upgrade Splunk Enterprise to a fixed version (10.2.4, 10.0.7, or 10.4.0+) immediately — this is the only complete fix
  • Restrict network exposure of Splunk Web (TCP 8000) from the public internet using firewall rules or ZTNA controls
  • Monitor and block POST requests to /en-US/splunkd/__raw/v1/postgres/recovery/backup and /en-US/splunkd/__raw/v1/postgres/recovery/restore that contain path traversal sequences, empty/blank Basic-auth headers (e.g. 'Authorization: Basic Og=='), or injected libpq connection parameters (hostaddr=, dbname=, port=, passfile=)

Workarounds

  • Disable the PostgreSQL sidecar service by adding '[postgres]' / 'disabled = true' to $SPLUNK_HOME/etc/system/local/server.conf if Edge Processor, OpAmp, and SPL2 data pipelines are not required — this breaks that functionality and is not a substitute for patching

Longer-term hardening

  • Segment Splunk infrastructure (including PostgreSQL sidecar components) away from untrusted or internet-facing networks
  • Deploy IDS/IPS coverage for the sidecar exploitation pattern, e.g. Snort SID 1.2069930.1 (ET WEB_SPECIFIC_APPS Splunk Enterprise PostgreSQL Sidecar Service API via SplunkWeb Parameter Injection), and enable Zscaler App.Exploit.CVE-2026-20253 / Private Access AppProtection signature 6000500 where available
  • Establish a routine patch/vulnerability-management cadence for security tooling itself (SIEM, EDR consoles), not only production application stacks
  • Rotate PostgreSQL sidecar and postgres_admin credentials, and audit .pgpass file permissions, following any suspected exposure
  • After any suspected compromise, treat the Splunk instance's own logs/telemetry as untrusted and validate integrity against an independent, out-of-band log store, since attackers with RCE can tamper with or delete security telemetry to degrade detection and hinder incident response

CVEs associated with CVE-2026-20253

CVE-2026-20253

Weaknesses (CWE) in CVE-2026-20253

CWE-306, CWE-22

Timeline of CVE-2026-20253

  • Splunk PSIRT publishes advisory SVD-2026-0603 disclosing CVE-2026-20253 and ships patched versions 10.2.4 and 10.0.7
  • watchTowr Labs publishes a technical deep-dive and a public proof-of-concept exploit chaining the authentication bypass into full RCE
  • Multiple independent GitHub repositories (HORKimhab, 0xBlackash, and others) publish PoC and weaponized exploit code covering vulnerability detection, arbitrary file write, and RCE modes.
  • Horizon3.ai releases a Rapid Response test/detection module for CVE-2026-20253, distinct from CrowdSec's detection scenario released the same day.
  • CrowdSec releases a detection scenario/rule for CVE-2026-20253 exploitation attempts; vendor guidance on the server.conf sidecar-disable workaround also circulates
  • First real-world exploitation attempts observed; CrowdSec's global sensor network begins flagging malicious source IPs targeting the vulnerable endpoint
  • CISA adds CVE-2026-20253 to the Known Exploited Vulnerabilities catalog — the first Splunk vulnerability ever listed
  • Splunk PSIRT confirms active in-the-wild exploitation of CVE-2026-20253
  • Widespread security media coverage (The Hacker News, Help Net Security, BleepingComputer, SecurityWeek) reports active exploitation and Shadowserver's count of ~1,400 internet-exposed Splunk instances
  • Deadline for U.S. Federal Civilian Executive Branch (FCEB) agencies to remediate under CISA Binding Operational Directive 26-04
  • Zscaler ThreatLabz publishes an in-depth technical analysis identifying the secondary /recovery/restore endpoint, detailing post-exploitation telemetry-tampering and lateral-movement risk, and releasing App.Exploit.CVE-2026-20253 and Private Access AppProtection signature 6000500

Update history for TL-2026-1103

Sources cited for CVE-2026-20253

Threats related to CVE-2026-20253

Detection coverage for TL-2026-1103

As of 2026-07-19, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-1103 across Splunk SPL, Microsoft KQL and Sigma, covering 37 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

[ 0 threats ] [ 0 det ] [ CRIT: 0 ] [ HIGH: 0 ]
// threat_feed
$ sort --newest
Showing all threats

Latest Threats