
Nuclio Dashboard (modo NOP) acepta POST /api/functions sin autenticación. El campo spec.handler no está validado como ruta, por lo que ../../../../tmp/x.txt:handler escapa del directorio temporal de compilación mediante path.Join, permitiendo a un atacante escribir contenido arbitrario en cualquier ruta como root. (CVE-2026-52832, ≤1.15.27)
Nuclio Dashboard (modo NOP) acepta POST /api/functions sin autenticación. El campo spec.handler no está validado como ruta, por lo que ../../../../tmp/x.txt:handler escapa del directorio temporal de compilación mediante path.Join, permitiendo a un atacante escribir contenido arbitrario en cualquier ruta como root. (CVE-2026-52832, ≤1.15.27)
Escritura arbitraria de archivos no autenticada (como root) en Nuclio Dashboard mediante travesía de directorios en spec.handler.
| CVE | CVE-2026-52832 |
| GHSA | GHSA-wpcj-rmv4-86qg |
| Afectado | Nuclio ≤ 1.15.27 |
| Corregido | 1.16.5 (PR #4143, commit 2a55d3a) |
| Clase | CWE-22 Travesía de directorios → Escritura arbitraria de archivos |
| CVSS | 7.5 Alta (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) |
Nuclio Dashboard en el modo de autenticación NOP predeterminado acepta POST /api/functions sin autenticación. El campo spec.handler (module:entrypoint) no se valida como ruta, por lo que un valor como ../../../../tmp/x.txt:handler escapa del directorio temporal de compilación mediante path.Join(tempDir, moduleFileName), permitiendo a un atacante escribir contenido base64 arbitrario (spec.build.functionSourceCode) en cualquier ruta del contenedor del Dashboard. El proceso se ejecuta como uid=0 (root).
Objetivo vulnerable:
docker run -d --name nuclio-vuln -p 127.0.0.1:8070:8070 \
-v /var/run/docker.sock:/var/run/docker.sock \
quay.io/nuclio/dashboard:1.15.27-amd64
Control corregido:
docker run -d --name nuclio-patched -p 127.0.0.1:8071:8070 \
-v /var/run/docker.sock:/var/run/docker.sock \
quay.io/nuclio/dashboard:1.16.5-amd64
Espere hasta que curl http://127.0.0.1:8070/api/functions devuelva 200 {}.
./poc/poc.sh http://127.0.0.1:8070 nuclio-vuln
Esperado: [+] SUCCESS se escribe un archivo marcador inocuo fuera del directorio temporal de compilación, propiedad de root.
Contra la imagen corregida, la misma solicitud se rechaza con HTTP 500 y Handler module name resolves outside the build directory, y no se crea ningún archivo.
docker run -d --name nuclio-vuln -p 127.0.0.1:8070:8070
-v /var/run/docker.sock:/var/run/docker.sock
quay.io/nuclio/dashboard:1.15.27-amd64
curl http://127.0.0.1:8070/api/functions # expect: {}
chmod +x poc.sh ./poc.sh http://127.0.0.1:8070 nuclio-vuln
Un atacante de red no autenticado puede crear o sobrescribir cualquier archivo con contenido arbitrario en el sistema de archivos del contenedor del Dashboard como root.
Actualice a Nuclio ≥ 1.16.5, que añade common.IsPathWithinDir antes de os.WriteFile en pkg/processor/build/builder.go. Además: habilite la autenticación en lugar de NOP, restrinja el acceso de red al Dashboard y evite montar el socket de Docker cuando no sea necesario.
Solo para investigación de seguridad autorizada y fines defensivos. El PoC incluido escribe únicamente un archivo marcador inofensivo con marca de tiempo. No lo ejecute contra sistemas que no sean suyos o sobre los que no tenga permiso para realizar pruebas.