
يحتوي هذا المستودع على تقرير تحقق معملي وأدلة كشف عن DirtyFrag CVE-2026-43284، وهي مشكلة تصعيد صلاحيات محلية في لينكس مرتبطة بمسار كتابة ذاكرة التخزين المؤقت للصفحات في XFRM/ESP. يركز المحتوى على بيانات auditd عن بعد، وربط الأحداث، ومنطق كشف موجه لمراكز عمليات الأمان (SOC).
النطاق: التحقق من تصعيد الامتيازات المحلية (LPE) في لينكس مع التركيز على مسار XFRM/ESP المرتبط بـ CVE-2026-43284.
يحتوي هذا المستودع على تقرير باللغة الإنجليزية وأدلة من اختبار معملي خاضع للرقابة على PoC العام لـ DirtyFrag. التركيز ليس على تقديم دليل استغلال، بل على توثيق ما كان مرئيًا في سجلات تدقيق لينكس وكيف يمكن تحويل هذه الأحداث إلى منطق كشف قابل للاستخدام في SOC.
تقرير PDF كامل:
EN: reports/DirtyFrag_CVE-2026-43284_EN.pdf
PL: reports/DirtyFrag_CVE-2026-43284_PL.pdf
تم إجراء الاختبار للتحقق مما إذا كان بإمكان مستخدم محلي عادي الحصول على شل جذر في آلة افتراضية معرضة للخطر، وتحديد الأحداث التي يمكن التقاطها باستخدام auditd.
يتعلق CVE-2026-43284 بمعالجة غير صحيحة لأجزاء الصفحات المشتركة أثناء عمليات ESP/IPsec. في ظل ظروف معينة، يمكن لمهاجم محلي التأثير على البيانات في ذاكرة التخزين المؤقت للصفحات وتصعيد الامتيازات. تقيّم أمان أوبونتو هذه الثغرة بـ CVSS 3.1: 7.8 عالية.
| الثغرة | النطاق | المكون | CVSS |
|---|---|---|---|
| CVE-2026-43284 | كتابة ذاكرة التخزين المؤقت للصفحات (XFRM/ESP) | XFRM / ESP، esp4/esp6 | 7.8 عالية |
مراجع تقنية:
خط الأساس الكامل للنظام: evidence/logs/system-info-table.md
قبل تنفيذ PoC، كان سياق الاختبار حساب مستخدم عادي. بعد تشغيل ./exp، تم الحصول على شل جذر وتأكيده باستخدام whoami و id.

بعد الاختبار، تم تصدير سجلات auditd ومخرجات الملخص إلى دليل أدلة محلي ونسخها إلى هذا المستودع.






الكشف الأكثر فائدة ليس حدثًا واحدًا. أقوى إشارة هي السلسلة الكاملة التي تُلاحظ في نافذة زمنية قصيرة:
مساحة اسم المستخدم -> vmsplice/splice -> ESP/XFRM -> su -> شل جذر مع AUID لمستخدم عادي
IF
dirty_frag_unshare بواسطة auid>=1000
AND عدد (dirty_frag_vmsplice + dirty_frag_splice بواسطة نفس exe أو pid) >= 3 خلال 600 ثانية
AND نشاط MAC_IPSEC_EVENT / XFRM خلال 1200 ثانية
AND (dirty_frag_su_exec OR execve مع euid=0 و auid>=1000) خلال 1200 ثانية
THEN
تنبيه = "احتمال وجود LPE في لينكس عبر DirtyFrag CVE-2026-43284"
الخطورة = عالية / حرجة
euid=0 واحد فقط؛ فهذا يلتقط أيضًا استخدام sudo المشروع.unshare و vmsplice و splice ونشاط XFRM/ESP و su وإنشاء عملية جذر من جلسة مستخدم عادية.kernel.unprivileged_userns_clone حيثما يسمح توافق التطبيق بذلك.lost يساوي 0 أثناء الاختبار والمراقبة الإنتاجية.أظهرت حالة auditd المجمعة lost=2555، مما يعني أن بعض أحداث التدقيق قد تكون فُقدت. لا تزال السلسلة الرئيسية مرئية، ولكن يجب أن تزيد الاختبارات المستقبلية من backlog auditd وتؤكد lost=0 قبل تشغيل PoC.
يركز التقرير عمدًا على CVE-2026-43284 / XFRM/ESP لتجنب خلط نطاق كشف SOC مع مسارات أخرى متعلقة بـ DirtyFrag.
| المعامل | القيمة |
|---|
| التوزيعة | Ubuntu 24.04.4 LTS / noble |
| نواة الاختبار | 6.17.0-23-generic |
| المعمارية | x86_64 |
| المحاكاة الافتراضية | Oracle VirtualBox |
| المعالج | 12th Gen Intel(R) Core(TM) i5-12450H، 1 vCPU |
| الذاكرة العشوائية | 12 GiB |
| نظام الملفات الجذري | ext4 |
| مستخدم الاختبار | uid=1000(user)، gid=1000(user)، المجموعات تشمل sudo، adm، lpadmin |
| unprivileged_userns_clone | 1 |
| auditd | نشط، قواعد تدقيق DirtyFrag/LPE محملة |
| AppArmor | نشط؛ ملف تعريف unprivileged_userns ظاهر في السجلات |
| المسار | الوصف |
|---|
docs/DirtyFrag_CVE-2026-43284_auditd_detection_report.docx | تقرير DOCX باللغة الإنجليزية. |
evidence/logs/audit.log | سجل auditd الكامل يحتوي على الأحداث الخام. |
evidence/logs/dirtyfrag-filtered.log | سجل مفلتر يحتوي على أحداث متعلقة بـ DirtyFrag/LPE. |
evidence/logs/dirty_frag_vmsplice.log | أحداث vmsplice من عملية PoC. |
evidence/logs/dirty_frag_splice.log | أحداث splice من عملية PoC. |
evidence/logs/dirty_frag_execve_su.log | تنفيذ /usr/bin/su بعد نشاط PoC. |
evidence/logs/lpe_root_exec_from_user_session.log | العمليات المنفذة كجذر من جلسة المستخدم الأصلية. |
evidence/logs/audit-key-summary.txt | ملخص عدد الأحداث حسب مفتاح auditd. |
evidence/logs/audit-exec-summary.txt | ملخص الملفات القابلة للتنفيذ من aureport. |
evidence/logs/audit-rules-loaded.txt | قواعد الكشف النشطة في auditd. |
evidence/logs/system-info-table.md | جدول خط الأساس للنظام. |
evidence/screenshots/01-dirtyfrag-root-shell.png | لقطة شاشة تؤكد الانتقال من مستخدم إلى شل جذر. |
tools/generate-system-info-table.sh | نص مساعد استُخدم لإنشاء جدول معلومات النظام. |
| المفتاح | المعنى |
|---|
dirty_frag_unshare | تنفيذ unshare بواسطة مستخدم غير مميز؛ يشير إلى تحضير مساحة اسم المستخدم. |
dirty_frag_vmsplice | نشاط vmsplice من عملية مستخدم؛ إشارة رئيسية لذاكرة التخزين المؤقت للصفحات. |
dirty_frag_splice | نشاط splice من عملية مستخدم؛ مرتبط بـ vmsplice. |
dirty_frag_su_exec / dirty_frag_execve_su | تنفيذ /usr/bin/su بعد مرحلة ذاكرة التخزين المؤقت للصفحات. |
lpe_root_exec_from_user_session | execve مع euid=0 في جلسة يملكها auid>=1000؛ دليل قوي على LPE عند الارتباط. |
| الوقت | الحدث | الأثر | المعنى |
|---|
| 21:10:48 | تحميل قواعد auditd | audit-rules-loaded.txt، audit.log | المراقبة كانت نشطة قبل تنفيذ PoC. |
| 21:11:32 | unshare بواسطة ./exp | dirtyfrag-filtered.log | عملية المستخدم دخلت unprivileged_userns. |
| 21:11:32-21:11:39 | vmsplice / splice بواسطة ./exp | dirty_frag_vmsplice.log، dirty_frag_splice.log | سلوك ذاكرة التخزين المؤقت للصفحات مرئي عبر تتبع استدعاءات النظام. |
| 21:11:32-21:11:39 | MAC_IPSEC_EVENT / XFRM ESP | audit.log | أحداث SAD-add و SA-icv-failure على 127.0.0.1 مع SPI 0xdeadbeXX. |
| 21:11:39 | su - | dirty_frag_execve_su.log | محاولة دخول شل جذر بعد تنفيذ PoC. |
| 21:11:39 | sh / dash كجذر | lpe_root_exec_from_user_session.log | UID=root و EUID=root بينما AUID=user. |
| 21:11:48 | whoami كجذر | lpe_root_exec_from_user_session.log، لقطة شاشة | تأكيد يدوي للتصعيد الناجح. |
| 21:11:49 | id كجذر | lpe_root_exec_from_user_session.log، لقطة شاشة | تأكيد يدوي لـ uid=0(root). |