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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
DIRTYFAIL — أداة كشف + PoC لثغرات كتابة ذاكرة التخزين المؤقت للصفحات في Linux: Copy Fail (CVE-2026-31431) و Dirty Frag (CVE-2026-43284/43500). لأغراض البحث الأمني المصرح به فقط. | Kitploit
أدوات/GitHubGitHub/karazajac/dirtyfail
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالأوراق والأبحاثالتعلم والتعليمالفريق الأحمرالهروب من الحاويةاستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubkarazajac/dirtyfail
261216منذ 4 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

DIRTYFAIL

أداة كشف + PoC لثغرات كتابة ذاكرة التخزين المؤقت للصفحات في Linux: Copy Fail (CVE-2026-31431) و Dirty Frag (CVE-2026-43284/43500). لأغراض البحث الأمني المصرح به فقط.

عرض المستودع

DIRTYFAIL

أداة كشف موحّدة ومنصة اختبار لإثبات المفهوم (PoC) لعائلتَي Copy Fail و Dirty Frag الخاصتين بثغرات الكتابة في ذاكرة التخزين المؤقت للصفحات في لينكس.``` ██████╗ ██╗██████╗ ████████╗██╗ ██╗███████╗ █████╗ ██╗██╗ ██╔══██╗██║██╔══██╗╚══██╔══╝╚██╗ ██╔╝██╔════╝██╔══██╗██║██║ ██║ ██║██║██████╔╝ ██║ ╚████╔╝ █████╗ ███████║██║██║ ██║ ██║██║██╔══██╗ ██║ ╚██╔╝ ██╔══╝ ██╔══██║██║██║ ██████╔╝██║██║ ██║ ██║ ██║ ██║ ██║ ██║██║███████╗ ╚═════╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝

DIRTYFAIL هي أداة صغيرة مكتوبة بلغة C وموثّقة جيدًا لباحثي الأمن.
تكتشف ما إذا كان مضيف Linux معرّضًا للثغرات الثلاث في هذه
العائلة، ومع — تأكيد صريح مكتوب — تشغّل إثبات
مفهوم حقيقيًا يلقي بالمتصل في شيل جذر على نظام معرّض.

| CVE / الاختلاف | الاسم | تغطية DIRTYFAIL |
|---|---|---|
| **CVE-2026-31431** | Copy Fail (كتابة في ذاكرة التخزين المؤقت للصفحات عبر algif_aead وبوحدة `authencesn`) | كشف + PoC كامل |
| **CVE-2026-43284 v4** | Dirty Frag — كتابة في ذاكرة التخزين المؤقت للصفحات عبر IPv4 xfrm-ESP | كشف + PoC كامل |
| **CVE-2026-43284 v6** | Dirty Frag — كتابة في ذاكرة التخزين المؤقت للصفحات عبر IPv6 xfrm-ESP (`esp6`) | كشف + PoC كامل |
| **CVE-2026-43500** | Dirty Frag — كتابة في ذاكرة التخزين المؤقت للصفحات عبر RxRPC | كشف + PoC كامل |
| Copy Fail GCM variant | كتابة في ذاكرة التخزين المؤقت للصفحات عبر xfrm-ESP `rfc4106(gcm(aes))` | كشف + PoC كامل |

**أوضاع إضافية:**

- **`--scan --active`** — استطلاعات نشطة للتخزين عبر ملف حارس (sentinel-STORE). الاستطلاع الافتراضي `--scan` يبلّغ عن الشروط المسبقة لكل ثغرة (النواة، الوحدات، حالة LSM) بالإضافة إلى استطلاع نشط لآلية Copy Fail البدائية. إضافة `--active` توسّع استطلاع STORE عبر الملف الحارس ليشمل البدائل الأربعة الأخرى (ESP v4 وESP v6 وRxRPC وGCM): كل منها يُطلق مشغّل النواة ضد ملف حارس في `/tmp` ويبلّغ عن VULNERABLE فقط إذا هبطت بايتات العلامة فعليًا. هذه هي الطريقة الوحيدة للتمييز بين نواة مطبَّق عليها تصحيح backported (الشروط المسبقة تقول معرّضة لكن الاستطلاع يقول سليمة) وبين نواة غير مصححة دون تشغيل الاستغلال الكامل. لا يُلمس `/etc/passwd` أبدًا. يعاير تلقائيًا إزاحة STORE لـ V6 حسب بناء النواة.
- **`--exploit-backdoor`** — باب خلفي دائم بصلاحيات uid-0: استبدال بطول مطابق لسطر `nologin`/`false`/`sync` في `/etc/passwd` بـ `dirtyfail::0:0:<pad>:/:/bin/bash`. يستمر بعد خروج الشيل حتى يتم إخلاء الصفحة. تُخزَّن الحالة في `/var/tmp/.dirtyfail.state` لأجل `--cleanup-backdoor`. اسم المستخدم `dirtyfail` مُطابَق عمدًا مع هذا المشروع بحيث يمكن التعرف عليه فورًا في أي تدقيق — غيّر `NEW_USER` في `src/backdoor.c` إذا كنت بحاجة إلى معرّف مختلف لمهمة red-team مصرّح بها.
- **تجاوز AppArmor** — يُبطل سياسة Ubuntu القائمة على `apparmor_restrict_unprivileged_userns=1` عبر إعادة تنفيذ قفزة واحدة `change_onexec("crun")` إلى ملف تعريف غير مقيد (unconfined) يحتفظ بصلاحيات userns. كل وضع استغلال يتعامل مع هذا داخليًا عبر fork: يبقى الأب في namespace init، ويقوم الابن برقصة التجاوز، ويقرأ الأب ذاكرة التخزين المؤقت العامة للصفحات ويشغّل `su` للحصول على جذر init-ns حقيقي. ما تزال العلامة القديمة `--aa-bypass` موجودة لتصحيح أخطاء آلية التجاوز بمعزل. انظر [§8.5 البنية](#85-architecture-outerinner-fork-based-bypass).

## تم التحقق من العمل على

تم التحقق من DIRTYFAIL **تجريبيًا من البداية إلى النهاية** عبر عدة
توزيعات وإصدارات نواة. تعكس المصفوفة أدناه نتائج الاختبار لكل وضع من
تشغيل كل وضع `--exploit-*` ضد تثبيت نظيف لكل توزيعة.

| التوزيعة | النواة | LSM | Copy Fail | xfrm-ESP v4 | xfrm-ESP v6 | RxRPC | GCM | الباب الخلفي | shellcode لـ su |
|---|---|---|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| Ubuntu 24.04 LTS | `6.8.0-111-generic` | AppArmor | 🛡²  | ✅ | ✅ | ✅ | ✅¹ | ✅¹ | (غير مُختبَر) |
| Debian 13.4 | `6.12.86+deb13` | لا يوجد | 🛡 | 🛡 | 🛡 | 🛡 | 🛡 | 🛡 | 🛡⁵ |
| AlmaLinux 10.1 | `6.12.0-124.8.1.el10_1` | SELinux | ✅ | ✅ | ✅ | ⏭³ | ✅ | ✅ | ✅ |
| Fedora 44 (Server) | `6.19.10-300.fc44` | SELinux | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Ubuntu 26.04 LTS | `7.0.0-15-generic` | AppArmor (مُقوّى) | 🛡 | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁴ | 🛡⁵ |

**المفتاح:** ✅ الاستغلال نجح وأعطى جذر init-ns حقيقي · 🛡 مخفَّف — لا يمكن للاستغلال الوصول إلى ثغرة النواة (النواة مُصحَّحة أو LSM يحجب المسار غير المميز) · ⏭ غير قابل للتطبيق (شرط مسبق مفقود)

### التحقق من الاستطلاع النشط (`--scan --active`)

تُضيف علامة `--active` استطلاع STORE عبر ملف حارس لكل ثغرة أثناء
الاكتشاف. تحقّقنا من مخرجات الاستطلاع ضد نفس التوزيعات الأربع
أعلاه (Debian وFedora وAlmaLinux وUbuntu 26.04) — المصفوفة أدناه
تعرض نتيجة الاستطلاع لكل وضع وتطابق الحقيقة الأرضية للاستغلال الكامل واحد لواحد:

| التوزيعة | استطلاع Copy Fail | استطلاع ESP v4 | استطلاع ESP v6 | استطلاع RxRPC | استطلاع GCM |
|---|:-:|:-:|:-:|:-:|:-:|
| Debian 13.4 | intact 🛡 | intact 🛡 | intact 🛡 | intact 🛡 | intact 🛡 |
| Fedora 44   | marker @0 ✅ | STORE @0 ✅ | STORE @8 ✅ | byte change ✅ | sentinel[0] 0x41→0x27 ✅ |
| AlmaLinux 10.1 | marker @0 ✅ | STORE @0 ✅ | STORE @8 ✅ | preconds ⏭ | sentinel changed ✅ |
| Ubuntu 26.04 | intact 🛡 | LSM-blocked 🛡 | LSM-blocked 🛡 | LSM-blocked 🛡 | LSM-blocked 🛡 |

إن إزاحة هبوط STORE لاستطلاع V6 (8 على Fedora وAlma) تطابق
القيمة التجريبية `V6_STORE_SHIFT` التي يكتشفها `calibrate_v6_shift()` في
وقت التشغيل — مما يؤكد أن المعايرة التلقائية تستبدل الثابت
المُرمَّز مسبقًا بشكل صحيح عبر بناءات النواة.

¹ يتطلب وضعا GCM والـ Backdoor أن تكون وحدة `algif_aead` قابلة للتحميل. يأتي Ubuntu 24.04 مع ملف `/etc/modprobe.d/disable-algif_aead.conf` الذي يدرجها في القائمة السوداء كتخفيف لثغرة Copy Fail. عند إزالة القائمة السوداء (مثلًا على نواة سابقة لتطبيق التخفيف)، يعمل كلا الوضعين من البداية إلى النهاية.

² مسار algif_aead الخاص بـ Copy Fail مخفَّف عبر القائمة السوداء لـ modprobe؛ آلية الثغرة الأساسية في النواة هي نفسها سواء كان `authencesn` قابلاً للوصول أم لا. تستقر xfrm-ESP وRxRPC ومتغير GCM جميعها على نفس النواة لأنها لا تمر عبر algif_aead.

³ حزمة `kernel-modules-extra` في AlmaLinux 10 غير مثبتة افتراضيًا في تثبيت Minimal، لذلك يكون `rxrpc.ko` مفقودًا على القرص. تثبيت `kernel-modules-extra-$(uname -r)` من EPEL أو مستودع AlmaLinux الإضافي يعيد الوحدة؛ وعلى تثبيت Minimal قياسي يكون RxRPC غير قابل للوصول.

⁴ **يعمل Ubuntu 26.04 LTS على منع الاستغلال غير المميز بشكل شامل.**
النواة المُرفقة `7.0.0-15.15` (صدرت في 2026-04-22) **تسبق
تصحيح السلسلة الرئيسية `f4c50a4034e6` (المدمج في 2026-05-07) بنحو أسبوعين** — لذا
فالثغرة ما تزال موجودة فعليًا في النواة. دفاع Ubuntu هو
**الدفاع في العمق عبر تحصين AppArmor**، وليس تصحيحًا للنواة:

- `apparmor_restrict_unprivileged_userns=1` مفعّل افتراضيًا.
- عند `unshare(CLONE_NEWUSER)`، تقوم آلية فرض AppArmor على مستوى النواة
  بتحويل تلقائي لأي ملف تعريف (بما في ذلك تلك الموسومة بـ `(unconfined)`
  مثل `crun` و`chrome` و`unconfined` الافتراضي) إلى
  ملف تعريف فرعي `<profile>//&unprivileged_userns (mixed)` يحتوي على
  `audit deny capability`. لا يحصل uid 0 داخل userns الجديد على أي صلاحيات.
- `change_onexec` إلى ملف تعريف مختلف لا يساعد — حتى ملف
  تعريف `crun` (الذي لديه صلاحية `userns,` صريحة و
  `flags=(unconfined)`) يتحول تلقائيًا عند unshare. تم التحقق عبر
  `aa-exec -p crun bash -c 'unshare -U -n cat /proc/self/attr/current'`
  → `crun//&unprivileged_userns (mixed)`.
- `newuidmap`/`newgidmap` (setuid root) يكتبان uid_map بنجاح،
  لكن `setresuid(0)` تنجح بعد ذلك بينما يُعيد `ioctl(SIOCSIFFLAGS)` و
  كل استدعاء نظام آخر محكوم بـ CAP_NET_ADMIN قيمة EPERM لأن
  رفض الصلاحية يكون لكل namespace وليس لكل uid.

يُجهّز ثنائي DIRTYFAIL آلية التجاوز بشكل صحيح ويصل إلى المرحلة الثانية،
لكنه لا يستطيع الحصول على CAP_NET_ADMIN داخل userns الجديد. البنية
التحتية للاستغلال محجوبة في طبقة LSM بغض النظر عن تقنية التجاوز.
اختبرنا `change_onexec(crun)` و`change_onexec(chrome)` و`aa-exec -p <profile>`
وتنفيذ `unshare(USER|NET) + newuidmap` المباشر — جميعها تنتج نفس
ملف التعريف الفرعي `unprivileged_userns`.

> **هذا عمل أمني جيد من Canonical.** فئة الثغرة مخففة
> للمستخدمين غير المميزين دون الحاجة إلى إعادة بناء النواة.
> من المرجح أن يجلب تحديث مستقر لاحق تصحيح النواة الفعلي أيضًا،
> مكملًا الدفاع.
تنزيل الأداة