
تمرين كشف مختبري لـ DirtyFrag (CVE-2026-43284) - تصعيد صلاحيات نواة لينكس عبر فساد ذاكرة التخزين المؤقت للصفحات xfrm-ESP. شرح كامل يغطي تنفيذ الاستغلال، ثغرات الكشف، وقواعد EQL المصححة باستخدام Elastic Stack
التصنيف: مختبر داخلي - CyberLAB
التاريخ: 24 مايو 2026
المنصة: Elastic Stack v9.4.1
الحالة: تم تأكيد الكشف
تمرين استغلال موجه يحاكي خصماً لديه وصول أولي يستخدم DirtyFrag (CVE-2026-43284)، وهي ثغرة تصعيد صلاحيات في نواة Linux. سيناريو المهاجم المحاكي: مستخدم ذو صلاحيات منخفضة (saskia، uid=1001) تم الحصول عليه عبر بيانات اعتماد مُخترقة يحاول التصعيد إلى root على مضيف Linux داخلي. استخدم المختبر جهاز Ubuntu معرض للخطر عمداً (ubuntu-vuln، نواة 6.0.0-22-generic) معزولاً عن شبكات الإنتاج.
حقق المهاجم وصولاً كاملاً كـ root (uid=0) داخل بيئة المختبر. أنشأ حزمة Elastic Security للكشف 3 تنبيهات عالية الخطورة (درجة المخاطرة 73) حددت بشكل صحيح سلسلة الاستغلال. ومع ذلك، تطلب الكشف ضبطاً يدوياً - التكوين الافتراضي كان به ثغرات كانت ستؤدي إلى فقدان التنبيهات.
الخلاصة: مضيفات Linux غير المُصححة التي تعمل بنواة <= 6.x معرضة للخطر. إذا كان المهاجم لديه بالفعل موطئ قدم بصلاحيات منخفضة، فإن هذا الاستغلال يمنحه صلاحيات root كاملة بصمت وسرعة، دون أي أثر على القرص يمكن لأدوات سلامة الملفات رؤيته.
| العنصر | التفصيل |
|---|---|
| الثغرة | DirtyFrag - CVE-2026-43284 (مسار xfrm-ESP)، CVE-2026-43500 (مسار RxRPC) |
| تأثير CVSS | تصعيد صلاحيات محلي كامل إلى root |
| النوى المتأثرة | نواة Linux >= يناير 2017 (عمر 9 سنوات) |
| التوزيعات المتأثرة | Ubuntu 24.04.4، RHEL 10.1، AlmaLinux 10، openSUSE، CentOS Stream 10، Fedora 44 |
| تجاوز سلامة الملفات | الملفات على القرص لم تتغير - AIDE، Tripwire، مراقبة التجزئة جميعها تبلغ عن نظافة الملفات |
| PoC عام | متوفر (V4bel/dirtyfrag على GitHub) |
| الوقت إلى root | < 10 دقائق من موطئ القدم بصلاحيات منخفضة |
auditd الافتراضية لا تنتج أي دليل. بدون قواعد استدعاء نظام صريحة لـ socket و splice و unshare، يعمل الاستغلال بصمت - لا سجلات، لا تنبيهات. النشر الافتراضي لـ Elastic Agent لا يضيف هذه القواعد تلقائياً.process.parent.pid كمفتاح ارتباط. عملياً، يقوم DirtyFrag بإنشاء عمليات وسيطة، مما يكسر هذا الارتباط. تم تحديد الإصلاح - الارتباط بواسطة auditd.session - وتطبيقه خلال هذا التمرين./etc/shadow، ووصل إلى مفاتيح SSH المصرح بها، وكتب علامة استمرارية (/root/pwned.txt)، وبدأ استطلاع الشبكة عبر nc. حدث كل ذلك خلال 30 دقيقة من الوصول الأولي.| الأولوية | الإجراء |
|---|---|
| فورية | تصحيح نواة Linux إلى إصدار مُصلح على جميع المضيفات. تطبيق النصائح الأمنية من البائعين لـ Ubuntu و RHEL و AlmaLinux و openSUSE و CentOS و Fedora. |
| قصيرة المدى | نشر قواعد استدعاء نظام auditd صريحة لـ socket و splice و unshare على جميع مضيفات Linux المراقبة بواسطة Elastic Agent. |
| قصيرة المدى | تحديث قواعد الكشف EQL للارتباط بواسطة auditd.session بدلاً من process.parent.pid لتسلسلات معالجة مساحة الاسم. |
| مستمرة | التعامل مع تنبيهات تصعيد الصلاحيات ذات درجة المخاطرة >= 73 كأولوية عالية في الفرز. القاعدة الحالية تُطلق في غضون ثوانٍ من التصعيد. |
الهدف: التحقق من تغطية الكشف لاستغلال DirtyFrag في مختبر SOC المنزلي، وتحديد ثغرات الكشف، وإنتاج قاعدة كشف مصححة تستند إلى سلوك المهاجم المرصود.
نموذج التهديد: خصم محاكى لديه وصول أولي بعد الاختراق باستخدام بيانات اعتماد مُخترقة لحساب مستخدم بصلاحيات منخفضة (saskia، uid=1001). الهدف: تصعيد الصلاحيات إلى root عبر DirtyFrag باستخدام مسار استقبال xfrm-ESP. تم تنفيذ التمرين عبر وحدة تحكم Proxmox - وهو مكافئ وظيفياً للوصول عبر SSH بعد الاختراق.
تم النظر في مستويين من قدرات المهاجم:
غطى هذا التمرين المستوى العادي.
DirtyFrag هو الثالث في عائلة من أخطاء نواة Linux ذات الصلة التي تسيء استخدام نفس السبب الجذري:
| CVE | الاسم المستعار | المقدَم | المسار |
|---|---|---|---|
| CVE-2022-0847 | Dirty Pipe | - | pipe |
| CVE-2026-31431 | Copy Fail | - | splice |
| CVE-2026-43284 | DirtyFrag | يناير 2017 (الالتزام cac2661c53f3) | xfrm-ESP |
| CVE-2026-43500 | DirtyFrag | يونيو 2023 (الالتزام 2dc334f1a63a) | RxRPC |
السبب الجذري: لم تقم مسارات إلحاق مخططات بيانات IPv4/IPv6 بتعيين SKBFL_SHARED_FRAG بعد أن زرعت skb_splice_from_iter() صفحة من ذاكرة التخزين المؤقت للملفات في مخزن مؤقت للمقبس (sk_buff). ثم قام مسار إدخال ESP بتنفيذ تشفير في المكان على صفحات ذاكرة تخزين مؤقت يتحكم فيها المهاجم، معاملًا إياها كـ skbs غير خطية عادية غير مستنسخة.
بدائية الاستغلال: كتابة موجهة بـ 4 أو 8 بايت في ذاكرة التخزين المؤقت للملفات. حتمي - لا يتطلب شرط سباق.
سلسلة الاستغلال:
/usr/bin/su) إلى ذاكرة التخزين المؤقت للملفاتsplice() بحيث تكون صفحة الملف في frag[0] من struct sk_buffxfrm-ESPexecve() في النواة - تُرجع بايتات تالفةخاصية التهرب الحرجة: لا يتم تعديل الملف على القرص أبداً. أدوات مراقبة سلامة الملفات (AIDE، Tripwire، التحقق من التجزئة) جميعها تبلغ عن أن الملف المستهدف نظيف.
التوزيعات المؤكدة القابلة للاختراق: Ubuntu 24.04.4، RHEL 10.1، AlmaLinux 10، openSUSE Tumbleweed، CentOS Stream 10، Fedora 44.
| المكون | التفاصيل |
|---|---|
| خادم Fleet / مضيف ELK | ubuntu-tm / elk-docker - 172.66.66.30 (داخلي للمختبر) |
| حزمة Elastic | v9.4.1 (Elasticsearch، Kibana، Logstash - Docker) |
| المضيف المستهدف (الضحية) | ubuntu-vuln - 172.66.66.27 |
| نواة الضحية | 6.0.0-22-generic (قابلة للاختراق) |
| مستخدم الضحية | saskia - uid=1001، مجموعات=1001(saskia)،27(sudo)،100(users) |
| Elastic Agent | v9.4.1 مع auditbeat |
| نظام كشف الشبكات (NIDS) | Suricata 8.0.5 على مستشعر مخصص |
| Kibana | http://172.66.66.30:5601 (داخلي للمختبر) |
التيليمتري النشط وقت التمرين:
| مجموعة البيانات | النسبة |
|---|---|
suricata.eve | 75.2% |
elastic_agent.fleet_server | 10.8% |
elastic_agent | 9.1% |
elastic_agent.filebeat | 1.9% |
elastic_agent.auditbeat | 1.4% |
auditd_manager.auditd | 0.5% |
system.auth | 0.2% |
system.syslog | 0.1% |
تم عزل شبكة المختبر قبل التمرين. تم تأكيد تعطيل اسم القاعدة Cyber_escape_door - مما يمنع الوصول الجانبي إلى شبكات VLAN الأخرى أو الإنترنت.

تم تأكيد النواة القابلة للاختراق وحساب الصلاحيات المنخفضة على ubuntu-vuln:```
saskia@ubuntu-vuln:$ uname -r
6.0.0-22-generic
saskia@ubuntu-vuln:$ whoami
saskia
saskia@ubuntu-vuln:~$ id
uid=1001(saskia) gid=1001(saskia) groups=1001(saskia),27(sudo),100(users)
