
PoC لـ CVE-2026-58635: تصعيد الامتيازات المحلي عبر برايل قارئ الشاشة في ويندوز
إثبات مفهوم لثغرة CVE-2026-58635، وهي ثغرة حقن أوامر في طريقة برايل الخاصة بـ Windows Narrator. يمكن لمستخدم محلي موثّق استغلال معلمة BrlAPI قابلة للكتابة لجعل خدمة BRLTTY المميزة تشغّل برنامجًا عشوائيًا.
تصنف Microsoft المشكلة على أنها مهمة بدرجة CVSS 3.1 مقدارها 7.8
(CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) وتصنفها ضمن CWE-77.
هذا المستودع مخصص فقط للاختبارات المصرح بها في بيئة معزولة. لا تقم بتشغيله على أنظمة إنتاج أو أنظمة لا تملكها أو تديرها.
يُظهر إثبات المفهوم المسار التالي:
مستخدم عادي
-> يبدأ خدمة BrlAPI المتاحة محليًا
-> يتصل بـ localhost:0 مع auth=none
-> يكتب المعلمة العالمية BrlAPI رقم 29 (جدول برايل الأدبي)
-> BRLTTY تفسر مسارًا تنفيذيًا كجدول انكماش خارجي
-> BRLTTY تشغّل البرنامج المُقدّم كخدمة محلية (LocalService)
-> مرحلة اختيارية للرمز المميز SeImpersonate
-> موجه أوامر SYSTEM تفاعلي
الجزء الخاص بـ CVE ينتهي عند التنفيذ التعسفي كخدمة LocalService.
على إعدادات Windows التي تم اختبارها، يحمل هذا الرمز المميز امتياز SeImpersonatePrivilege، لذا يستخدم العرض التوضيحي المضمن بشكل اختياري SigmaPotato للحصول على رمز SYSTEM وتشغيل واجهة مرئية في جلسة وحدة التحكم النشطة.
يُظهر BRLTTY 6.4.1 BRLAPI_PARAM_LITERARY_BRAILLE_TABLE كمعلمة عالمية وقابلة للكتابة. يمرر الخادم السلسلة المُقدّمة عبر محمل جدول الانكماش الخاص به. على Windows، يُعامل المسار الذي يكون امتداده موجودًا في PATHEXT كبرنامج انكماش خارجي ويتم تشغيله عبر مشغل أوامر المضيف في BRLTTY.
يقوم المشغل بتوحيد مسار Windows عادي مثل C:\lab\bin\localservice_stage.exe إلى صيغة الخط المائل الأمامي التي يتوقعها هذا الفرع لمعالجة المسارات في BRLTTY/MinGW. لا يتم تضمين أي ملف تعريف مستخدم، أو حرف محرك أقراص، أو دليل Windows، أو اسم حساب في إثبات المفهوم.
يجب تثبيت الإمكانية الاختيارية Accessibility.Braille حتى يكون سطح الهجوم المختبر موجودًا. يسجل سجل Microsoft CNA عدة فروع من عملاء وخوادم Windows كمتأثرة أسفل إصداراتها المُصلحة في يوليو 2026. الأمثلة الشائعة تشمل:
أرقام البناء وحدها هي إشارة فحص أولية، وليست بديلاً عن الإرشادات الرسمية من البائع وجرد المكونات المثبتة. استخدم أداة الفحص للقراءة فقط المضمنة:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
تقدم الأداة المعلومات التالية:
brlapi.dll و brltty.exe؛أداة الفحص لا تبدأ خدمة BrlAPI، ولا تكتب المعلمة 29، ولا تنفذ أي حمولة.
.
├── bin/ الملفات الثنائية المُجمعة لإثبات المفهوم و SigmaPotato
├── scripts/
│ ├── Check-Vulnerability.ps1 فحص التعرض/البناء للقراءة فقط
│ ├── Clear-Results.cmd إزالة ملفات النتائج المُنشأة
│ ├── Get-SigmaPotato.ps1 جلب الأداة المساعدة من المصدر العلوي والتحقق من التجزئة
│ ├── Prepare-Lab.ps1 تثبيت الميزة الاختيارية وتعيين قوائم التحكم بالوصول للمختبر
│ └── Run-PoC.cmd عرض توضيحي كامل للمستخدم العادي من البداية للنهاية
├── src/
│ ├── brlapi_trigger.cpp عميل BrlAPI وكتابة المعلمة 29
│ ├── localservice_stage.cpp إثبات هوية الخدمة المحلية وسلسلة اختيارية
│ ├── path_util.h أدوات مساعدة لمسار وقت التشغيل
│ └── system_shell_launcher.cpp
├── third_party/SigmaPotato/ الإصدار، التجزئة، الترخيص، والإسناد
├── Makefile
├── LICENSE
├── SHA256SUMS
└── NOTICE
إثبات المفهوم الأصلي هو C++17 ويُبنى باستخدام سلسلة أدوات MinGW-w64 x86-64.
على Debian أو Ubuntu:
sudo apt install make g++-mingw-w64-x86-64
make
ينشئ البناء الملفات التالية:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
للحصول على النسخة الدقيقة من SigmaPotato المستخدمة في العرض التوضيحي الكامل، قم بتشغيل الأمر التالي من Windows:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
يقوم سكريبت التنزيل بتثبيت الإصدار v1.2.6 ويتحقق من SHA-256:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
من موجه PowerShell برفع صلاحيات في جذر المستودع:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
يقوم هذا السكريبت بما يلي:
Accessibility.Braille~~~~0.0.1.0 في حال عدم وجوده؛bin\results.إذا كانت الإمكانية مرحلة ولكن الخدمة غير مسجلة بعد، قم بإعادة التشغيل وتشغيل سكريبت التحضير مرة أخرى.
سجل الدخول باستخدام أي حساب محلي أو نطاقي ليس عضوًا في مجموعة المسؤولين المحليين. المستودع لا ينشئ مستخدمين أو يعيّن كلمات مرور.
عادةً ما تكتشف منتجات الأمان أدوات إثبات مفهوم انتحال الرمز المميز. قم بتكوين المختبر المعزول وفقًا لسياسة الاختبار في مؤسستك قبل وضع أو تشغيل الملفات الثنائية. لا تقم بإضعاف حماية نقطة النهاية على جهاز عمل عادي.
من موجه أوامر غير مرتفع الصلاحيات:
scripts\Run-PoC.cmd
يشمل الإخراج المتوقع:
Connection: descriptor=<number> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
تقوم المرحلة الاختيارية الثانية بتسجيل مخرجاتها في bin\results\escalation.log. عند النجاح، يحتوي bin\results\system_shell_status.txt على CREATED=1، وتُفتح نافذة جديدة بعنوان CVE-2026-58635 SYSTEM SHELL. في تلك النافذة:
whoami
يجب أن يعيد:
nt authority\system
توضع جميع الأدلة المُنشأة في bin\results:
احذف النتائج المُنشأة باستخدام:
scripts\Clear-Results.cmd
قم بتثبيت تحديث الأمان لشهر يوليو 2026 المطبق أو أي تحديث تراكمي أحدث. بالنسبة لـ Windows 11 24H2 و 25H2، تصدر Microsoft المراجعات المُصلحة في KB5101650 (26100.8875 و 26200.8875). إذا لم تكن هناك حاجة لدعم برايل، فإن إزالة الإمكانية الاختيارية تزيل أيضًا سطح الهجوم هذا:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
بعد الإصلاح، أعد تشغيل Check-Vulnerability.ps1 وتأكد من أن النظام يلبي المراجعة المُصلحة أو أن المكون غائب.
| فرع المنتج | متأثر محتمل أسفل | المستوى المُصلح المعروف |
|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 أو أحدث |
| Windows 10 21H2 | 19044.7548 | 19044.7548 أو أحدث |
| Windows 10 22H2 | 19045.7548 | 19045.7548 أو أحدث |
| Windows Server 2022 | 20348.5386 | 20348.5386 أو أحدث |
| Windows 11 24H2 | 26100.8875 | 26100.8875 أو أحدث |
| Windows 11 25H2 | 26200.8875 | 26200.8875 أو أحدث |
| Windows 11 26H1 | 28000.2525 | 28000.2525 أو أحدث |
| الملف | الغرض |
|---|
localservice_identity.txt | اسم المستخدم، SID، ومعرف العملية للمرحلة التي أطلقتها CVE |
localservice_whoami.txt | مجموعات الرمز المميز والامتيازات الكاملة |
escalation.log | مخرجات الأداة المساعدة لانتحال الرمز المميز الاختيارية |
escalation_status.txt | حالة إنشاء/خطأ/خروج العملية المساعدة |
system_shell_status.txt | نتيجة إنشاء واجهة الجلسة النشطة |