
تقبل لوحة تحكم Nuclio (وضع NOP) طلبات POST غير المصادق عليها إلى /api/functions. حقل spec.handler غير مُتحقق من مساره، لذا فإن ../../../../tmp/x.txt:handler يهرب من دليل البناء المؤقت عبر path.Join، مما يسمح للمهاجم بكتابة محتوى عشوائي إلى أي مسار كجذر. (CVE-2026-52832، ≤1.15.27)
تقبل لوحة تحكم Nuclio (وضع NOP) طلبات POST /api/functions غير المصادق عليها. حقل spec.handler غير مُتحقق من مساره، لذا فإن قيمة مثل ../../../../tmp/x.txt:handler تهرب من مجلد البناء المؤقت عبر path.Join، مما يسمح للمهاجم بكتابة محتوى تعسفي إلى أي مسار بصلاحيات root. (CVE-2026-52832، ≤1.15.27)
كتابة ملفات تعسفية غير مصادق عليها (بصلاحيات root) في لوحة تحكم Nuclio عبر اجتياز المسار في 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 عالية (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) |
تقبل لوحة تحكم Nuclio في وضع المصادقة الافتراضي NOP طلبات POST /api/functions دون مصادقة. حقل spec.handler (module:entrypoint) غير مُتحقق من مساره، لذا فإن قيمة مثل ../../../../tmp/x.txt:handler تهرب من مجلد البناء المؤقت عبر path.Join(tempDir, moduleFileName)، مما يسمح للمهاجم بكتابة محتوى base64 تعسفي (spec.build.functionSourceCode) إلى أي مسار داخل حاوية لوحة التحكم. تعمل العملية بصلاحيات 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.
قم بالترقية إلى Nuclio ≥ 1.16.5، والتي تضيف common.IsPathWithinDir قبل os.WriteFile في pkg/processor/build/builder.go. بالإضافة إلى ذلك: فعّل المصادقة بدلاً من NOP، وقيّد الوصول الشبكي إلى لوحة التحكم، وتجنب تركيب Docker socket عندما لا يكون ذلك ضروريًا.
لأغراض البحث الأمني المصرح به والأغراض الدفاعية فقط. يكتب PoC المرفق ملف علامة غير ضار يحمل طابعًا زمنيًا فقط. لا تشغّله ضد أنظمة لا تملكها أو ليس لديك إذن باختبارها.