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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-24481-analysis — تحليل معمّق لثغرة الارتباك النوعي (Type Confusion) في Windows CLFS (CVE-2022-24481) مع شرح السبب الجذري، وتدفّق الاستغلال، وتفاصيل أدوات النواة (Kernel Gadgets)، وإثبات مفهوم (PoC) عملي لتصعيد الصلاحيات محليًا. | Kitploit
أدوات/GitHubGitHub/uname1able/cve-2022-24481-analysis
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاستغلال الملفات الثنائية
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

تحليل معمّق لثغرة الارتباك النوعي (Type Confusion) في Windows CLFS (CVE-2022-24481) مع شرح السبب الجذري، وتدفّق الاستغلال، وتفاصيل أدوات النواة (Kernel Gadgets)، وإثبات مفهوم (PoC) عملي لتصعيد الصلاحيات محليًا.

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
6منذ 25 أياملم تتم المراجعة بعد

CVE-2022-24481 Type Confusion

خلط الأنواع (Type Confusion)

الملف المعرض للخطر

clfs.sys

السبب الجذري

نظرًا لأن منطق التحقق من rgContainers[0] ليس صارمًا، فبعد تزوير rgContainers[0]، يتداخل ClientContext مع بنية ContainerContext. إذا تم قبول البيانات المزورة، فبعد CloseHandle، يقوم CClfsLogFcbPhysical::FlushMetadata باستعادة بيانات ClientContext.

طريقة الاستغلال

بعد تزوير rgContainers[0]، يتداخل ClientContext مع بنية ContainerContext. إذا تم قبول البيانات المزورة، فبعد CloseHandle، يقوم CClfsLogFcbPhysical::FlushMetadata باستعادة بيانات ClientContext. نظرًا لتداخل البنيتين، تعمل هذه العملية على تغيير ContainerContext->pContainer إلى البيانات المزورة. أخيرًا، عند استدعاء CClfsBaseFilePersisted::RemoveContainer، يتم تشغيل استدعاء دالة عضو غير مباشر، وتنفيذ أداة (gadget) محددة، مما يؤدي إلى تصعيد الامتيازات.

سير إثبات المفهوم (PoC Flow)

1. إعداد الملف الثابت

يقوم createlog بإنشاء ملف سجل جديد.

أضف إدخال Container.

أنشئ رابطًا رمزيًا X:\ يشير إلى الدليل الحالي.

امسح النطاق cbSymbolName_start -> cbSymbolName_end.

اضبط cbSymbolName_start على X:\N.

انسخ البيانات الموجودة في ContainerContext_start -> New_cbSymbolName_end إلى ClientContext.

حدّث rgContainers[0] بحيث يشير إلى موقع ContainerContext_start الجديد.

حدّث قيمة ContainerContext->pContainer الجديدة.

أعد حساب المجموع الاختباري (checksum).

2. الإعداد في وقت التشغيل

حدد عنوان الأداة (gadget) في ذاكرة النواة.

ابنِ الجدول الافتراضي المزور.

أكمل إعداد الذاكرة المتبقي.

3. فتح ملف السجل المزور

CClfsLogFcbPhysical::Initialize

يخزن 00000001C0002EDB بيانات ClientContext.

بعد CloseHandle، يعمل CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

يقوم بنسخ البيانات المزورة مرة أخرى إلى ClientContext. نظرًا لأن ClientContext يتداخل مع ContainerContext، يتم استبدال ContainerContext->pContainer بالبيانات المزورة.

بعد ذلك ينفذ CClfsBaseFilePersisted::RemoveContainer الأداة الخاصة بنا، مما يؤدي إلى كتابة 16 بايت إلى عنوان عشوائي.

المراجع

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

قائمة تعديل البيانات

النقاط الرئيسية في تدفق الدوال

win10_21H2_19044.1620

روتين تهيئة CClfsLogFcbPhysical::Initialize(0x??7c) لفتح الملف

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

يقوم هذا الكود بتخزين ذاكرة ClientContext.

بعد CloseHandle، يتم تنفيذ CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

يقوم هذا باستعادة بيانات ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

استخدم مؤشر الجدول الافتراضي المزور للوصول إلى الأداة.

لاحظ أنه إذا فشل الملف المزور، فسيفشل فتح الملف وسيكشف GetLastError السبب. في هذه الحالة، لا يمكن متابعة تدفق الاستغلال.

الأداة (Gadget)

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 يكتب 16 بايت إلى [rax+8] (XMMWORD، 128 بت).

بعد التنفيذ المتسلسل، تكون النتيجة كتابة البيانات ذات الـ16 بايت من poi(rdx) 0xFFFFFFFF إلى poi(poi(rcx+0x48)+0x8).

rcx هو موقع مؤشر الجدول الافتراضي، وهذا الموقع تحت سيطرتنا.

إثبات المفهوم المنفذ

https://github.com/uname1able/CVE-2022-24481.git

إثبات المفهوم على Win10

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

إثبات المفهوم على Win11

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

تنزيل الأداة