
# سكربت تقييم PowerShell سكربت تقييم PowerShell يفحص أنظمة Windows بحثًا عن CVE-2025-47981 (تجاوز سعة الكومة في SPNEGO NEGOEX) من خلال التحقق من إصدار النواة، ومفتاح التسجيل PKU2U، والمنافذ المكشوفة لـ SPNEGO. يوفر خطوات المعالجة وإرشادات الكشف.
النوع: تقييم الثغرات — فحص اكتشاف / التحقق من الامتثال CVE: CVE-2025-47981 CVSS: 9.8 حرج (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) CWE: CWE-122 — تجاوز سعة المخزن المؤقت في الكومة (Heap-based Buffer Overflow) الاسم المستعار: "SPNEGO Nightmare" / "Windows Authentication Wormable RCE" التصحيح: KB5062560 | تحديثات يوليو 2025 Patch Tuesday
سكربت PowerShell للتقييم يتحقق مما إذا كان نظام Windows عرضة لثغرة CVE-2025-47981 — تجاوز سعة المخزن المؤقت في الكومة في آلية SPNEGO Extended Negotiation (NEGOEX) التي تسمح بتنفيذ التعليمات البرمجية عن بُعد دون مصادقة. لا ينفذ استغلالًا — فقط يقيم التعرض وحالة التصحيح.
تم التطوير بواسطة: HKK$ cat ./vulnerability_summary.txtCVE-2025-47981 هو تجاوز سعة المخزن المؤقت في الكومة في بروتوكول NEGOEX — الطبقة الداخلية الموسعة لآلية مصادقة SPNEGO في Windows. تسمح الثغرة للمهاجمين غير المصادق عليهم بتنفيذ تعليمات برمجية عشوائية عن بُعد، مما قد يؤدي إلى السيطرة الكاملة على النظام.
وصف المحللون الثغرة بأنها تمتلك "الخصائص غير المحظوظة لتصبح مشكلة كبيرة"، مع إمكانية الانتشار الذاتي (wormable) — قادرة على الانتشار تلقائيًا بين الأنظمة الضعيفة دون تفاعل المستخدم.
تؤثر الثغرة على Windows 10 (الإصدار 1607 فما فوق) وجميع إصدارات Windows Server من 2008 R2 حتى Server 2025، بما في ذلك متغيرات Server Core — أكثر من 33 تكوينًا مختلفًا من Windows وServer مؤكد أنها ضعيفة على معماريات x64 وx86 وARM64.
$ cat ./technical_background.txtSPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) هو طبقة مصافحة المصادقة التي يستخدمها Windows قبل كل جلسة مصادقة. غالبًا ما تحتاج التطبيقات إلى مصادقة دون تثبيت بروتوكول — يمكن لـ Windows استخدام Kerberos في بيئة، وNTLM في أخرى، أو آلية مصادقة موسعة في نموذج ثقة مختلف. SPNEGO هو آلية التفاوض التي تقرر بروتوكول المصادقة الذي سيتم استخدامه.
Cliente Servidor
│ │
│──── SPNEGO Negotiation ────────►│
│ MechTypeList: │
│ [Kerberos, NTLM, NEGOEX] │
│ │
│◄─── Selected Mechanism ─────────│
│ │
│──── Auth Exchange ─────────────►│ ← overflow هنا في NEGOEX
NEGOEX هو آلية التوسعة داخل SPNEGO — تسمح بتفاوض مصادقات PKU2U (نظير إلى نظير) وآليات مخصصة أخرى. تقع الثغرة في الدالة ntoskrnl!SpnegoHandleExtended، التي تعالج هياكل SPNEGO_TOKEN كبيرة الحجم مرسلة في أجزاء متعددة، مما يسبب تجاوزًا في كومة النواة.
الخطر مرتفع في الأنظمة التي تكون فيها سياسة المجموعة "Network security: Allow PKU2U authentication requests to this computer to use online identities" مفعلة. هذا الإعداد، المفعل افتراضيًا في العديد من توزيعات Windows، يوسع سطح هجوم NEGOEX من خلال السماح بمصادقة نظير إلى نظير التي تنشط مسار التعليمات البرمجية الضعيف في NEGOEX على نقاط النهاية التي لن تعرضه بطريقة أخرى.
$ cat ./architecture.txt┌─────────────────────────────────────────────────────────────────────────┐
│ CVE-2025-47981 ASSESSMENT SCRIPT — FLOW │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ CHECK 1: Windows Version │ │
│ │ Get-CimInstance Win32_OperatingSystem → .Version │ │
│ │ السياق: يحدد البنية الدقيقة للربط مع التصحيح │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ CHECK 2: ntoskrnl.exe Version │ │
│ │ Get-Item C:\Windows\System32\ntoskrnl.exe │ │
│ │ المقارنة: المثبت < 10.0.14393.8246 → ضعيف │ │
│ │ المقارنة: المثبت ≥ 10.0.14393.8246 → تم تطبيق KB5062560 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ CHECK 3: PKU2U Registry Key │ │
│ │ HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID │ │
│ │ 1 → PKU2U مفعل → سطح هجوم موسع │ │
│ │ 0 → PKU2U معطل → ناقل PKU2U مخفف │ │
│ │ غير موجود → التكوين الافتراضي (يُقيَّم عبر GPO) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ CHECK 4: منافذ SPNEGO المكشوفة │ │
│ │ Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25 │ │
│ │ كل منفذ مفتوح = ناقل تسليم للاستغلال │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ Format-Table -AutoSize │
│ (مخرجات قابلة للقراءة لتقرير اختبار الاختراق) │
└─────────────────────────────────────────────────────────────────────────┘
$ cat ./design_decisions.mdntoskrnl.exe$kernelPath = [System.IO.Path]::Combine($env:SystemRoot, "System32\ntoskrnl.exe")
$requiredVersion = "10.0.14393.8246"
$installedVersion = (Get-Item $kernelPath).VersionInfo.FileVersion
if ([version]$installedVersion -lt [version]$requiredVersion) {
"ضعيف - التصحيح مفقود ($missingKB)"
}
لماذا ntoskrnl.exe وليس Get-HotFix؟
Get-HotFix يسرد التحديثات المثبتة، لكن له قيود معروفة:
DISM أو Windows Update في الوضع الصامتالتحقق من إصدار ntoskrnl.exe مباشرة أكثر موثوقية — الملف لا يتلقى الإصدار المُصحح إلا عندما يتم تطبيق التحديث بشكل فعلي وإعادة تشغيل النظام. النظام الذي لديه تحديث معلق لإعادة التشغيل سيظل لديه الإصدار القديم من النواة في الذاكرة.
تحويل [version]: يقارن PowerShell السلاسل النصية معجميًا افتراضيًا — "10.0.14393.8246" -lt "10.0.14393.800" سيكون $false (خطأ). التحويل إلى [version] يضمن مقارنة رقمية صحيحة لكل ثمانية (octet).
[System.IO.Path]::Combine($env:SystemRoot, ...): يستخدم SystemRoot بدلاً من C:\Windows المثبت — قابل للنقل للأنظمة المثبتة على محركات أقراص مختلفة.
10.0.14393.824610.0.14393.xxxx → Windows 10 الإصدار 1607 / Windows Server 2016
│
└─ 8246 = البنية مع تطبيق KB5062560
لماذا هذه البنية تحديدًا؟
Windows Server 2016 (البنية الأساسية 14393) هو أحد أكثر البيئات حرجًا للتصحيح — مستخدم على نطاق واسع في وحدات التحكم بالمجال (DCs) وخوادم الملفات والخدمات الداخلية للشركات. الإصدار 8246 يتوافق مع بنية النواة بعد تطبيق KB5062560 (يوليو 2025).
بالنسبة لأنظمة التشغيل الأخرى، رقم البنية الأدنى المطلوب مختلف — يمكن توسيع السكربت بجدول إصدارات لكل نظام تشغيل.
AllowOnlineID$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
$regName = "AllowOnlineID"
ماذا يتحكم هذا المفتاح؟
تؤثر الثغرة بشكل أساسي على الأنظمة التي تكون فيها سياسة المجموعة "Allow PKU2U authentication requests to this computer to use online identities" مفعلة افتراضيًا، وهذا هو الحال لـ Windows 10 الإصدار 1607 فما فوق.