← Back to Feed CACHED · 2026-08-20 05:44:41 · CACHE_KEY CVE-2026-76404
CVE-2026-76404 · CWE-502 · Disclosed 2026-08-19

In Splunk MCP Server app versions below 1.2.1

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone left a loaded gun in the SIEM's optional AI drawer, but only the safe owner has the key

CVE-2026-76404 is a classic CWE-502 insecure deserialization bug in the Splunk MCP Server app (versions below 1.2.1), an *optional* Splunkbase add-on that exposes Splunk data to AI agents via the Model Context Protocol. The credential management component deserializes stored data without type-checking, allowing an attacker who already holds the Splunk admin role to inject a crafted serialized payload and achieve arbitrary OS command execution on the underlying search head. The Scope is Changed (S:C), meaning the blast radius escapes the Splunk application context and lands on the host OS. Fixed in version 1.2.1, disclosed 2026-08-19, reported by Kuniyoshi Noguchi.

Splunk tagged this CVSS 9.1 CRITICAL, which is *technically correct* per the vector math (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H) but overstates the real-world urgency for most shops. The PR:H gate means only Splunk administrators — a role typically held by a handful of people per org — can trigger it. The affected component is an optional AI-integration app that is *not* shipped with Splunk Enterprise or Cloud by default; you had to deliberately install it from Splunkbase. The combination of a narrow privilege requirement and a limited installed base significantly reduces the exploitable population, even though the *consequence* of successful exploitation (OS-level RCE on a SIEM search head) remains severe.

"Admin-only deser RCE in an optional Splunk app — scary on paper, gated in practice"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Obtain Splunk admin credentials

The attacker must first possess valid credentials for an account with the admin role in the target Splunk deployment. This could come from credential stuffing, phishing a Splunk admin, prior compromise of a secrets vault, or insider threat. Without this role, the deserialization endpoint is inaccessible.
Conditions required:
  • Valid Splunk account with the admin role
  • Network access to the Splunk management port (default 8089) or Splunk Web (default 8000)
Where this breaks in practice:
  • Splunk admin accounts are typically limited to 2-5 individuals per org and are often protected by MFA
  • Management port 8089 is rarely exposed to the internet; most orgs restrict it to a management VLAN
Detection/coverage: Failed login attempts visible in _audit index; successful admin logins can trigger alerts via index=_audit action=login info=succeeded user=admin
STEP 02

Confirm MCP Server app is installed

The attacker must verify that the optional Splunk MCP Server app (Splunkbase app 7931) is installed and enabled on the target search head. If it is not installed, there is no vulnerable endpoint. The app was released in 2026 and adoption is still ramping.
Conditions required:
  • Splunk MCP Server app < 1.2.1 installed and enabled
Where this breaks in practice:
  • The app is optional, not bundled by default — only orgs adopting MCP/AI agent integration will have it
  • The app is relatively new (2026), limiting the installed base to early adopters
Detection/coverage: App inventory is visible in | rest /services/apps/local | search title="*mcp*"
STEP 03

Craft malicious serialized payload

The attacker crafts a serialized object (likely Python pickle or jsonpickle, consistent with Splunk's deserialization patterns seen in SVD-2024-1205 and SVD-2026-0601) that, when deserialized by the credential management component, executes arbitrary OS commands. The payload is injected through the credential storage interface that the admin role has write access to.
Conditions required:
  • Knowledge of the serialization format used by the credential management component
  • Ability to write to the credential store via REST API or Splunk Web
Where this breaks in practice:
  • No public PoC exists as of 2026-08-20, so attackers must reverse-engineer the deserialization path independently
  • The specific serialization library and injection point are not publicly documented
Detection/coverage: Anomalous writes to credential storage endpoints may be logged; monitor | rest /servicesNS/-/-/storage/passwords access patterns
STEP 04

Trigger deserialization and achieve OS RCE

When the credential management component reads back the stored data and deserializes it, the malicious payload executes arbitrary commands as the OS user running splunkd (typically splunk on Linux or SYSTEM on Windows). Because Scope is Changed, the attacker escapes the Splunk application boundary and operates directly on the host operating system. From a SIEM search head, this means access to all indexed data, the ability to tamper with detections, and a pivot point into the broader network.
Conditions required:
  • Successful payload delivery in step 3
  • The credential component must read/deserialize the poisoned entry (may require a trigger action or happen automatically)
Where this breaks in practice:
  • splunkd often runs as a dedicated low-privilege splunk user on Linux, limiting immediate lateral movement without further privesc
  • EDR on the search head should flag anomalous child processes spawned by splunkd
Detection/coverage: EDR/HIDS should detect unusual process trees under splunkd; Sysmon or auditd will log unexpected executions; Splunk's own _internal index may capture errors during deserialization
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNot observed. Not on CISA KEV as of 2026-08-20. No campaigns or threat actor usage reported.
Proof-of-conceptNo public PoC available. The bug class (CWE-502 in Splunk Python apps) has well-documented prior art from SVD-2024-1205 and SVD-2026-0601 (Splunk Secure Gateway jsonpickle deserialization), which *do* have public PoCs. An experienced attacker could adapt those techniques.
EPSSNot yet scored (disclosed 2026-08-19). Based on the admin-only prerequisite and optional app scope, expect a low-to-moderate EPSS percentile once scored.
KEV statusNot listed. No CISA BOD 22-01 deadline applies.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H — Network-accessible, low complexity, but requires high privileges. Scope Changed means OS-level impact beyond Splunk.
Affected versionsSplunk MCP Server app < 1.2.1 (base version 1.2 and earlier)
Fixed versionSplunk MCP Server app 1.2.1 (available on Splunkbase)
Scanning/exposureSplunk management port 8089 is rarely internet-facing. Shodan/Censys typically show < 5,000 Splunk instances globally with 8089 exposed. The MCP Server app is a subset of those.
Disclosure date2026-08-19 (SVD-2026-0808)
ReporterKuniyoshi Noguchi (KuniNogu), credited by Splunk in SVD-2026-0808
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (7.5/10)

The single most decisive factor driving the downgrade from CRITICAL to HIGH is the PR:H prerequisite — only Splunk admin-role holders can trigger the deserialization chain, and this role is typically held by fewer than 5 people per organization, dramatically narrowing the exploitable population. The SIEM role multiplier (blast radius includes detection-plane compromise and indexed-data access on successful exploitation) establishes a HIGH floor that prevents further downgrade.

HIGH Vulnerability existence and attack prerequisites
MEDIUM Installed base size of the MCP Server app (new, optional component)
LOW Exploit complexity and weaponization timeline (no public PoC yet)

Why this verdict

  • PR:H gate: The Splunk admin role is a tightly held credential, typically protected by MFA and held by 2-5 individuals per organization. This compounding prerequisite means the attacker is already deeply trusted before the chain begins — functionally equivalent to insider threat or post-compromise of a privileged identity.
  • Optional app, limited installed base: The Splunk MCP Server app is not bundled with Splunk Enterprise or Cloud. It must be deliberately installed from Splunkbase. As a 2026 product tied to the nascent MCP/AI-agent ecosystem, adoption is concentrated among early adopters, significantly reducing the reachable population.
  • No exploitation evidence or public PoC: Disclosed yesterday (2026-08-19), not KEV-listed, no known campaigns, no public exploit code. While the bug class has prior art in Splunk Secure Gateway deserialization PoCs, adapting those requires reverse-engineering the MCP Server's credential storage path.
  • Role multiplier: Splunk is a SIEM / detection plane component — a high-value role by definition. If the chain succeeds on a search head, the blast radius includes: (a) OS-level RCE on a host that indexes security-critical data, (b) ability to tamper with or delete detections and alerts, (c) access to all indexed data including potential credentials and secrets, (d) pivot point into the network from a trusted monitoring host. This is a fleet-visibility-scale impact. The role multiplier establishes a HIGH floor — the verdict cannot go below HIGH despite the friction from PR:H and optional-app status.
  • Scope Changed but gated: The S:C designation correctly captures that exploitation escapes Splunk's application boundary to the host OS. However, on Linux deployments splunkd typically runs as a dedicated splunk user (not root), limiting immediate post-exploitation impact without a local privesc chain. On Windows, splunkd may run as SYSTEM, which is worse.

Why not higher?

Despite the Changed Scope and SIEM role multiplier, this cannot stay at CRITICAL because the admin-role prerequisite (PR:H) means an attacker already needs highly privileged authenticated access to even begin the chain. The affected component is also an *optional* add-on app, not core Splunk — so the fraction of Splunk installations where this vulnerability exists is substantially less than the full Splunk installed base. There is no active exploitation, no KEV listing, and no public PoC to indicate imminent weaponization.

Why not lower?

The SIEM/detection-plane role multiplier is the hard floor. A compromised Splunk search head gives attackers the ability to blind the SOC, exfiltrate all indexed telemetry, and pivot from one of the most trusted hosts on the network. Even with the PR:H gate, the *consequence* of successful exploitation is too severe to classify as MEDIUM. Additionally, the deserialization bug class has well-established prior art in Splunk's own ecosystem (jsonpickle in Secure Gateway), lowering the R&D barrier for a motivated attacker.

05 · Compensating Control

What to do — in priority order.

  1. Upgrade the MCP Server app to 1.2.1 immediately — This is the definitive fix. The app is a Splunkbase add-on and can be upgraded independently of Splunk Enterprise/Cloud without a full platform maintenance window. Deploy within the noisgate HIGH mitigation SLA of 30 days, but aim for this week given the SIEM role.
  2. Disable or remove the MCP Server app if not actively used — If your org installed the app for evaluation but is not using MCP/AI agent integration in production, remove it entirely via splunk remove app splunk_mcp_server or disable it in the app management UI. This eliminates the attack surface completely. Do this within 30 days per the noisgate HIGH mitigation SLA.
  3. Restrict Splunk management port 8089 to a dedicated management VLAN — Ensure port 8089 is not accessible from general user networks or the internet. Use firewall rules or network segmentation to limit access to authorized admin workstations and automation hosts only. This reduces the network reachability of the vulnerable endpoint.
  4. Enforce MFA on all Splunk admin accounts — Since the chain requires admin-role credentials, MFA on Splunk Web and REST API authentication significantly raises the bar for credential-based attacks. Integrate with your IdP (SAML/OIDC) and enforce conditional access policies.
  5. Monitor for anomalous splunkd child processes — Deploy an EDR detection or Splunk search that alerts on unexpected child processes spawned by the splunkd process (e.g., sh, bash, cmd.exe, powershell.exe). This catches the post-exploitation phase of deserialization RCE.
What doesn't work
  • WAF/reverse proxy in front of Splunk Web — The deserialization occurs in the credential management backend, likely triggered via the REST API on port 8089, not through HTTP request payloads that a WAF would inspect. A WAF cannot parse Splunk's internal serialization format.
  • Reducing the admin user's capabilities — The admin role is a built-in Splunk role with broad capabilities. You cannot selectively remove credential-store write access without breaking core admin functionality. Role restriction is not a viable workaround here.
  • Network-level IDS/IPS signatures — The malicious payload is delivered over TLS-encrypted Splunk REST API calls. Without TLS inspection terminating at the Splunk management port, network signatures cannot detect the serialized payload.
06 · Verification

Crowdsourced verification payload.

Run this script on each Splunk search head where the MCP Server app might be installed. Execute as the splunk user or any user with read access to $SPLUNK_HOME. No Splunk admin credentials required — it only checks the installed app version on disk. Example: bash check_cve_2026_76404.sh or bash check_cve_2026_76404.sh /opt/splunk

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_76404.sh — Detect vulnerable Splunk MCP Server app
# CVE-2026-76404: Deserialization RCE in credential management (< 1.2.1)
# Exit codes: 0 = PATCHED/not installed, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

SPLUNK_HOME="${1:-/opt/splunk}"
APP_DIR="$SPLUNK_HOME/etc/apps/splunk_mcp_server"
APP_CONF="$APP_DIR/default/app.conf"

if [ ! -d "$APP_DIR" ]; then
    echo "PATCHED — Splunk MCP Server app is not installed at $APP_DIR"
    exit 0
fi

if [ ! -f "$APP_CONF" ]; then
    echo "UNKNOWN — App directory exists but app.conf not found at $APP_CONF"
    exit 2
fi

# Extract version from app.conf [launcher] stanza
VERSION=$(grep -A5 '\[launcher\]' "$APP_CONF" | grep -i '^version' | head -1 | sed 's/[^0-9.]//g')

if [ -z "$VERSION" ]; then
    # Try [id] stanza as fallback
    VERSION=$(grep -A5 '\[id\]' "$APP_CONF" | grep -i '^version' | head -1 | sed 's/[^0-9.]//g')
fi

if [ -z "$VERSION" ]; then
    echo "UNKNOWN — Could not parse version from $APP_CONF"
    exit 2
fi

# Compare version — vulnerable if < 1.2.1
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
MINOR=${MINOR:-0}
PATCH=${PATCH:-0}

if [ "$MAJOR" -lt 1 ] 2>/dev/null; then
    echo "VULNERABLE — Splunk MCP Server app version $VERSION is below 1.2.1 (CVE-2026-76404)"
    exit 1
elif [ "$MAJOR" -eq 1 ] && [ "$MINOR" -lt 2 ] 2>/dev/null; then
    echo "VULNERABLE — Splunk MCP Server app version $VERSION is below 1.2.1 (CVE-2026-76404)"
    exit 1
elif [ "$MAJOR" -eq 1 ] && [ "$MINOR" -eq 2 ] && [ "$PATCH" -lt 1 ] 2>/dev/null; then
    echo "VULNERABLE — Splunk MCP Server app version $VERSION is below 1.2.1 (CVE-2026-76404)"
    exit 1
else
    echo "PATCHED — Splunk MCP Server app version $VERSION is >= 1.2.1"
    exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: First, run an inventory query across your Splunk deployment to determine which search heads have the MCP Server app installed — most orgs won't have it. For any instance running a version below 1.2.1, upgrade the app to 1.2.1 from Splunkbase immediately; this is an app-level update that does not require a full Splunk platform maintenance window. If the app was installed for evaluation and is not in active use, remove it entirely. Per the noisgate mitigation SLA for HIGH severity, compensating controls (restrict port 8089 access, enforce MFA on admin accounts, deploy splunkd child-process monitoring) should be in place within 30 days. Per the noisgate remediation SLA, the patch (upgrade to 1.2.1) must be applied across all affected instances within 180 days, though given this is a simple app upgrade on a SIEM platform, there is no reason to wait — aim for completion this week.

Sources

  1. Splunk Advisory SVD-2026-0808
  2. CVE-2026-76404 — THREATINT
  3. SecurityWeek — Splunk Enterprise Update Patches Code Execution Vulnerability
  4. Splunk MCP Server Documentation
  5. HKCERT — Splunk Products Multiple Vulnerabilities
  6. CyberSecurityNews — Splunk Secure Gateway Deserialization PoC (related bug class)
  7. CISA Known Exploited Vulnerabilities Catalog
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.