
Nuclio Dashboard (modo NOP) aceita POST /api/functions não autenticado. O campo spec.handler não é validado quanto ao caminho, então ../../../../tmp/x.txt:handler escapa do tempdir de build via path.Join, permitindo que um atacante grave conteúdo arbitrário em qualquer caminho como root. (CVE-2026-52832, ≤1.15.27)
Nuclio Dashboard (modo NOP) aceita POST /api/functions não autenticado. O campo spec.handler não é validado quanto ao caminho, então ../../../../tmp/x.txt:handler escapa do diretório temporário de build via path.Join, permitindo que um atacante grave conteúdo arbitrário em qualquer caminho como root. (CVE-2026-52832, ≤1.15.27)
Escrita arbitrária de arquivos não autenticada (como root) no Nuclio Dashboard via path traversal em spec.handler.
| CVE | CVE-2026-52832 |
| GHSA | GHSA-wpcj-rmv4-86qg |
| Afetado | Nuclio ≤ 1.15.27 |
| Corrigido | 1.16.5 (PR #4143, commit 2a55d3a) |
| Classe | CWE-22 Path Traversal → Escrita Arbitrária de Arquivos |
| CVSS | 7.5 Alta (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) |
O Nuclio Dashboard no modo de autenticação NOP padrão aceita POST /api/functions sem autenticação. O campo spec.handler (module:entrypoint) não é validado quanto ao caminho, então um valor como ../../../../tmp/x.txt:handler escapa do diretório temporário de build via path.Join(tempDir, moduleFileName), permitindo que um atacante grave conteúdo arbitrário em base64 (spec.build.functionSourceCode) em qualquer caminho no contêiner do Dashboard. O processo roda como uid=0 (root).
Alvo vulnerável:
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
Controle corrigido:
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
Aguarde até que curl http://127.0.0.1:8070/api/functions retorne 200 {}.
./poc/poc.sh http://127.0.0.1:8070 nuclio-vuln
Esperado: [+] SUCCESS um arquivo marcador inofensivo é gravado fora do diretório temporário de build, de propriedade do root.
Contra a imagem corrigida, a mesma solicitação é rejeitada com HTTP 500 e Handler module name resolves outside the build directory, e nenhum arquivo é criado.
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
Um atacante de rede não autenticado pode criar ou sobrescrever qualquer arquivo com conteúdo arbitrário no sistema de arquivos do contêiner do Dashboard como root.
Atualize para o Nuclio ≥ 1.16.5, que adiciona common.IsPathWithinDir antes de os.WriteFile em pkg/processor/build/builder.go. Além disso: habilite a autenticação em vez de NOP, restrinja o acesso de rede ao Dashboard e evite montar o soquete Docker onde não for necessário.
Apenas para pesquisa de segurança autorizada e fins defensivos. O PoC incluído grava apenas um arquivo marcador inofensivo com carimbo de data/hora. Não execute contra sistemas que você não possui ou sem permissão para testar.