
منظومة تحليل وتحقق غير مُسلَّحة لثغرة CVE-2016-5195 (Dirty COW) مع بحث في السبب الجذري، ومراجعة للتصحيح المنبع (upstream patch)، وإثبات مفهوم (PoC) آمن مخصص للمختبر فقط للأنوية المؤكَّدة.
بحث دفاعي، وتحقق غير مُسلَّح، وتحليل تصحيح لثغرة CVE-2016-5195 (Dirty COW)، وهي حالة سباق في النسخ عند الكتابة (copy-on-write) في نواة لينكس يمكن أن تسمح لمستخدم محلي بتعديل بيانات مرتبطة بتعيين للقراءة فقط والحصول على امتيازات مرتفعة.
| الحقل | القيمة |
|---|---|
| المكوّن | إدارة ذاكرة نواة لينكس / get_user_pages() |
| مواطن الضعف | CWE-362: تنفيذ متزامن باستخدام مورد مشترك بدون مزامنة صحيحة |
| الخطورة | عالية، CVSS 3.1: 7.0 |
| الناقل | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| الشرط الأساسي للهجوم | وصول محلي بصلاحيات منخفضة |
| إصلاح المنبع | 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 |
| أول إصدار منبع تم إصلاحه | Linux 4.8.3؛ تختلف الإصلاحات الخلفية للتوزيعات |
Dirty COW هي حالة سباق في معالجة نواة لينكس للكتابات القسرية وتعيينات
النسخ عند الكتابة (COW). يمكن لمستخدم محلي أن يجري سباقًا بين إبطال الصفحات وكتابة
عبر /proc/self/mem. في نواة متأثرة، قد يتسبب السباق في كتابة بيانات
مرتبطة بتعيين خاص للقراءة فقط من الناحية الاسمية مرة أخرى إلى
الملف الأساسي.
الأثر العام هو تصعيد الامتيازات محليًا عندما يتمكن المهاجم من تطبيق الأداة على ملف حساس أمنيًا. تم استغلال الثغرة في الهجمات الفعلية في أكتوبر 2016. لا يقوم هذا المستودع بأتمتة مسار التصعيد هذا.
منصة التحقق الافتراضية مقيدة عمدًا:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
poc.c -o dirtycow-safe -pthread
يمكن بناء الأداة البدائية للاستغلال المخصصة للمختبر فقط بشكل منفصل:
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
exploit.c -o dirtycow-exploit -pthread
./dirtycow-safe
عدد تكرارات اختياري محدد:
./dirtycow-safe --iterations 5000000
النتائج المحتملة:
marker-observed: تمت ملاحظة سلوك معرض للخطر على inode المؤقت.marker-not-observed: غير حاسم. عدم نجاح السباق لا يُثبت أن النواة مُصلحة.77: واجهة /proc/self/mem المطلوبة في لينكس غير متاحة.لا تستخدم نتيجة الـ PoC كفحص أساسي لحالة التصحيح. ارجع إلى نشرة حزمة النواة للتوزيعة قيد التشغيل وتأكد من أن النواة المصلحة نشطة بعد إعادة التشغيل.
exploit.c يقبل ملفًا صريحًا وبادئة استبدال ويوضح
الأداة البدائية للكتابة في ملف عشوائي على نواة متأثرة. ويتطلب
تأكيدًا حرفيًا --i-understand، ويطبق حدودًا محدودة على الحمولة وعدد التكرارات،
ولا يبني حمولة تصعيد امتيازات.
قد يتم تعديل الملف المحدد بشكل دائم. استخدمه فقط في مختبر معزول
وقابل للتصرف تملكه أو مصرَّح لك باختباره صراحةً. التحليل الكامل
للسباق وانتقالات الحالة موجود في ROOT_CAUSE.md.
evidence/evidence.json يسجل تواقيع المصدر
التي لوحظت في مراجعات لينكس الرسمية قبل التصحيح وبعده، ونتيجة بناء
PoC الخالي من التحذيرات، وخصائص أمان التحقق.
evidence/validation.log يقدم ملخصًا موجزًا.
التحقق المُلتقط لم ينفّذ السباق.
ثبّت تحديث النواة المقدم من البائع وأعد التشغيل على النواة المصلحة. لا تحدد مستوى التعرض من سلسلة إصدار المنبع وحدها: نوى المؤسسات والتوزيعات عادةً ما تعيد تطبيق الإصلاح على إصداراتها دون اعتماد رقم إصدار المنبع. تستخدم الحاويات نواة المضيف، لذلك يجب أن تغطي المعالجة المضيف.
انظر PATCH_ANALYSIS.md للحصول على التغيير الدقيق في المنبع و
VULNERABILITY_REPORT.md لإرشادات التحقق.
استخدم هذه المواد فقط على أنظمة تملكها أو مصرَّح لك باختبارها صراحةً.
| المسار | الغرض |
|---|
poc.c | تحقق غير مُسلَّح باستخدام inode مؤقت غير مرتبط فقط |
exploit.c | أداة بدائية للكتابة في ملف عشوائي لمختبر معزول ومصرَّح به |
ROOT_CAUSE.md | تحليل مفصّل لانتقالات الحالة المعرضة للخطر وسباقها |
VULNERABILITY_REPORT.md | الشروط المسبقة والسبب الجذري والأثر والمعالجة |
PATCH_ANALYSIS.md | تحليل على مستوى الأسطر لإصلاح المنبع FOLL_COW |
evidence/ | مخرجات التحقق المنظمة وملاحظات التفسير |