Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Dirty-Frag-CVE-2026-43284 — تقرير حول "Dirty Frag"، وهي سلسلة ثغرات تصعيد الامتيازات المحلية (LPE) في لينكس تسمح لمستخدم غير مميز بالحصول على صلاحيات الجذر. | Kitploit
أدوات/GitHubGitHub/kuniyal08/dirty-frag-cve-2026-43284
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتحقيق الجنائي الرقميكشف التسللالتعلم والتعليمالاستجابة للحوادثمختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHub
kuniyal08/dirty-frag-cve-2026-43284

Dirty-Frag-CVE-2026-43284

تقرير حول "Dirty Frag"، وهي سلسلة ثغرات تصعيد الامتيازات المحلية (LPE) في لينكس تسمح لمستخدم غير مميز بالحصول على صلاحيات الجذر.

عرض المستودع
117منذ شهر واحدلم تتم المراجعة بعد

Dirty Frag (CVE-2026-43284 وCVE-2026-43500)

مختبر إعادة إنتاج وكشف لسلسلة تصعيد صلاحيات محلية في نواة لينكس.

الحالة: تم التحقق. أكملت إعادة الإنتاج والتحقق بدون ملفات والكشف على مستوى استدعاءات النظام في المختبر (النواة 6.18.9+kali-amd64). هذه الوثيقة سجل مخبري. كل ادعاء أدناه تمت ملاحظته أثناء تشغيل إعادة الإنتاج. لقطات الشاشة والقطع الأثرية هي التقاطات حقيقية من الجهاز الافتراضي.

جدول المحتويات

  • نظرة عامة
  • لماذا هذا مهم
  • التفاصيل التقنية
  • بيئة المختبر
  • هيكل المستودع
  • قائمة التقدم
  • إجراءات إعادة الإنتاج
  • هندسة الكشف
  • الاستجابة للحوادث
  • التخفيف
  • استكشاف الأخطاء وإصلاحها
  • المراجع والإسناد
  • الجوانب القانونية والأخلاقية

نظرة عامة

يجمع Dirty Frag بين خطأين منطقيين حتميين في نواة لينكس. تسمح هذه الأخطاء لمستخدم محلي غير مميز بالكتابة فوق ذاكرة التخزين المؤقت للصفحات (page cache) للملفات القابلة للقراءة فقط (مثل /usr/bin/su) والحصول على قشرة صلاحيات الجذر:

المتغيرCVEنقطة الاستغلالمسار التشغيليتطلب مساحة أسماء مستخدمين غير مميزة
كتابة ذاكرة التخزين المؤقت للصفحات عبر xfrm‑ESPCVE‑2026‑43284crypto_authenc_esn_decrypt() في esp_input()socket(AF_INET) مع تغليف UDP، ثم xfrm_input()نعم (CAP_NET_ADMIN)
كتابة ذاكرة التخزين المؤقت للصفحات عبر RxRPCCVE‑2026‑43500rxkad_verify_packet_1() (pcbc(fcrypt))socket(AF_RXRPC)لا

يستخدم كلا المتغيرين نفس النمط الجذري مثل Dirty Pipe وCopy Fail. يضع استدعاء النظام splice(2) مرجعًا إلى صفحة من ذاكرة التخزين المؤقت للصفحات لملف في فتحة frag الخاصة بـ sk_buff على جانب المرسل. يمكن للمهاجم قراءة هذا الملف فقط. ثم يقوم كود النواة على جانب الاستقبال بتنفيذ عملية تخزين تشفيرية في المكان فوق هذا الجزء. يؤدي هذا إلى تغيير ذاكرة التخزين المؤقت للصفحات في الذاكرة العشوائية (RAM). لا يحدث أي كتابة على القرص، لذا لا يمكن لمراقبة سلامة الملفات (AIDE, Tripwire) رؤيتها. الهجوم حتمي. لا يحتوي على نافذة سباق ولا يسبب انهيار النواة عند الفشل.

  • النطاق المتأثر (وفقًا للنشرة الرسمية):
    • متغير ESP: من cac2661c53f3 (2017‑01) إلى f4c50a4034e6 (تم التصحيح 2026‑05‑05)
    • متغير RxRPC: من 2dc334f1a63a (2023‑06) إلى aa54b1d27fe0 (تم التصحيح 2026‑05‑10)
  • إثبات المفهوم العام: V4bel/dirtyfrag (تم الكشف عنه 2026‑05‑07)
  • النشرات: CERT VU#980487, Red Hat Bugzilla 2467771
  • الخطورة (CVSS 3.1، وفقًا لـ Canonical): CVE-2026-43284 = 8.8 (عالية)، CVE-2026-43500 = 7.8 (عالية)

لماذا هذا مهم

Dirty Frag هو تصعيد صلاحيات محلي بدون ملفات. يفسد ذاكرة التخزين المؤقت للصفحات في الذاكرة، وليس الملف على القرص. لا يمكن لمراقبة سلامة الملفات التقليدية رؤيته. يجب أن يحدث الكشف على طبقة استدعاءات النظام. تستخدم السلسلة بدائيات استدعاءات النظام التالية: socket(AF_ALG)/socket(AF_RXRPC)، وsplice، وunshare(CLONE_NEWUSER|CLONE_NEWNET). ينشئ مسار ESP أيضًا مقابس UDP من نوع AF_INET ومقابس netlink. هذه الطبقة هي محور هندسة الكشف في هذا المستودع.

التفاصيل التقنية

يستخدم كلا المتغيرين نفس نقطة الاستغلال: تشفير في المكان يقوم بتخزين بايتات على صفحة من ذاكرة التخزين المؤقت للصفحات يضعها المهاجم باستخدام splice(2).

متغير ESP (CVE-2026-43284)

  1. يفتح المهاجم زوج مقابس UDP على الحلقة المحلية (loopback) ويكوّن جانب الاستقبال باستخدام UDP_ENCAP_ESPINUDP.
  2. يسجل رأس سلك ESP مزورًا (SPI وseq_no_lo وIV) في أنبوب باستخدام vmsplice، ثم 16 بايت من /usr/bin/su عند إزاحة الملف المستهدفة باستخدام splice.
  3. عملية splice واحدة تدفع الأنبوب إلى مقبس الإرسال. يضبط splice_to_socket() علامة MSG_SPLICE_PAGES. يضع هذا صفحة ذاكرة التخزين المؤقت لـ /usr/bin/su مباشرة في skb->frags[0].
  4. عند الاستقبال، يعمل هذا التسلسل: xfrm4_udp_encap_rcv، ثم xfrm_input، ثم esp_input(). يتجاوز فرع skip_cow الضعيف (!skb_cloned() && !skb_has_frag_list()) دالة skb_cow_data(). يقوم بتنفيذ فك تشفير AEAD في المكان مع استخدام صفحة ذاكرة التخزين المؤقت كمصدر ووجهة معًا.
  5. يصدر crypto_authenc_esn_decrypt() عملية تخزين للبتات الـ 32 العليا من ESN. تلك القيمة هي replay_esn->seq_hi. يختار المهاجم هذه القيمة عند تسجيل SA باستخدام سمة netlink XFRMA_REPLAY_ESN_VAL.

يتحكم المهاجم في كل من الموقع (إزاحة splice) والقيمة (4 بايتات). يعمل التحقق من المصادقة بعد عملية التخزين، لذا لا تكتشف طبقة التشفير الكتابة أبدًا. يتطلب هذا المتغير CAP_NET_ADMIN ويستخدم unshare(CLONE_NEWUSER|CLONE_NEWNET).

متغير RxRPC (CVE-2026-43500)

تنفذ rxkad_verify_packet_1() فك تشفير كتلة واحدة pcbc(fcrypt) مباشرة على جزء skb المثبت بـ splice. لا تنسخ البيانات أولاً. يختار المهاجم مفتاح جلسة (add_key("rxrpc", …)) بحيث يساوي decrypt(ciphertext) قيمة desired_plaintext. ينتج عن هذا تخزين 8 بايتات. يستهدف هذا المتغير /etc/passwd. لا يحتاج إلى مساحة أسماء مستخدمين. يتطلب وحدة rxrpc.ko (محملة افتراضيًا على Ubuntu).

نتيجة الاستغلال

يستهدف إثبات المفهوم العام /usr/bin/su. يكتب 48 عملية تخزين ESP بحجم 4 بايتات لكل منها (192 بايتًا عند إزاحة الملف 0). يستبدل أول بايتات ذاكرة التخزين المؤقت للصفحات بملف ELF ثابت لقشرة الجذر. نقطة دخول ELF تنفذ setgid(0); setuid(0); setgroups(0,NULL); execve("/bin/sh", …). ثم يعطي تنفيذ واحد لـ execve("/usr/bin/su") قشرة صلاحيات الجذر.

الإصلاح الرسمي

تصحيح ESP (الرئيسي f4c50a4034e6) يضع علامة على أجزاء الصفحات التي تصل عبر splice() بعلامة SKBFL_SHARED_FRAG. يتحقق فرع skip_cow في esp_input() الآن أيضًا من هذه العلامة. تمر مقابس skb ذات الأجزاء المشتركة عبر skb_cow_data() قبل فك تشفير AEAD في المكان.

تصحيح RxRPC (الرئيسي aa54b1d27fe0) يضيف فحص skb->data_len بجوار فحص skb_cloned() الموجود. تنسخ النواة مقبس skb غير الخطي مع بيانات مقسمة إلى صفحات قبل فك تشفير pcbc(fcrypt) في المكان.

بيئة المختبر

المكوّنالتفاصيل
برنامج المحاكاة الافتراضيةVirtualBox
الجهاز الافتراضي المستهدفKali Linux 2026.1 (تمت استعادة لقطة إلى حالة ضعيفة)
النواة6.18.9+kali‑amd64 (أقدم من إصلاحات مايو 2026)
إثبات المفهومV4bel/dirtyfrag (ملف C واحد)
الكشفauditd (القواعد في detection/dirtyfrag.rules)

لقطة شاشة لإعداد مختبر VirtualBox:

إعداد مختبر VirtualBox

هيكل المستودع

.
├── README.md                        # سجل المختبر هذا
├── detection/
│   ├── dirtyfrag.rules              # قواعد كشف على مستوى استدعاءات النظام لـ auditd
│   ├── ausearch_dirtyfrag_observed.txt  # مخرجات كشف الاستغلال الحقيقية
│   ├── sigma/
│   │   └── dirty_frag_exploit.yml   # قاعدة Sigma لكشف SIEM
│   └── yara/
│       └── dirty_frag_exploit.yar   # قاعدة YARA لكود إثبات المفهوم على القرص/الذاكرة
├── mitigation/
│   └── dirtyfrag_mitigation.sh      # قائمة حظر الوحدات + مسح ذاكرة التخزين المؤقت للصفحات
├── poc/
│   └── check_vulnerable.py          # فاحص أولي غير مدمر
├── reports/
│   └── incident-dirtyfrag.md        # دليل الاستجابة للحوادث
└── screenshots/                     # التقاطات حقيقية من الجهاز الافتراضي للمختبر

قائمة التقدم

  • الفحص الأولي: تشغيل poc/check_vulnerable.py وتأكيد النواة/الوحدات/مساحة أسماء المستخدمين
  • أخذ لقطة VirtualBox (نقطة استعادة قبل الاستغلال)
  • إنشاء testuser غير مميز
  • استنساخ وتجميع إثبات المفهوم V4bel
  • تشغيل الاستغلال والتحقق من قشرة الجذر
  • التحقق من عدم وجود ملفات: التقاط تجزئات /usr/bin/su التالفة والمستعادة
  • تنظيف ذاكرة التخزين المؤقت الملوثة (drop_caches أو إعادة التشغيل)
  • نشر detection/dirtyfrag.rules والتحقق من تنبيهات auditd
  • إنشاء قواعد Sigma وYARA من مخرجات auditd الحقيقية
  • كتابة دليل الاستجابة للحوادث (reports/incident-dirtyfrag.md)

إجراءات إعادة الإنتاج

تنزيل الأداة