CVE-2025-20368

5.7 MEDIUM

📋 TL;DR

This CVE describes a cross-site scripting (XSS) vulnerability in Splunk Enterprise and Splunk Cloud Platform where low-privileged users can inject malicious JavaScript through saved search error messages and job inspection details. When exploited, this allows attackers to execute arbitrary JavaScript in victims' browsers, potentially leading to session hijacking or unauthorized actions. Affected users include all organizations running vulnerable Splunk versions with non-admin users who can create or view saved searches.

💻 Affected Systems

Products:
  • Splunk Enterprise
  • Splunk Cloud Platform
Versions: Splunk Enterprise: below 9.4.4, 9.3.6, and 9.2.8; Splunk Cloud Platform: below 9.3.2411.108, 9.3.2408.118 and 9.2.2406.123
Operating Systems: All supported platforms
Default Config Vulnerable: ⚠️ Yes
Notes: Requires low-privileged user accounts with permissions to create or view saved searches. The vulnerability is present in default configurations.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

An attacker could steal administrator session cookies, perform actions as authenticated users, redirect users to malicious sites, or deploy ransomware through browser-based attacks.

🟠

Likely Case

Attackers with low-privileged accounts could perform session hijacking, steal sensitive data displayed in Splunk dashboards, or manipulate search results to mislead analysts.

🟢

If Mitigated

With proper input validation and output encoding, the attack would fail to execute JavaScript, limiting impact to benign error message display.

🌐 Internet-Facing: MEDIUM - While exploitation requires authentication, internet-facing Splunk instances could be targeted by attackers who obtain low-privilege credentials through phishing or credential stuffing.
🏢 Internal Only: MEDIUM - Internal attackers or compromised accounts could exploit this to escalate privileges or conduct lateral movement within the Splunk environment.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access with low privileges. The attack leverages built-in saved search functionality rather than requiring complex bypass techniques.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Splunk Enterprise: 9.4.4, 9.3.6, 9.2.8; Splunk Cloud Platform: 9.3.2411.108, 9.3.2408.118, 9.2.2406.123

Vendor Advisory: https://advisory.splunk.com/advisories/SVD-2025-1003

Restart Required: Yes

Instructions:

1. Backup your Splunk configuration and data. 2. Download the appropriate patch from Splunk's downloads page. 3. Stop all Splunk services. 4. Apply the patch following Splunk's upgrade documentation. 5. Restart Splunk services. 6. Verify the version is updated.

🔧 Temporary Workarounds

Restrict Saved Search Creation

all

Limit which users can create saved searches to reduce attack surface

splunk edit user <username> -role <role_without_saved_search_permissions>

Implement Content Security Policy

all

Add CSP headers to restrict JavaScript execution from untrusted sources

Add 'Content-Security-Policy' header to web.conf with appropriate directives

🧯 If You Can't Patch

  • Implement strict input validation and output encoding for all user-controlled data in saved searches
  • Monitor for unusual saved search creation or modification patterns and review saved search content regularly

🔍 How to Verify

Check if Vulnerable:

Check Splunk version via web interface (Settings > Server Info) or CLI. Compare against affected versions list.

Check Version:

splunk version

Verify Fix Applied:

Verify version is at or above patched versions. Test saved search functionality to ensure error messages are properly sanitized.

📡 Detection & Monitoring

Log Indicators:

  • Unusual saved search creation/modification patterns
  • JavaScript code in saved search error messages
  • Multiple failed saved search executions with suspicious content

Network Indicators:

  • Unexpected JavaScript loading in Splunk web traffic
  • Cross-origin requests from Splunk interface to external domains

SIEM Query:

index=_internal source=*web_access* saved_search AND (javascript OR script OR eval)

🔗 References

📤 Share & Export