
Nuclio Dashboard(NOP 모드)는 인증되지 않은 POST /api/functions 요청을 허용합니다. spec.handler 필드는 경로 검증이 이루어지지 않아, ../../../../tmp/x.txt:handler가 path.Join을 통해 빌드 임시 디렉터리를 벗어날 수 있으며, 이를 통해 공격자가 루트 권한으로 임의의 경로에 임의의 내용을 작성할 수 있습니다. (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) |
Nuclio Dashboard는 기본 NOP 인증 모드에서 인증 없이 POST /api/functions 요청을 수락합니다. spec.handler 필드(module:entrypoint)는 경로 검증이 이루어지지 않으므로 ../../../../tmp/x.txt:handler 같은 값이 path.Join(tempDir, moduleFileName)을 통해 빌드 임시 디렉터리를 벗어날 수 있으며, 공격자는 spec.build.functionSourceCode의 임의 base64 내용을 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
인증되지 않은 네트워크 공격자는 Dashboard 컨테이너 파일시스템의 모든 파일을 root 권한으로 임의의 내용으로 생성하거나 덮어쓸 수 있습니다.
Nuclio ≥ 1.16.5로 업그레이드하십시오. 해당 버전은 pkg/processor/build/builder.go의 os.WriteFile 앞에 common.IsPathWithinDir 검사를 추가합니다. 추가로 NOP 대신 인증을 활성화하고, Dashboard에 대한 네트워크 접근을 제한하며, 필요하지 않은 경우 Docker 소켓을 마운트하지 마십시오.
승인된 보안 연구 및 방어 목적으로만 사용하십시오. 포함된 PoC는 무해한 타임스탬프 마커 파일만 작성합니다. 소유하지 않았거나 테스트 권한이 없는 시스템에서 실행하지 마십시오.