
إثبات مفهوم لـ CVE-2026-89282: اختطاف ترتيب البحث عن DLL عبر وكيل في تثبيتات Apache Lounge على Windows، ما يؤدي إلى تصعيد الامتيازات إلى SYSTEM عند إعادة تشغيل الخدمة.
المؤلف: Ashish Kunwar (@D0rkerDevil)
التاريخ: 2026-10-17
CVE: CVE-2026-89282
CWE: CWE-427 (عنصر مسار بحث غير خاضع للتحكم) / CWE-732 (تعيين صلاحيات غير صحيح لمورد حرج)
CVSS 3.1: 7.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
تم الإصلاح في: Apache Lounge 2.4.68-260920 Win64 (20 سبتمبر 2026)
يُثبَّت توزيع Apache Lounge Windows لخادم Apache HTTP (قبل البناء 2.4.68-260920) بقوائم تحكم وصول (ACL) افتراضية غير آمنة تمنح BUILTIN\Users صلاحية الكتابة (WD + AD) على شجرة دليل التثبيت، بما في ذلك C:\Apache24\bin\. وبالاقتران مع ترتيب البحث القياسي عن DLL في Windows — الذي يُحمِّل من دليل التطبيق قبل System32 بالنسبة لملفات DLL غير الموجودة في مفتاح التسجيل KnownDLLs — يستطيع أي مستخدم محلي عادي زرع DLL وكيل ينفّذ تعليمات برمجية عشوائية بصلاحيات NT AUTHORITY\SYSTEM عند إعادة تشغيل خدمة Apache.
يوضح هذا الإثبات (PoC) الاستغلال الكامل: يزرع مستخدم منخفض الصلاحيات ملف VCRUNTIME140.dll وكيلًا يحتوي على 71 مُمرِّر تصدير PE في C:\Apache24\bin\. عند إعادة تشغيل Apache، يُحمِّل httpd.exe (الذي يعمل بصلاحيات LocalSystem) الوكيل، الذي يمرّر جميع الاستدعاءات المشروعة إلى DLL الحقيقي بينما ينفّذ حمولة بصلاحيات SYSTEM داخل DllMain. ويستمر Apache في تقديم الخدمة بشكل طبيعي — دون تعطّل ودون إخلال بالخدمة.
يُنشئ مثبّت Apache Lounge لنظام Windows المجلد C:\Apache24\ تحت C:\، والذي يرث افتراضيًا صلاحيات Authenticated Users: Modify على Windows. ولا يقوم المثبّت بتقوية قوائم ACL هذه. وهذا يمنح أي مستخدم محلي القدرة على كتابة ملفات جديدة في:
| الدليل | التأثير |
|---|---|
C:\Apache24\bin\ | اختطاف DLL — 21 ملف DLL نظاميًا قابلًا للاختطاف |
C:\Apache24\modules\ | حقن وحدات مباشر |
C:\Apache24\conf\ | التلاعب بالإعدادات |
C:\Apache24\htdocs\ | تعديل محتوى الويب |
تعمل خدمة Apache24 بصلاحيات LocalSystem (SYSTEM) مع AUTO_START، مما يجعل أي DLL يُحمَّل من دليل التطبيق يُنفَّذ عند أعلى مستوى صلاحيات في Windows.
# Cross-compile from Linux/macOS (mingw-w64)
x86_64-w64-mingw32-gcc -shared -o VCRUNTIME140.dll vcruntime140_hijack.c vcruntime140.def \
-Wl,--enable-stdcall-fixup -s
# Or compile on Windows (MSVC)
cl /LD vcruntime140_hijack.c /link /DEF:vcruntime140.def /OUT:VCRUNTIME140.dll
REM Create hard link to the real DLL for export forwarding
mklink /H "C:\Apache24\bin\vcruntime140_orig.dll" "C:\Windows\System32\VCRUNTIME140.dll"
REM Plant the proxy DLL
copy VCRUNTIME140.dll "C:\Apache24\bin\VCRUNTIME140.dll"
يُفعَّل ملف DLL المزروع عند إعادة تشغيل خدمة Apache التالية. على خادم إنتاجي، يحدث ذلك عبر:
httpd -k restart)بعد إعادة التشغيل، يُحمِّل httpd.exe ملف DLL الوسيط الخاص بنا بصلاحيات SYSTEM. تُنفِّذ حمولة DllMain ما يلي:
Administratorsهناك 21 ملف DLL نظاميًا يُحمِّلها httpd.exe غير موجودة في مفتاح التسجيل KnownDLLs ويمكن اختطافها من C:\Apache24\bin\:
| DLL | KnownDLL | قابل للاختطاف |
|---|---|---|
| VCRUNTIME140.dll | لا | نعم — تم استغلاله |
| ucrtbase.dll | لا | نعم |
| KERNELBASE.dll | لا | نعم |
| bcrypt.dll | لا | نعم |
| msvcp_win.dll | لا | نعم |
| CRYPTSP.dll | لا | نعم |
| rsaenh.dll | لا | نعم |
| CRYPTBASE.dll | لا | نعم |
| bcryptPrimitives.dll | لا | نعم |
| mswsock.dll | لا | نعم |
| napinsp.dll | لا | نعم |
| DNSAPI.dll | لا | نعم |
| IPHLPAPI.DLL | لا | نعم |
| winrnr.dll | لا | نعم |
| nlansp_c.dll | لا | نعم |
| wshbth.dll | لا | نعم |
| rasadhlp.dll | لا | نعم |
| fwpuclnt.dll | لا | نعم |
| ntdll.dll | لا | نعم |
| win32u.dll | لا | نعم |
| gdi32full.dll | لا | نعم |
لا يستطيع المستخدم العادي تشغيل إعادة تشغيل Apache ذاتيًا على إعداد Windows Server 2022 الافتراضي. تم اختبار أكثر من 16 طريقة بشكل شامل — وكلها فشلت:
TerminateProcess على معرّفات عمليات httpd → ACCESS_DENIEDnet stop/start Apache24 → يمنع SDDL صلاحيتي RP/WP لتسجيل الدخول التفاعلي/الخدميsc stop Apache24 → Access Deniedhttpd -k restart → تم رفض الوصول إلى SCMSeShutdownPrivilege غير مُمنوحةschtasks /ru SYSTEM → يتطلب صلاحيات المسؤوليأتي التشغيل من صيانة الخادم الروتينية، وهي حتمية على أي نظام إنتاجي.
الفوري (يدويًا):
icacls "C:\Apache24" /remove:g "BUILTIN\Users" /T
icacls "C:\Apache24" /grant "BUILTIN\Users:(OI)(CI)(RX)" /T
دائم: التحديث إلى Apache Lounge 2.4.68-260920 أو أحدث، والذي يأتي مع قوائم ACL مُصحّحة للمُثبّت.
الدفاع في العمق: نشر سياسات تخفيف العمليات لتقييد تحميل DLL على الملفات الثنائية الموقّعة.
| الملف | الوصف |
|---|---|
vcruntime140_hijack.c | مصدر DLL الوكيل — حمولة DllMain + إثبات المفهوم |
vcruntime140.def | تعريفات إعادة توجيه التصدير (71 تصديرًا → vcruntime140_orig.dll) |
deploy_hijack.bat | سكربت نشر آلي |
| التاريخ | الحدث |
|---|---|
| 2026-09-20 | إصدار Apache Lounge للإصدار 2.4.68-260920 مع إصلاح ACL |
| 2026-09-22 | نشر CVE-2026-89282 بواسطة CERT/CC |
| 2026-10-16 | اكتشاف مستقل + إثبات مفهوم كامل (هذا العمل) |
| 2026-10-17 | تأكيد أنه مكرر لـ CVE-2026-89282؛ الإصدار العام |
يُصدر إثبات المفهوم هذا لأغراض تعليمية واختبار أمني مُصرّح به فقط. رخصة MIT.
اكتُشف ووُثّق بشكل مستقل بواسطة @D0rkerDevil. طُوّرت سلسلة الاستغلال الكاملة قبل العلم بـ CVE-2026-89282.