
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)
Неаутентифицированная произвольная запись файлов (от имени root) в Nuclio Dashboard через обход пути в spec.handler.
| 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 High (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), позволяя атакующему записать произвольное содержимое в кодировке 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 # ожидается: {}
chmod +x poc.sh ./poc.sh http://127.0.0.1:8070 nuclio-vuln
Неаутентифицированный сетевой атакующий может создать или перезаписать любой файл с произвольным содержимым в файловой системе контейнера Dashboard от имени root.
Обновитесь до Nuclio ≥ 1.16.5, в котором добавлена проверка common.IsPathWithinDir перед os.WriteFile в pkg/processor/build/builder.go. Кроме того: включите аутентификацию вместо NOP, ограничьте сетевой доступ к Dashboard и не монтируйте Docker-сокет, если в нём нет необходимости.
Только для авторизованных исследований в области безопасности и защитных целей. Прилагаемый PoC записывает только безвредный файл-маркер с меткой времени. Не запускайте его против систем, которыми вы не владеете или на тестирование которых у вас нет разрешения.