
CVE-2026-43284 وCVE-2026-43500 إثبات المفهوم والاستغلال لـ Dirty Frag
عرض توضيحي قابل للقراءة N4C لـ CVE-2026-43284 (XFRM/ESP) و CVE-2026-43500 (RxRPC/RXKAD).
يجيب إثبات المفهوم على سؤال واحد: هل يمكن لعملية غير مميزة تغيير ذاكرة التخزين المؤقت للصفحات لملف مملوك للجذر وقابل للقراءة فقط من خلال جزء sk_buff مشترك؟
لا يقوم بالكتابة فوق /usr/bin/su أو /etc/passwd، ولا يثبّت حمولة، ولا يستدعي
PAM/NSS، ولا يبدأ قشرة. يبقى الاستغلال العام الكامل على فرع exploit.
dirtyfrag-poc.c — بدائيتا ذاكرة التخزين المؤقت للصفحات وواجهة سطر أوامر صغيرة.prepare-lab.sh — ينشئ ملفين تجريبيين غير ضارين مملوكين للجذر.run_as_1000.c / run-as-1000 — يخفض قشرة الجذر للجهاز الافتراضي إلى uid/gid 1000.Makefile — بناء ثابت قابل للتكرار.--esp)ملف تجريبي للقراءة فقط
-> splice(ملف -> أنبوب -> مقبس UDP)
-> جزء skb مرقّم بالصفحات
-> تخزين ESP authencesn في المكان
-> أول أربع بايتات مخزنة مؤقتًا تصبح "N4C!"
يُستخدم ارتباط أمان XFRM واحد فقط وكتابة واحدة من أربع بايتات. تمت إزالة ELF لقشرة الجذر وحلقة التجميع ذات 48 مشغلًا من الاستغلال العام.
--rxrpc)ملف تجريبي للقراءة فقط
-> splice(ملف -> حزمة بيانات RxRPC مزورة)
-> فك تشفير RXKAD pcbc(fcrypt) في المكان
-> كتابة واحدة من 8 بايتات يختارها المفتاح
-> تختلف البايتات المخزنة مؤقتًا عن الملف التجريبي الأصلي
لا يبحث إثبات المفهوم عن نص عادي بشكل كلمة مرور لأن أي كتلة من ثمانية بايتات متغيرة تثبت البدائية بالفعل. تمت إزالة القوة الغاشمة لـ fcrypt دون اتصال، ومخطط الكاتب المتداخل، وPAM، وgetent، وsu بدون كلمة مرور، ومعالجة PTY، ورمز القشرة.
استخدم فقط في جهاز افتراضي Linux قابل للتصرف ومصرح به يحتوي على ميزات النواة المطلوبة.
make
# شغّل مرة واحدة كمستخدم جذر للجهاز الافتراضي لإعادة إنشاء بايتات الملف التجريبي المعروفة.
./prepare-lab.sh
# يقوم المساعد بعد ذلك بتشغيل إثبات المفهوم كـ uid/gid 1000.
./run-as-1000 ./dirtyfrag-poc --esp --verbose
./prepare-lab.sh
./run-as-1000 ./dirtyfrag-poc --rxrpc --verbose
حالة الخروج:
0 — ظهرت العلامة في ذاكرة التخزين المؤقت للصفحات؛ لوحظت البدائية.1 — لم تظهر العلامة؛ تم رفض الكتابة عبر الجزء المشترك.2 — ملف تجريبي غير صالح، بيئة غير مدعومة، أو فشل في الإعداد.3 — فشل مشغل RxRPC قبل التحقق.أعد إنشاء الملفات التجريبية، أو أعد تشغيل الجهاز الافتراضي القابل للتصرف، بين عمليات التشغيل.
main() بدائية واحدة ويرفض التشغيل كـ uid 0.esp_poc() حالة XFRM/ESP ذات الأربع بايتات.rxrpc_poc() مشغلًا واحدًا ومقارنة مباشرة قبل/بعد.اشتُق بناء البروتوكول من شيفرة مصدر نواة Linux ومن التنفيذ المرجعي العام
V4bel/dirtyfrag
عند الالتزام aab16fcada27142dd8ce8704906cf6736cf213b8. أعادت N4C كتابة تدفق التنفيذ
في هذا العرض التوضيحي المقتصر على الملفات التجريبية وأزالت حمولة تصعيد الامتيازات
ومراحل المستهلك.