Remote Code Execution in Splunk Secure Gateway via jsonpickle Deserialization
CVE-2026-20251 is a high-severity authenticated remote code execution vulnerability affecting Splunk Enterprise versions below 10.2.4, 10.0.7, 9.4.12, and 9.3.13; Splunk Cloud Platform versions below 10.3.2512.12, 10.2.2510.14, 10.1.2507.22, and 9.3.2411.132; and Splunk Secure Gateway versions below 3.10.6, 3.9.20, and 3.8.67. The flaw exists in the Splunk Secure Gateway alert processing pipeline, where attacker-controlled documents from the App Key Value Store, specifically the mobile_alerts collection, are deserialized using the Python jsonpickle library. Because jsonpickle.decode() can reconstruct arbitrary Python objects from crafted JSON, unsafe deserialization can lead to code execution. Supporting reporting indicates a validator intended to block dangerous content can be bypassed by placing an allowed py/object key first, causing the validator to return success before inspecting sibling malicious keys such as py/reduce. When the crafted KV Store document is later processed by Splunk Secure Gateway, the malicious object is reconstructed and arbitrary OS commands can be executed on the Splunk host.
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
Repository is a small proof-of-concept package for CVE-2026-20251 affecting Splunk Secure Gateway. It contains one executable Python PoC (poc_cve_2026_20251.py) plus supporting documentation in README.md, hashnode-article.md, and engagement.json. The PoC is not a full end-to-end remote exploit client; instead it demonstrates the two critical exploit primitives that compose the real attack chain: (1) bypass of Splunk Secure Gateway's check_alert_data_valid_json() validator by placing an allowed top-level 'py/object' key first and hiding a malicious sibling 'notification' value containing a py/reduce gadget, and (2) execution of that gadget through jsonpickle.decode(..., safe=True), proving the safe flag does not block py/reduce/function/object restoration paths. The exploit capability described by the repository is authenticated remote code execution on the Splunk host as the Splunk service account, achieved by writing a crafted document into the 'mobile_alerts' KV Store collection via Splunk's REST/API workflow and waiting for Secure Gateway to deserialize it. The included payload is intentionally benign: subprocess.check_output(['uname','-a']) to print system information. Fingerprintable targets and context include the local test host 127.0.0.1, Splunk management port 8089, KV Store/mongod port 8191, the SSG bundled library path /Applications/Splunk/etc/apps/splunk_secure_gateway/lib, and vulnerable source files under bin/spacebridgeapp/. Overall, this is a credible, non-weaponized Python POC focused on vulnerability verification and exploit-chain explanation rather than automated exploitation.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
14 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
A high-severity authenticated remote code execution vulnerability in Splunk Secure Gateway caused by unsafe jsonpickle deserialization and a validator bypass in the alert processing pipeline.
A Splunk Secure Gateway and App Key Value Store insecure deserialization vulnerability caused by use of jsonpickle. An attacker with low-privilege access who can write crafted payloads to KV Store can achieve code execution.
A remote code execution vulnerability in Splunk Enterprise's Splunk Secure Gateway application caused by unsafe deserialization of App Key Value Store data through the jsonpickle Python library.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.