الملخص
الثغرة: تصعيد امتيازات محلي غير مصادق عليه إلى SYSTEM عبر منفذ TCP 24801 الخاص بخفي Barrier
المورّد: debauchee (مشروع Barrier)
المنتج: Barrier 2.4.0 (الإصدار النهائي، 2021-11-01)
CWE: CWE-306: غياب المصادقة لوظيفة حرجة
الوصف
خدمة ويندوز الخاصة بـ Barrier (barrierd.exe)، التي تُثبَّت وتعمل بحساب LocalSystem، ترتبط بخادم تحكم IPC عبر TCP على 127.0.0.1:24801 دون أي مصادقة، أو تحقق من هوية العميل، أو ضوابط وصول. يمكن لأي عملية محلية، بغض النظر عن مستوى صلاحياتها، الاتصال بهذا المنفذ وإرسال رسالة kIpcCommand ("ICMD") تحتوي على سطر أوامر اعتباطي وعلامة "elevate" من بايت واحد. يؤدي ذلك إلى تكرار الرمز المميز الأساسي لنظام SYSTEM الخاص بـ winlogon.exe، وفجأة تحصل على كود يعمل بصلاحيات NT AUTHORITY\SYSTEM. وكما يظهر في إثبات المفهوم، يمكنك أيضًا التسبب في ظهور نافذة cmd.exe جديدة تعمل بصلاحيات SYSTEM.
خطوات إعادة الإنتاج
- احصل على تنفيذ كود محلي بصلاحيات منخفضة على مضيف ويندوز مثبت عليه وتعمل به خدمة Barrier (barrierd.exe، LocalSystem).
- افتح اتصال TCP إلى 127.0.0.1:24801.
- أرسل ترحيب IPC: b"IHEL" + b"\x00" (يُعرّف كـ kIpcClientGui).
- أرسل رسالة الأوامر: b"ICMD" + struct.pack(">I", len(cmd)) + cmd.encode("utf-8") + b"\x01" (elevate=1)، حيث cmd = " -d x /c " (لأمر لمرة واحدة) أو " -d x /k " (لتجنب حلقة إعادة الإطلاق الخاصة بمراقب الخفي إذا كان الحمولة نفسها لا تُبقي عملية حية، على سبيل المثال عند استخدام
start لإظهار نافذة مرئية). البادئة "-d x" مطلوبة لتجنب تعطل الخفي بسبب خلل إلغاء الإشارة NULL المرافق.
- خيط المراقبة في barrierd.exe يعُدّ جلسة وحدة التحكم النشطة، ويفتح winlogon.exe، ويكرر الرمز المميز الأساسي لنظام SYSTEM الخاص به.
- يقوم CreateProcessAsUser(systemToken, NULL, cmd, ...) بتشغيل أمر المهاجم بصلاحيات NT AUTHORITY\SYSTEM -- إذ يتجاهل محلل مفاتيح التبديل المتساهل الخاص بـ cmd.exe الضوضاء الافتتاحية "-d x" ويحترم بشكل صحيح "/c" و"/k" كـ "تشغيل ما تبقى كأمر".
- الاستمرارية: يتم حفظ الأمر المنفَّذ تلقائيًا وسيُعاد تنفيذه بصلاحيات SYSTEM عند كل إعادة تشغيل للخدمة أو إعادة تشغيل النظام دون أي إجراء إضافي من المهاجم، حتى يتم مسحه صراحةً بإرسال أمر فارغ أو بتعديل HKLM\SOFTWARE\Barrier مباشرة.
الكود المتأثر
- src/lib/ipc/IpcClientProxy.cpp - الأمر + بايت الترقية
- src/lib/ipc/IpcServer.cpp -- لا مصادقة على مسار قبول IPC
- src/lib/barrier/win32/DaemonApp.cpp -- يتجاهل النتائج ويحفظ الأمر في السجل HKLM\SOFTWARE\Barrier
- src/lib/platform/MSWindowsWatchdog.cpp -- يتم الحصول على الرمز المميز لنظام SYSTEM
الكود: https://github.com/debauchee/barrier/releases/tag/v2.4.0
إثبات المفهوم (POC) أو ارحل
تم تضمين إثبات مفهوم (POC) واحد لإثبات أن الأمر حقيقي.
POC -- Debauchee_Barrier_Privesc.py

الأثر
يمكن للمهاجم استغلال هذه الثغرة للحصول على صلاحيات على مستوى SYSTEM. والأسوأ من ذلك، أن الأمر المنفَّذ سيُطلق تلقائيًا عند إعادة التشغيل أو الإقلاع.
المعالجة المقترحة
Barrier غير مُصان ولن يحصل على إصلاح. بالنسبة للمؤسسات التي ما تزال تشغّل Barrier، يُنصح بالانتقال إلى إصدار مُصحح من Deskflow (الخليفة المُصان بنشاط) الذي يعالج الثغرة نفسها في CVE-2026-41477 / GHSA-6rx5-g478-775c.
الجدول الزمني للإفصاح
- 20 أبريل 2026 -- اكتُشفت. المشروع غير مُصان ولا يوجد أحد للإبلاغ إليه.
- 25 يوليو 2026 -- قررنا أنه من الجدير التواصل مع NoCVE لأن هذا المشروع قد يُفرَّع (forked).