🔍 Contexte
Publié le 29 juin 2026 sur GitHub par le chercheur Fady Oueslati (ReactiveZero Security Research), ce dépôt documente la vulnérabilité CVE-2026-20251 affectant Splunk Secure Gateway (SSG), avec un score CVSS 8.8 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). Un patch est disponible.
🐛 Vulnérabilité
La faille repose sur une désérialisation non sécurisée via jsonpickle dans le composant SSG. Le flux d’exploitation est le suivant :
- Un attaquant authentifié (faibles privilèges) écrit un document malveillant dans la collection KV Store
mobile_alertsvia l’API REST Splunk. - SSG lit ce document dans
alerts_request_processor.pyet le soumet au validateurcheck_alert_data_valid_json(). - Le validateur court-circuite dès qu’il rencontre la clé
py/objectavec une valeur commençant parspacebridgeapp, retournantTruesans inspecter les clés suivantes. - Le document est ensuite passé à
jsonpickle.decode(..., safe=True), qui exécute le gadgetpy/reduceprésent dans la clénotification— le flagsafe=Truene bloque pas ce chemin de code.
🎯 Impact
- Exécution de code arbitraire en tant que compte de service Splunk
- Nécessite uniquement un login Splunk valide à faibles privilèges
- Confidentialité, intégrité et disponibilité toutes compromises
📦 Versions affectées
| Branche | Corrigé dans |
|---|---|
| SSG 3.9.x | 3.9.20 |
| SSG 3.10.x | 3.10.6 |
| SSG 3.8.x | 3.8.67 |
| Splunk Enterprise | 10.0.7 / 10.2.4 / 10.4.0+ |
Instance testée : SSG 3.9.19 sur Splunk Enterprise 10.0.6 (macOS x86_64).
🔬 Cause racine
- Fichier sink :
bin/spacebridgeapp/request/alerts_request_processor.py→ appel àjsonpickle.decode() - Fichier validateur défaillant :
bin/spacebridgeapp/rest/devices/alert_helper.py→ retour prématuré surpy/object
📎 Note sur CVE-2026-20253
Le même lot d’advisory inclut CVE-2026-20253 (CVSS 9.8, création de fichier arbitraire non authentifiée via un endpoint PostgreSQL sidecar), non reproductible sur la build macOS x86_64 testée car le composant sidecar PostgreSQL n’y est pas présent.
📄 Type d’article
Publication de recherche technique avec PoC (benin : uname -a), analyse de cause racine et documentation de la chaîne d’exploitation complète.
🧠 TTPs et IOCs détectés
TTP
- T1190 — Exploit Public-Facing Application (Initial Access)
- T1059.006 — Command and Scripting Interpreter: Python (Execution)
- T1211 — Exploitation for Defense Evasion (Defense Evasion)
IOC
- CVEs :
CVE-2026-20251— NVD · CIRCL - CVEs :
CVE-2026-20253— NVD · CIRCL - Fichiers :
poc_cve_2026_20251.py - Fichiers :
alerts_request_processor.py - Fichiers :
alert_helper.py - Chemins :
/Applications/Splunk/etc/apps/splunk_secure_gateway/lib - Chemins :
bin/spacebridgeapp/request/alerts_request_processor.py - Chemins :
bin/spacebridgeapp/rest/devices/alert_helper.py
Malware / Outils
- jsonpickle (tool)
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ github.com — source non référencée (0pts)
- ✅ 6609 chars — texte complet (fulltext extrait) (15pts)
- ✅ 8 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 3 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ 0/2 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://github.com/reactivezero/CVE-2026-20251