CVE-2026-20253

CVE-2026-20253: Splunk Enterprise Missing Authentication for Critical Function

Detects exploitation attempts targeting CVE-2026-20253, a missing authentication vulnerability (CWE-306) in Splunk Enterprise. This KEV-listed vulnerability allows unauthenticated access to critical Splunk functions. Attackers may leverage this to execute searches, exfiltrate data, or manipulate Splunk configurations without valid credentials.

Vulnerability Intelligence

KEV — Known Exploited

What is CVE-2026-20253 CVE-2026-20253: Splunk Enterprise Missing Authentication for Critical Function?

CVE-2026-20253: Splunk Enterprise Missing Authentication for Critical Function (CVE-2026-20253) maps to the Initial Access and Persistence and Collection tactics — the adversary is trying to get into your network in MITRE ATT&CK.

This page provides production-ready detection logic for CVE-2026-20253: Splunk Enterprise Missing Authentication for Critical Function, covering the data sources and telemetry it touches: CommonSecurityLog, W3CIISLog, Azure Firewall Logs. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Initial Access Persistence Collection
Microsoft Sentinel / Defender
kusto
union isfuzzy=true
(
    CommonSecurityLog
    | where DeviceVendor =~ "Splunk"
    | where RequestURL has_any ("/services/search/jobs", "/services/data/inputs", "/services/admin", "/services/authentication", "/en-US/splunkd/__raw/services")
    | where isempty(AdditionalExtensions) or AdditionalExtensions !has "authToken"
    | where RequestMethod in ("POST", "GET", "DELETE")
    | project TimeGenerated, SourceIP, DestinationIP, RequestURL, RequestMethod, DeviceVendor, DeviceProduct, EventOutcome
),
(
    W3CIISLog
    | where csUriStem has_any ("/services/search/jobs", "/services/data/inputs", "/services/admin", "/services/authentication")
    | where isempty(csUsername) or csUsername == "-"
    | where csMethod in ("POST", "GET", "DELETE")
    | project TimeGenerated, cIP, csUriStem, csMethod, scStatus, csUsername
)
| where TimeGenerated > ago(24h)

Detects unauthenticated HTTP requests to sensitive Splunk Enterprise API endpoints that require authentication. Looks for requests lacking authentication tokens/usernames to critical Splunk service paths.

critical severity medium confidence

Data Sources

CommonSecurityLog W3CIISLog Azure Firewall Logs

Required Tables

CommonSecurityLog W3CIISLog

False Positives

  • Health check probes or monitoring agents that hit Splunk endpoints without credentials
  • Internal network scanners performing asset inventory against Splunk ports
  • Splunk forwarder registration traffic that may appear unauthenticated in some log parsers
  • Load balancer or reverse proxy health checks targeting Splunk REST API paths

Sigma rule & cross-platform mapping

The detection logic for CVE-2026-20253: Splunk Enterprise Missing Authentication for Critical Function (CVE-2026-20253) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: network_connection
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Unauthenticated Splunk Search Job Creation via REST API

    Expected signal: HTTP POST to port 8089 without Authorization header; Splunk web_access.log entry with null/anonymous user; network flow record to TCP/8089

  2. Test 2Unauthenticated Splunk User Enumeration via REST API

    Expected signal: HTTP GET to /services/authentication/users on port 8089 without credentials; response body containing user list if vulnerable

  3. Test 3Unauthenticated Splunk Index Listing and Data Access

    Expected signal: Sequential unauthenticated GET and POST requests to Splunk REST API; multiple different /services/ paths accessed from same source IP within short timeframe

  4. Test 4Unauthenticated Splunk Configuration Modification Attempt

    Expected signal: HTTP POST to /services/data/inputs/ without Authorization header; Splunk audit log entry for configuration change with anonymous user context


Response Playbook

Triage

  1. Verify Splunk Enterprise version against affected versions listed in SVD-2026-0603 and confirm patch status immediately.
  2. Review Splunk internal audit logs (_audit index) for search job creation, configuration changes, or data input modifications that occurred without authenticated sessions during the exposure window.
  3. Identify the source IPs making unauthenticated requests — correlate against threat intelligence feeds and your organization's known IP inventory to distinguish external attackers from misconfigured internal tools.
  4. Check Splunk REST API access logs for evidence of data exfiltration: large search results exported, index listing commands, or credential harvesting via /services/authentication/users endpoints.

Containment

  1. If exploitation is confirmed or strongly suspected, immediately isolate the Splunk instance from the network by blocking inbound traffic to ports 8000, 8089, and 9997 at the firewall/NSG level until patching is complete.
  2. Rotate all Splunk authentication tokens, service account passwords, and any credentials that Splunk had access to (indexed credentials, inputs requiring auth, forwarder management credentials) as they may have been exfiltrated.
  3. Apply vendor patch from SVD-2026-0603 immediately; if patch cannot be applied within 24 hours due to CISA BOD-26-04, implement WAF rules to block unauthenticated requests to /services/* paths as a temporary compensating control.

Evidence Collection

  1. Export the Splunk _audit index for the full suspected exposure window: search `index=_audit action=search OR action=edit OR action=create earliest=-30d` and preserve as immutable evidence.
  2. Capture network flow logs (NetFlow/IPFIX) showing connections to Splunk ports 8000 and 8089 for the exposure period, including byte counts to assess potential data exfiltration volume.
  3. Collect Splunk server-side logs from $SPLUNK_HOME/var/log/splunk/ (splunkd.log, web_access.log, audit.log) before any patching or restart that may rotate logs.

Escalation Criteria

  • ! Escalate immediately to CISO and IR team if unauthenticated requests resulted in successful 200/201 responses to search job creation or admin configuration endpoints — active exploitation is confirmed.
  • ! Escalate to legal and compliance teams if Splunk indexes contain PII, PHI, financial data, or credentials, as data exfiltration through this vulnerability may trigger breach notification obligations.

Investigation Guide

Forensic Artifacts

  • > Splunk web_access.log entries showing HTTP 200 responses to /services/ paths without session cookies or Authorization headers
  • > $SPLUNK_HOME/var/log/splunk/audit.log entries for search job creation events with null or anonymous user context
  • > Network flow records showing sustained connections from external IPs to TCP/8089 (Splunk management port)
  • > Splunk _audit index: `index=_audit action=* user=- OR user=anonymous` revealing unauthenticated actions taken

Tuning Guidance

Start with confidence:medium due to the difficulty of reliably detecting missing authentication from network logs alone. Tune by: (1) enriching with Splunk's own audit logs to correlate unauthenticated network requests with actual unauthenticated actions in Splunk; (2) establishing a baseline of legitimate internal tools hitting Splunk APIs without standard auth headers and allowlisting their IPs; (3) increasing severity threshold to require both the unauthenticated request AND a successful HTTP response code (200/201) before alerting; (4) reducing noise from Splunk forwarder traffic by filtering on destination port — forwarders primarily use 9997 while REST API exploitation targets 8089.


Hunting Queries

Threat hunt across 30 days of proxy/network logs to identify source IPs with sustained or high-volume access to Splunk REST API paths, potentially indicating automated exploitation or reconnaissance.

Hunting — KQL
kql
CommonSecurityLog
| where TimeGenerated > ago(30d)
| where DeviceVendor =~ "Splunk" or DestinationPort in (8000, 8089, 9997)
| where RequestURL has_any ("/services/", "/en-US/")
| summarize RequestCount=count(), UniquePaths=dcount(RequestURL), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by SourceIP
| where RequestCount > 10
| join kind=leftouter (ThreatIntelligenceIndicator | where isnotempty(NetworkIP)) on $left.SourceIP == $right.NetworkIP
| project SourceIP, RequestCount, UniquePaths, FirstSeen, LastSeen, ThreatType
| sort by RequestCount desc
Hunting — SPL
spl
index=proxy OR index=web earliest=-30d
(dest_port=8000 OR dest_port=8089 OR dest_port=9997)
| search uri_path="/services/*" OR uri_path="/en-US/*"
| bucket _time span=1h
| stats count as requests dc(uri_path) as unique_paths by src_ip _time
| where requests > 5
| eval hour=strftime(_time, "%Y-%m-%d %H:00")
| sort -requests

Atomic Red Team Tests

Test 1 Unauthenticated Splunk Search Job Creation via REST API
linux

Attempts to create a Splunk search job without providing authentication credentials, simulating CVE-2026-20253 exploitation to verify if the authentication bypass is present.

Command

bash
curl -sk -X POST 'https://SPLUNK_HOST:8089/services/search/jobs' --data 'search=search index=* | head 10' -H 'Content-Type: application/x-www-form-urlencoded' -w '\nHTTP_STATUS:%{http_code}\n'

Cleanup

bash
No persistent changes; search job will expire. If job was created, remove with: curl -sk -X DELETE 'https://SPLUNK_HOST:8089/services/search/jobs/JOB_ID'

Expected Telemetry

HTTP POST to port 8089 without Authorization header; Splunk web_access.log entry with null/anonymous user; network flow record to TCP/8089

Expected Detection

Alert on unauthenticated POST to /services/search/jobs returning HTTP 200 or 201 status code

Test 2 Unauthenticated Splunk User Enumeration via REST API
linux

Attempts to list Splunk user accounts without authentication, testing if the missing auth vulnerability allows enumeration of credentials and user information.

Command

bash
curl -sk 'https://SPLUNK_HOST:8089/services/authentication/users?output_mode=json' -H 'Accept: application/json' -w '\nHTTP_STATUS:%{http_code}\n'

Cleanup

bash
No changes made — read-only request

Expected Telemetry

HTTP GET to /services/authentication/users on port 8089 without credentials; response body containing user list if vulnerable

Expected Detection

Alert on unauthenticated GET to /services/authentication/* endpoints, particularly if response returns HTTP 200 with JSON user data

Test 3 Unauthenticated Splunk Index Listing and Data Access
linux

Enumerates available Splunk indexes without authentication, assessing the scope of data accessible through the missing authentication vulnerability.

Command

bash
curl -sk 'https://SPLUNK_HOST:8089/services/data/indexes?output_mode=json&count=100' -H 'Accept: application/json' -w '\nHTTP_STATUS:%{http_code}\n' && curl -sk -X POST 'https://SPLUNK_HOST:8089/services/search/jobs/export' --data 'search=| rest /services/data/indexes&output_mode=json' -w '\nHTTP_STATUS:%{http_code}\n'

Cleanup

bash
No changes made — read-only enumeration requests

Expected Telemetry

Sequential unauthenticated GET and POST requests to Splunk REST API; multiple different /services/ paths accessed from same source IP within short timeframe

Expected Detection

Alert on unauthenticated enumeration pattern: multiple distinct Splunk API paths accessed sequentially without authentication, indicating reconnaissance phase of exploitation

Test 4 Unauthenticated Splunk Configuration Modification Attempt
linux

Attempts to modify Splunk data inputs or server configuration without authentication, representing the highest-impact exploitation scenario for CVE-2026-20253.

Command

bash
curl -sk -X POST 'https://SPLUNK_HOST:8089/services/data/inputs/monitor' --data 'name=/tmp/test_cve_2026_20253&index=main&sourcetype=test' -H 'Content-Type: application/x-www-form-urlencoded' -w '\nHTTP_STATUS:%{http_code}\n'

Cleanup

bash
If monitor input was created, remove with: curl -sk -X DELETE 'https://SPLUNK_HOST:8089/services/data/inputs/monitor/%2Ftmp%2Ftest_cve_2026_20253' (with valid auth after patching)

Expected Telemetry

HTTP POST to /services/data/inputs/ without Authorization header; Splunk audit log entry for configuration change with anonymous user context

Expected Detection

Critical alert on unauthenticated POST to /services/data/inputs/ or /services/admin/ endpoints — this represents confirmed exploitation with potential for persistent access

Related Detections