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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-28664-PoC — هيكل PoC لـ CVE-2021-28664، وهو use-after-free في برنامج تشغيل Mali kbase GPU، يوضح بدائية قراءة/كتابة الذاكرة الفيزيائية العشوائية في النواة على ARM64 Android. | Kitploit
أدوات/GitHubGitHub/woaphone/cve-2021-28664-poc
أمان أندرويدتحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالأمن الجوالأمان الأجهزة وإنترنت الأشياءالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubwoaphone/cve-2021-28664-poc

CVE-2021-28664-PoC

هيكل PoC لـ CVE-2021-28664، وهو use-after-free في برنامج تشغيل Mali kbase GPU، يوضح بدائية قراءة/كتابة الذاكرة الفيزيائية العشوائية في النواة على ARM64 Android.

منذ 11س 5دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-28664-PoC

هيكل PoC لثغرة use-after-free في مشغّل Mali kbase GPU (CVE-2021-28664) → بدائيات القراءة/الكتابة العشوائية للذاكرة الفيزيائية للنواة. موجّه لمنصات ARM64 Android العامة، ومستقل عن أي شركة مصنّعة أو طراز محدد.

نطاق البحث يقتصر على "بدائيات القراءة/الكتابة العشوائية للذاكرة الفيزيائية للنواة" فقط: كيفية تحويل use-after-free في مشغّل GPU إلى قدرة قراءة/كتابة لذاكرة النواة مستقرة وقابلة للتحكم وقابلة للفشل الآمن.

هذا المستودع لا يقدّم أي هجوم. لا يحتوي على exploit جاهز، ولا على كود قابل للتشغيل المباشر، ولا على أي إزاحات/أرقام تسلسلية/برامج ثابتة لأي جهاز؛ ويُحظر استخدام أي محتوى منه في أنشطة هجومية (انظر أدناه).


إخلاء المسؤولية / Disclaimer (قراءة إلزامية)

  1. هذا المستودع لا يقدّم هجوماً. هذا المستودع هو مراجعة تقنية لمبدأ الثغرة وبدائيات تخريب الذاكرة، ويحتوي فقط على وثائق منهجية وقوالب تعليمية جميع قيم الأجهزة فيها فارغة. لا يمكن استخدامه مباشرة لمهاجمة أي جهاز.
  2. يُحظر الهجوم. يُحظر تماماً استخدام محتوى هذا المستودع على أي جهاز غير مصرّح به، أو جهاز يخص شخصاً آخر، أو لأي غرض غير قانوني؛ وتقع كل التبعات الناتجة عن ذلك على عاتق المستخدم وحده، ولا علاقة للمؤلف بها.
  3. أُجريت التجارب البحثية فقط على أجهزة يملكها المؤلف شخصياً، بهدف إعادة إنتاج الثغرة والبحث الأمني.
  4. تم إصلاح CVE-2021-28664 في عام 2021 من قبل المنبع (Arm/Mali)؛ والمتأثر هو المشغّلات/البرامج الثابتة القديمة التي لم تُحدَّث لفترة طويلة. تكمن أهمية هذا البحث في فهم مبادئ استغلال الثغرات التاريخية و أساليب الكشف من منظور دفاعي.
  5. يُقدَّم محتوى هذا المستودع "كما هو" (AS IS)، دون أي ضمان صريح أو ضمني.
  6. إذا كنت تمثّل شركة مصنّعة/فريقاً أمنياً وتحتاج مزيداً من التفاصيل، فيرجى التواصل مع المؤلف عبر GitHub.

نطاق التطبيق

قابل للتطبيق تقنياً (الشروط المسبقة لتحقق كل حلقة في سلسلة الاستغلال)

غير قابل للتطبيق تقنياً

  • مشغّل Mali الذي تم إصلاح CVE-2021-28664 فيه (بعد إصلاح إصدار r)؛
  • منصات GPU غير Mali (هذه السلسلة تعتمد اعتماداً عميقاً على سلوك alias/MMU-dump في kbase)؛
  • النوى الحديثة التي تختلف فيها بنية pipe_buffer/تحقق copy_page_to_iter اختلافاً كبيراً (ابتداءً من 5.x يجب إعادة التحقق وفق الكود المصدري المقابل؛ بنية السلسلة يمكن الرجوع إليها لكن التفاصيل غير عامة)؛
  • البيئات التي لا تتوفر فيها صلاحية الوصول إلى /dev/mali (قيود seLinux/سياسات الشركات المصنّعة).

إعلان الحدود

  • يغطي هذا المستودع بدائيات القراءة/الكتابة فقط؛ أما تحديد هدف نواة محدد بعد الحصول على البدائيات، أو مواصلة الاستغلال أو رفع الصلاحيات، فكل ذلك خارج نطاق هذا المستودع.
  • جميع الثوابت المتعلقة بالأجهزة تُركت فارغة في القوالب بصيغة TODO(DEVICE)، والتكييف هو عمل هندسي عكسي يقوم به المستخدم بنفسه، ولا يتولاه المستودع نيابة عنه.

خلفية الثغرة

CVE-2021-28664: مسار MEM_ALIAS في مشغّل Mali kbase يفتقر إلى التحقق من صلاحية GPU_WR، ما يسمح للمهاجم بعمل alias لـ صفحات ذاكرة GPU المحرَّرة بالفعل إلى فضاء عناوين GPU الخاص به، مما يُنشئ "رؤية/كتابة مستمرة من جانب GPU لصفحات فيزيائية محرَّرة" — أي use-after-free عابر لحدود GPU/النواة.

القيمة الاستغلالية لا تكمن في ذاكرة GPU نفسها، بل في أن:

  1. الصفحات الفيزيائية المحرَّرة سيعيد النواة توزيعها عبر slab/buddy إلى كائنات النواة (في هذا البحث: pipe_buffer)؛
  2. عرض alias الخاص بـ GPU لا يزال يرى هذه الصفحات → يمكن قراءة وكتابة حقول الكائنات التي تستخدمها النواة حالياً؛
  3. بالاستعانة بمهمة WRITE_VALUE في GPU لإجراء تعديل موجَّه على الصفحات المرئية عبر alias.

إلى أي مدى وصل هذا البحث

root@kitploit:~
مخزن victim GPU + تفريغ جدول صفحات MMU → بناء خريطة العناوين الفيزيائية
  → trigger تحرير المخزن لخلق ضغط → رشّ pipe (تصغير عبر F_SETPIPE_SZ)
  → مصفوفة pipe_buffer تسقط في منطقة التحرير (إعادة استخدام UAF عبر المخابئ)
  → مسح عرض alias لمؤشر ops → تسريب anon_pipe_buf_ops → KASLR slide
  → تعديل GPU لحقول page / offset / len في pipe_buffer
  → بالاستعانة بمسار pipe read/write الشرعي
  ⇒ قراءة أي صفحة فيزيائية (تزوير مؤشر page)
  ⇒ كتابة أي صفحة فيزيائية (مسار كتابة pipe merge)
  ⇒ استخدام صفحة ذات محتوى معروف كـ oracle للتحقق الذاتي، لضمان عدم وقوع القراءة/الكتابة في فراغ/منطقة غير معيَّنة

وهذا هو الحد.

النقاط التقنية الرئيسية (لكل نقطة قسم مستقل في docs/)

  • بوابات أمان متعددة المستويات: قبل أي قراءة فيزيائية يجب اجتياز بوابات overlap / الاتساق الذاتي / contiguity / التحقق الذاتي من المحتوى وغيرها، وأي فشل في أي بوابة يستدعي استعادة الوضع والخروج فوراً — وهو أهم انضباط هندسي في البحث بأكمله.
  • مزالق نموذج العنوان الفيزيائي: تلوّث بتات الأعلام البرمجية في GPU PTE، واقتطاع العنوان الفيزيائي عند 32 بت، وعشوائية KASLR التي تشمل أيضاً القاعدة الفيزيائية لصورة النواة، واختلاف تطبيقات page_to_virt بين الشركات المصنّعة، ومناطق no-map المحجوزة غير الموجودة أصلاً في التعيين الخطي (قراءتها تؤدي إلى panic).
  • معالجة غموض m: لا يُعتمد أبداً على التخمين في غموض البتات العليا للعنوان الفيزيائي، بل يُستخدم "oracle صفحة ذات محتوى معروف" للتحقق الذاتي من المحتوى.
  • عمر البدائيات والفشل الآمن: لمسبار القراءة ميزانية عددية، وعند تجاوزها يجب التخلي عن هذه الجولة؛ وكل مسار خروج في كل تجربة يجب أن يعيد حقول الكائنات التي تم التلاعب بها.

بنية المستودع

root@kitploit:~
docs/
  01-exploit-chain.md            من UAF إلى بدائيات القراءة/الكتابة: مبادئ كل مرحلة ونقاط تنفيذها
  02-physical-address-model.md   نموذج العنوان الفيزيائي، بوابات الأمان، غموض m، المزالق المعروفة
exploit/
  cve-2021-28664-poc.c           قالب PoC: الهيكل الكامل لسير بدائيات القراءة/الكتابة (بدون قيم أجهزة)
scripts/
  README.md                      وصف تصميم أدوات أتمتة التجارب (الحلقات/التحقق/الاستعادة)

وصف الكود المصدري

exploit/cve-2021-28664-poc.c هو قالب هيكل PoC لبدائيات القراءة/الكتابة:

  • يحافظ على بنية السير الكاملة (تحضير الموارد → الرشّ → المسح → المعايرة → بدائيات القراءة/الكتابة → الاستعادة والخروج)؛
  • جميع الثوابت المتعلقة بالأجهزة مُعلَّمة بـ TODO(DEVICE)، ولا تحتوي على أي قيم قابلة للاستخدام مباشرة؛
  • قبل كل عملية خطرة توجد بوابة تحقق صريحة ومسار استعادة، مما يعرض أسلوب تصميم "الفشل الآمن".

يُستخدم لفهم كيفية تنظيم السلسلة بأكملها، ولا يمكن ترجمته مباشرة إلى أداة فعّالة على أي جهاز.

المراجع

  • مشغّل ARM Mali kbase (شجرة الكود المصدري للنواة العامة)
  • سجل إصلاح CVE-2021-28664 من المنبع والتحليلات العامة
  • Linux fs/pipe.c / include/linux/pipe_fs_i.h (الكود المصدري العام)
  • نموذج ذاكرة arm64: Documentation/arch/arm64/memory.rst (الوثائق العامة)

License

  • الكود (exploit/): GPL-3.0، انظر LICENSE
  • الوثائق (README، docs/، scripts/): CC BY-NC-SA 4.0، انظر LICENSE-DOCS (يُحظر الاستخدام التجاري؛ يجب مشاركة المحتوى المشتق بالطريقة نفسها مع الاحتفاظ بهذا الإعلان)
تنزيل الأداة
الحلقةالشرط المسبق
الثغرة نفسهاإصدار مشغّل Mali kbase يقع في النطاق المتأثر بـ CVE-2021-28664 (سلسلة r قبل إصلاح المنبع)؛ لا علاقة له بإصدار النواة، بل بالمشغّل فقط
موارد GPU/dev/mali متاح للتطبيق المعني؛ MEM_ALLOC يدعم مخزن SAME_VA كبير؛ سلوك MEM_ALIAS مطابق لوصف الثغرة
إعادة استخدام الأنبوبLinux ≥ 4.5 (إدخال pipe_buf_operations)، وقد ثبت عملياً في 4.9 ~ 4.14؛ يمكن ضبط الأنبوب إلى صفحة واحدة عبر F_SETPIPE_SZ
تسريب KASLRالنواة مُفعَّل فيها CONFIG_RANDOMIZE_BASE (arm64 ≥ 4.6)؛ anon_pipe_buf_ops موجود في جدول الرموز العام
نموذج العنوان الفيزيائيarm64 + تخطيط vmemmap؛ sizeof(struct page) وصيغة جدول الصفحات يجب قياسهما عملياً، ولا يجوز افتراضهما