
Nuclio Dashboard(NOP 模式)接受未经身份验证的 POST /api/functions。spec.handler 字段未经过路径验证,因此 ../../../../tmp/x.txt:handler 可通过 path.Join 逃逸构建临时目录,使攻击者能够以 root 身份向任意路径写入任意内容。(CVE-2026-52832,≤1.15.27)
Nuclio Dashboard(NOP 模式)接受未经认证的 POST /api/functions 请求。spec.handler 字段未经过路径校验,因此 ../../../../tmp/x.txt:handler 可通过 path.Join 逃逸构建临时目录,使攻击者能够以 root 身份将任意内容写入任意路径。(CVE-2026-52832, ≤1.15.27)
通过 spec.handler 中的路径遍历,在 Nuclio Dashboard 中实现未经认证的任意文件写入(以 root 身份)。
| CVE | CVE-2026-52832 |
| GHSA | GHSA-wpcj-rmv4-86qg |
| 受影响版本 | Nuclio ≤ 1.15.27 |
| 修复版本 | 1.16.5(PR #4143,commit 2a55d3a) |
| 漏洞类型 | CWE-22 路径遍历 → 任意文件写入 |
| CVSS | 7.5 高危(AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) |
默认使用 NOP 认证模式的 Nuclio Dashboard 接受未经认证的 POST /api/functions 请求。spec.handler 字段(module:entrypoint)未经过路径校验,因此类似 ../../../../tmp/x.txt:handler 的值可通过 path.Join(tempDir, moduleFileName) 逃逸构建临时目录,使攻击者能够将任意 base64 内容(spec.build.functionSourceCode)写入 Dashboard 容器中的任意路径。该进程以 uid=0 (root) 身份运行。
存在漏洞的目标:
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
已修复的对照组:
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
等待 curl http://127.0.0.1:8070/api/functions 返回 200 {}。
./poc/poc.sh http://127.0.0.1:8070 nuclio-vuln
预期结果:[+] SUCCESS,将在构建临时目录之外写入一个无害的标记文件,属主为 root。
对于已修复的镜像,相同请求会被拒绝,返回 HTTP 500 和 Handler module name resolves outside the build directory,且不会创建任何文件。
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
未认证的网络攻击者可以 root 身份在 Dashboard 容器的文件系统中创建或覆盖任意文件,并写入任意内容。
升级到 Nuclio ≥ 1.16.5,该版本在 pkg/processor/build/builder.go 的 os.WriteFile 之前加入了 common.IsPathWithinDir 检查。此外:启用认证而非 NOP 模式,限制对 Dashboard 的网络访问,并在不需要时避免挂载 Docker 套接字。
仅限用于授权的安全研究和防御目的。所附 PoC 仅写入一个无害的带时间戳的标记文件。请勿对你不拥有或无权限测试的系统运行。