Skip to content
KitploitKITPLOIT
أدواتالمدونة
Log in
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — حالة سباق استخدام بعد التحرير (Use-After-Free) في خدمة إشعارات Windows Push (WpnService). فرق التصحيح، تحليل السبب الجذري، مختبر TOCTOU، قواعد كشف Sysmon/ETW. | Kitploit
أدوات/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
تحليل الثغرات الأمنيةالاستغلالالتحقيق الجنائي الرقميتحليل الملفات الثنائيةالتعلم والتعليمالاستجابة للحوادثمختبرات وتدريب عملي
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — حالة سباق استخدام بعد التحرير (Use-After-Free) في خدمة إشعارات Windows Push (WpnService). فرق التصحيح، تحليل السبب الجذري، مختبر TOCTOU، قواعد كشف Sysmon/ETW.

عرض المستودع
287102منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-42978 PoC & Research — استخدام-بعد-التحرير في إشعارات Windows الفورية

حالة سباق في خدمة إشعارات Windows الفورية (WpnService) التي تعمل كـ NT AUTHORITY\SYSTEM. يمكن للمهاجم ذي الوصول المحلي تشغيل خطأ استخدام-بعد-التحرير أثناء إيقاف تشغيل النظام الأساسي وربما رفع الصلاحيات.

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • النوع: CWE-362 (حالة سباق), استخدام-بعد-التحرير
  • CVSS: 7.8 (عالي)
  • المتأثر: Windows 10, Windows 11, Windows Server 2016/2019/2022/2025
  • التصحيح: 10 يونيو 2026 (ثلاثاء التصحيح)
  • الحالة: تم الإصلاح. هذا المستودع لأغراض البحث الدفاعي فقط.

كيف يعمل

WpnService هي خدمة إشعارات Windows الفورية. تعمل في الجلسة 0 كـ LocalSystem داخل svchost.exe -k netsvcs -p. جميع عمليات توصيل الإشعارات — الإشعارات المنبثقة، البلاطات، الشارات — تمر عبرها.

توجد الثغرة في wpncore.dll، تحديدًا في الفئة PresentationEndpointFacade. تلتف هذه الفئة حول جميع استدعاءات API للإشعارات (توصيل الإشعارات المنبثقة، إدارة الجلسات، استعلامات الإعدادات، إلخ) وتفوض إلى PresentationEndpointImpl.

الخلل: أثناء إيقاف تشغيل النظام الأساسي، يتم تدمير الكائن NotificationPlatform. لكن طرق الواجهة (Facade) لا تتحقق مما إذا كان الإيقاف قيد التقدم — فهي تستحوذ على مؤشر للنظام الأساسي، ثم يتم تحرير النظام الأساسي بواسطة خيط الإيقاف، وتستخدم الواجهة مؤشرًا متدليًا. حالة سباق استخدام-بعد-التحرير كلاسيكية.

الكود الضعيف (تم تفكيكه من wpncore.dll build 26100.8521)

// PresentationEndpointFacade::ToastUnblockAll — VULNERABLE
long ToastUnblockAll(PresentationEndpointFacade *this) {
    // No lock. No shutdown check. Just grab the platform pointer and go.
    NotificationPlatformHandle::Get(this + 0x50);
    if (platform == NULL) Throw_Hr(...);
    // If shutdown frees the platform right here — use-after-free
    return PresentationEndpointImpl::UnblockToastsForEachApp(...);
}

تفكيك Ghidra لـ ToastUnblockAll الضعيف
Ghidra: ToastUnblockAll الضعيف — لا تزامن قبل الوصول إلى النظام الأساسي

الكود المُصحح (wpncore.dll build 26100.8655)

// PresentationEndpointFacade::ToastUnblockAll — PATCHED
long ToastUnblockAll(PresentationEndpointFacade *this) {
    if (Feature_4097557817::IsEnabled()) {
        AcquireSRWLockShared(&Wns::s_platformLock);    // 1. shared lock
        if (Wns::s_platformShutdown)                    // 2. shutdown guard
            Throw_Hr(E_APPLICATION_EXITING);
        NotificationPlatformHandle::Get(this + 0x50);
        // ... do work ...
        ReleaseSRWLockShared(&Wns::s_platformLock);     // 3. RAII release
    } else {
        // feature flag off — old behavior preserved for rollback
    }
}

يضيف الإصلاح ثلاثة أشياء:

  1. AcquireSRWLockShared — قفل مشترك للقراء-الكتاب. يمكن لعدة استدعاءات API أن تعمل بشكل متزامن، لكن الإيقاف يأخذ قفلًا حصريًا ويحظرها جميعًا.
  2. التحقق من s_platformShutdown — إذا بدأ الإيقاف بالفعل، اخرج فورًا مع E_APPLICATION_EXITING.
  3. تحرير القفل بنمط RAII — يتم الاحتفاظ بالقفل في غلاف wil::unique_storage، بحيث يتم تحريره حتى في حالة طرح استثناء.

علم الميزة Feature_4097557817 مخصص للطرح التدريجي عبر WIL (مكتبة Windows الداخلية). يسمح لمايكروسوفت بتمكين الإصلاح تدريجيًا وتعطيله في حالة حدوث خلل.

حجم الإصلاح

هذا ليس خللًا في وظيفة واحدة. تمت إضافة نفس نمط القفل+الحارس إلى 49 وظيفة في wpncore.dll:

التصنيفالوظائف
Toast operationsToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
Tile operationsTileCreateSession, TileCloseSession, TileRequestResourceForeground
RegistrationRegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
SettingsChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
DeliveryDeliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
QueriesGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

كل طريقة PresentationEndpointFacade::* تلامس النظام الأساسي حصلت على نفس الإصلاح. طرق PresentationEndpointImpl::* تحتها لم تتغير — كانت المشكلة فقط في طبقة الواجهة.

التأثير

تعمل WpnService كـ SYSTEM. إذا تم ربح السباق:

  1. يمكن استعادة الذاكرة المحررة للكائن NotificationPlatform وملؤها ببيانات يتحكم بها المهاجم (رش الكومة)
  2. استدعاء طريقة افتراضية لاحق على المؤشر المتدلي يقفز إلى عنوان يتحكم به المهاجم
  3. تنفيذ الكود كـ NT AUTHORITY\SYSTEM

الاستغلال الفعلي — رش الكومة، اختطاف جدول الوظائف الافتراضية، تحقيق تنفيذ الكود — هو خارج نطاق هذا البحث. يركز هذا المستودع على فهم السبب الجذري وبناء الكشف.

مختبر حالة سباق TOCTOU

يحتوي دليل lab/ على عرض توضيحي مستقل بلغة C يعيد إنتاج فئة الخلل دون لمس WpnService. يستخدم بنية أنبوب مسمى + ذاكرة مشتركة مشابهة لـ WpnService.

كيف يعمل:

  • يقرأ vulnerable_service.exe طول رسالة من الذاكرة المشتركة، يتحقق منه، ينام لمدة 50 مللي ثانية، ثم يقرأ الطول مرة أخرى (جلب مزدوج).
  • يضبط race_attacker.exe طولًا آمنًا، يُشغل الخدمة، ثم يقلب الذاكرة المشتركة فورًا إلى قيمة تجاوز.
  • إذا كان التوقيت مناسبًا، تقرأ الخدمة قيمة التجاوز في الجلب الثاني — تجاوز سعة المخزن المؤقت.

شغّل vulnerable_service.exe --patched لرؤية الإصلاح: التقاط جلب واحد في متغير محلي.

عرض توضيحي لحالة سباق TOCTOU
يسار: الخدمة تكتشف السباق (5/5). يمين: المهاجم يقلب قيم الذاكرة المشتركة.

البناء والتشغيل

يتطلب GCC (MinGW). من دليل lab/:

build.bat

الطرفية 1:

vulnerable_service.exe

الطرفية 2:

race_attacker.exe 5

ثم قارن مع vulnerable_service.exe --patched — نفس الهجوم، لم يتم اكتشاف أي سباقات.

الكشف

مراقب ETW (detection/etw_wpn_monitor.ps1)

نص PowerShell يتحقق من 7 مؤشرات:

  1. حالة WpnService ومعرف العملية
  2. سجل الأعطال/إعادة التشغيل (الاستغلال الفاشل يترك آثار أعطال)
  3. كشف الانفجارات في سجل أحداث منصة Push Notifications
  4. الأنابيب المسماة المتعلقة بـ WPN
  5. التحقق من التصحيح (التحقق من تاريخ wpncore.dll)
  6. العمليات التي تحتوي على وحدات WPN محملة
  7. تدقيق الروابط الرمزية/الوصلات في مسارات بيانات الإشعارات
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

مخرجات مراقب ETW
مراقب ETW: WpnService تعمل (PID 6432)، لا أعطال، 100 حدث/ساعة، النظام مُصحح

قواعد Sysmon (detection/sysmon_wpn_race_detect.xml)

ست مجموعات قواعد للمراقبة المستمرة:

القاعدةما تلتقطه
WPN_EoP_ChildProcesssvchost (netsvcs) يولد cmd/powershell/wscript
WPN_PipeAccessاتصالات بالأنابيب المسماة المتعلقة بـ WPN
WPN_FileCreationإنشاء ملفات في أدلة بيانات الإشعارات
WPN_RegistryTamperingكتابات إلى مفاتيح التسجيل الخاصة بـ PushNotifications
WPN_ProcessAccessمقابض PROCESS_ALL_ACCESS لـ svchost
WPN_ThreadInjectionCreateRemoteThread في svchost

التثبيت:

sysmon64.exe -accepteula -i detection\sysmon_wpn_race_detect.xml

عارض الأحداث

يتم تسجيل نشاط WpnService في Microsoft-Windows-PushNotifications-Platform/Operational. الأحداث الرئيسية للمراقبة:

  • الحدث 1225: أوامر WPN على مستوى النقل
  • انفجارات أحداث سريعة (>20/دقيقة) — رش سباق محتمل
  • أحداث خطأ/حرجة — تعطل محتمل من استغلال فاشل
تنزيل الأداة