
مدقق CVE-2026-41089: كشف غير مصادق وغير مدمر لتجاوز سعة المخزن المؤقت للمكدس في Netlogon CLDAP (CVSS 9.8). يبلغ ما إذا كان مجال وحدة تحكم المجال طويلًا بما يكفي للانهيار، دون إرسال الفائض. التحليل الذي تم التحقق منه ثنائيًا والذي أخطأت فيه PoCs العامة.
LongLogon هو فحص مسبق غير مصادق عليه وغير مدمر لـ CVE-2026-41089، وهو تجاوز سعة المخزن المؤقت للمكدس قبل المصادقة في خدمة Netlogon في ويندوز. بدون بيانات اعتماد، وبدون إرسال التجاوز، يبلغ عما إذا كان اسم نطاق DNS لوحدة تحكم المجال طويلًا بما يكفي لتعطل الخلل.

في وحدة تحكم مجال ذات اسم عادي، لا. إن إثباتات الاستغلال (exploit PoCs) العامة لهذا CVE (الأكثر نجمة، والنسخ التي تبعته) تدّعي تعطيل وحدة تحكم مجال عن طريق إرسال اسم مستخدم طويل. إنها لا تعطل وحدة تحكم مجال غير مصححة على نطاق عادي، لسببين تم تأكيدهما من خلال مقارنة ملف netlogon.dll قبل التصحيح وبعده وإعادة إنتاج التعطل في مختبر:
0x16)، مما يوجه إلى BuildSamLogonResponseEx الآمنة الحدود. يتم الوصول إلى BuildSamLogonResponse القديمة الضعيفة فقط عند مسح هذا البت. يستخدم LongLogon القيمة 0x02.User الذي يتحكم فيه المهاجم محدد بـ 130 حرفًا عريضًا بواسطة الثنائي، وهو أقل بكثير من المخزن المؤقت 528 بايت. البايتات التي تنقل المؤشر إلى ملف تعريف المكدس (stack cookie) هي أسماء DNS الطويلة الخاصة بالخادم نفسه، والتي لا يغيرها طول الحمولة.لذا يفشل الاستغلال الشائع على نطاق عادي، ويتم تفسير انتهاء مهلة recv (التي تسببها حزمة UDP مفردة ضائعة على وحدة تحكم مجال سليمة) خطأً على أنها تعطل. LongLogon ليس واحدًا من تلك الاستغلالات: إنه التحليل المصحح والمؤكد ثنائيًا، والمُقدم كمدقق غير مدمر لا يرسل التجاوز أبدًا. عتبة التعطل المؤكدة في المختبر والآلية الكاملة أدناه.
تجاوز سعة مخزن مؤقت قائم على المكدس (CWE-121، CVSS 9.8) في مسار محدد موقع وحدة تحكم مجال Netlogon NlGetLocalPingResponse → BuildSamLogonResponse → NetpLogonPutUnicodeString. عند الرد على اختبار CLDAP أو MAILSLOT، تقوم وحدة تحكم المجال بتسلسل أسماء الغابة والنطاق والمضيف الخاصة بها بالإضافة إلى سلسلة صغيرة يتحكم بها المهاجم في مخزن مؤقت ثابت للمكدس بحجم 528 بايت (ushort local_258[264])، مع وجود ملف تعريف المكدس (stack cookie) بعده مباشرة. عندما تكون أسماء DNS الخاصة بالخادم نفسه طويلة بما يكفي، يصل الكتابة التراكمية إلى نهاية المخزن المؤقت، ويؤدي المُنهي L'\0' الزائد إلى تجاوز ملف التعريف، ويتم تشغيل __report_gsfailure، ويموت lsass.exe مع STATUS_STACK_BUFFER_OVERRUN (0xc0000409). يتم إعادة تشغيل وحدة تحكم المجال. غير مصادق عليه، حزمة UDP واحدة.
حيث أساء Zerologon (CVE-2020-1472) استخدام تحدي صفر بالكامل، فإن LongLogon يسيء استخدام اسم نطاق طويل بشكل مرضي.
longlogon.py غير مدمر. يرسل اختبارات CLDAP حميدة مع حقل User ضئيل، ويقيس استجابة الباني القديمة، ويبلغ عما إذا كان شرط التجاوز المسبق متحققًا: هل نطاق وحدة تحكم المجال هذه طويل بما يكفي لتعطل وحدة تحكم مجال غير مصححة.
لا تقوم الأداة بما يلي:
معرفة أي من وحدات تحكم المجال لديك مصححة فعليًا يتطلب فحص إصدار معتمد (مسؤول) عبر الأسطول. هذا هو نوع الأشياء التي تؤتمتها ADscan في مهمة (انظر أدناه).
البايتات الوحيدة التي يتحكم فيها المهاجم والتي تصل إلى المخزن المؤقت تأتي من مرشح CLDAP User، محدد بـ 130 حرفًا عريضًا، وهو أقل بكثير من المخزن المؤقت 528 بايت بمفردها. البايتات التي تحمل المؤشر إلى ملف التعريف هي أسماء الخادم نفسه، التي لا يتحكم فيها المهاجم. لا يمكن تعطيل وحدة تحكم مجال ذات اسم افتراضي (corp.local). لهذا السبب تقيّمها مايكروسوفت بأنها "الاستغلال أقل احتمالاً" (Exploitation Less Likely). في المختبر، كان الحد الأدنى لطول اسم نطاق DNS لتعطيل Windows Server 2016 (باسم مضيف مكون من 7 أحرف) هو 98 حرفًا.
باستخدام uv، بدون إعداد مسبق. يتم الإعلان عن التبعيات بشكل مضمن (PEP 723)، لذا يقوم هذا بتثبيت rich تلقائيًا في بيئة مؤقتة:
uv run longlogon.py <dc-ip> <dc-dns-domain>
أو باستخدام pip:
pip install rich
python3 longlogon.py <dc-ip> <dc-dns-domain>
يجب أن يتطابق نطاق DNS مع ما تقدمه وحدة تحكم المجال. إنه ليس سرًا: rootDSE و DNS العكسي و CLDAP نفسه كلها تكشفه. المخرجات هي حكم الشرط المسبق بالإضافة إلى حسابات ملء المخزن المؤقت لكل حقل.
توجيه NtVer مهم. يتم الوصول إلى BuildSamLogonResponse القديمة الضعيفة فقط عندما يكون (NtVer & 0xc) == 0 و (NtVer & 0x2) != 0. محاولات الاستغلال العامة التي ترسل NtVer=0x16 أو 0x06 تضبط بت 2 (0x4) وتصيب BuildSamLogonResponseEx الآمنة الحدود، لذا لا تؤدي أبدًا إلى ظهور الخلل. يستخدم LongLogon القيمة 0x02.
وحدات تحكم مجال Windows Server غير المصححة، من 2012 R2 حتى 2025. أول الإصدارات المصححة:
لأبحاث الأمن المصرح بها والتحقق الدفاعي فقط. هذا المستودع يوفر مدقق الشرط المسبق غير المدمر، وليس معطلاً مسلحًا، لـ CVE نشط الاستغلال وقابل للانتشار. قم بتصحيح وحدات تحكم المجال الخاصة بك.
بحث بواسطة Yeray Martín Domínguez · ADscan · CVE-2026-41089 · Netlogon · Active Directory · وحدة تحكم مجال · تجاوز سعة المخزن المؤقت للمكدس · CLDAP · غير مصادق عليه · قبل المصادقة · إثبات المفهوم
| Windows Server | أول بناء تم تصحيحه |
|---|
| 2016 | 10.0.14393.9140 |
| 2019 | 10.0.17763.8755 |
| 2022 | 10.0.20348.5074 |
| 2022 23H2 | 10.0.25398.2330 |
| 2025 | 10.0.26100.32772 |