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

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

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.

عرض المستودع
2872منذ 2 أشهرتمت المراجعة من قبل 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)

root@kitploit:~
// 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)

root@kitploit:~
// 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/:

root@kitploit:~
build.bat

الطرفية 1:

root@kitploit:~
vulnerable_service.exe

الطرفية 2:

root@kitploit:~
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. تدقيق الروابط الرمزية/الوصلات في مسارات بيانات الإشعارات
root@kitploit:~
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

التثبيت:

root@kitploit:~
sysmon64.exe -accepteula -i detection\sysmon_wpn_race_detect.xml

عارض الأحداث

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

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

حدث WPN في عارض الأحداث
عارض الأحداث: سجل تشغيل PushNotifications-Platform، معرف الحدث 1225

مقارنة التصحيح

النتائج الرئيسية من مقارنة wpncore.dll:

  • زاد حجم مقطع .text بمقدار 18,432 بايت (كود قفل/حارس جديد عبر 49 وظيفة)
  • زاد حجم مقطع .data بمقدار 96 بايت (متغيرات عامة جديدة Wns::s_platformLock و Wns::s_platformShutdown)
  • لم تتم إضافة استيرادات جديدة — كانت AcquireSRWLockShared/ReleaseSRWLockShared موجودة بالفعل في جدول الاستيراد
  • مدمر RAII جديد: ~unique_any_t<...ReleaseSRWLockExclusive...> يؤكد إضافة غلاف القفل

التقارير الكاملة موجودة في reports/.

CVEs ذات الصلة

CVE-2026-42978 جزء من مجموعة مكونة من 9 ثغرات متعلقة بـ WPN تم إصلاحها في يونيو 2026:

CVEالنوعCWE
CVE-2026-42977رفع الصلاحياتحالة سباق
CVE-2026-42978رفع الصلاحياتحالة سباق
CVE-2026-42979رفع الصلاحياتحالة سباق
CVE-2026-42991رفع الصلاحياتحالة سباق
CVE-2026-42969كشف معلوماتحالة سباق
CVE-2026-42970كشف معلوماتحالة سباق
CVE-2026-42973كشف معلوماتحالة سباق
CVE-2026-26167رفع الصلاحيات—
CVE-2026-32160رفع الصلاحيات—

هيكل المشروع

root@kitploit:~
CVE-2026-42978/
├── README.md
├── lab/
│   ├── vulnerable_service.c    # mock WpnService with double-fetch bug
│   ├── race_attacker.c         # attacker that exploits the double-fetch
│   └── build.bat               # GCC build script
├── detection/
│   ├── etw_wpn_monitor.ps1     # 7-check PowerShell detector
│   └── sysmon_wpn_race_detect.xml  # Sysmon rule config
├── reports/
│   ├── PE_DIFF_REPORT.txt      # PE section/import diff results
│   └── FUNCTION_DIFF_REPORT.txt # function-level diff (49 changed)
└── img/                        # screenshots for this README

المتطلبات

  • Windows 10/11 (لتشغيل أدوات المختبر والكشف)
  • GCC / MinGW (لبناء مختبر C)
  • Python 3.9+ (لنصوص المقارنة)
  • Ghidra 11+ (لفك الترجمة بدون واجهة رسومية، اختياري)
  • Sysmon (لقواعد الكشف، اختياري)

إخلاء مسؤولية

هذا المشروع لأغراض البحث الأمني الدفاعي. الثغرة مُصححة. لم يتم تضمين أي كود استغلال مُسلح. يوضح مختبر TOCTOU فئة الخلل على خدمة محاكاة مستقلة — لا يتفاعل مع WpnService أو أي مكون نظام.

تأكد من تحديث Windows. إذا أبلغ etw_wpn_monitor.ps1 أن نظامك غير مُصحح — فقم بتثبيت التحديث التراكمي لشهر يونيو 2026 فورًا.

المساهمة

إذا كان لديك شيء تضيفه — قواعد كشف أفضل، إثبات مفهوم الاستغلال، جلسة Ghidra لتتبع الإصدار، توقيعات YARA، أو تحليل للـ CVEs ذات الصلة في هذه المجموعة — فنرحب بطلبات السحب (PRs).

أفكار للمساهمات:

  • قواعد Sigma لجانب SIEM من الكشف
  • تحليل أعمق لـ CVE-2026-42977/42979/42991 (نفس عائلة سباق WPN)
  • تحليل كومة باستخدام WinDbg لخطأ استخدام-بعد-التحرير
  • مراقب ETW محسّن مع كشف انفجارات ALPC في الوقت الفعلي
  • توصيات قواعد ASR لـ Windows Defender

افتح مشكلة (issue) إذا كانت لديك أسئلة أو تريد مناقشة البحث.

الترخيص

MIT

تنزيل الأداة