## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DOUGLASMUN-PAGECACHE-LPE-CONTAINMENT-KIT
# طقم احتواء LPE لذاكرة التخزين المؤقت للصفحات
> الكشف عن، احتواء، والتحقق من الدفاعات ضد تصعيدين للصلاحيات المحلية (LPE) لتلف ذاكرة التخزين المؤقت للصفحات في لينكس — **DirtyClone (CVE-2026-43503)** و **pedit COW (CVE-2026-46331)** — على المضيفين والحاويات.
   
هذه طقم أمني **تعليمي، دفاعي**. يشرح كيفية عمل كلا الثغرات على مستوى استدعاءات النظام ويوفر أدوات التقوية (hardening)، والكشف، والتحقق، وأدوات seccomp — بالإضافة إلى إطار تحقق يثبت أن الأدوات تعمل على أنوية حقيقية. **لا يحتوي على استغلال، أو شيلكود، أو عناوين مستهدفة، حسب التصميم.**
* * *
## جدول المحتويات
* لماذا هذا موجود
* الثغرة في 30 ثانية
* بداية سريعة
* ما في الصندوق
* المتطلبات
* النطاق والأخلاقيات
* تعرف أكثر
* المساهمة
* الترخيص
* * *
## لماذا هذا موجود
تسمح كلتا الـ CVE لمستخدم محلي **غير مميز بأن يصبح root** عن طريق إفساد **ذاكرة التخزين المؤقت للصفحات** (نسخة الذاكرة العشوائية) لملف ثنائي setuid-root مثل `/usr/bin/su` — دون لمس الملف على القرص أبدًا. وهذا يجعلهما خفيين: مراقبة تكامل الملفات تبقى خضراء، وتحقيقات القرص لا تجد شيئًا، ويتلاشى الإفساد عند إعادة التشغيل.
تصحيح النواة هو الحل الحقيقي. لكن خلال فترة التطبيق — وكدفاع في العمق بعد ذلك — تحتاج إلى **إغلاق مسارات الهجوم، مراقبة سلسلة الهجوم، والتحقق من وضعك**. هذا ما يوفره هذا الطقم، مع ربط كل تحكم بخطوة موثقة من سلسلة الاستغلال حتى تتمكن من رؤية _لماذا_ يعمل.
## الثغرة في 30 ثانية
كلا العيبين من نفس فئة الخلل: **النواة تكتب في مخزن مؤقت تعتقد أنه خاص بينما هذا المخزن لا يزال مدعومًا بذاكرة تخزين مؤقت للصفحات مشتركة مدعومة بالملفات.** حاجزان هيكليان يتحكمان في كل متغير من كلا السلسلتين:
تم إصلاحها في الإصدارات النقطة المستقرة (DirtyClone ≥ 6.12.91 / 7.0.10; pedit COW 6.12.94 / 7.0.13) بالإضافة إلى التصحيحات الخلفية من البائعين؛ الخط الرئيسي 7.1 هو النهائي. تأكد من نواتك مقابل متتبع توزيعتك — انظر `docs/analysis.md` §8.
## بداية سريعة
> **مضيفات لينكس فقط.** هذه البرامج النصية تقرأ وتكتب حالة النواة الحقيقية. قم بتشغيل التقوية على مضيف تتحكم فيه؛ قم بتشغيل إطار التحقق التدميري على VM **قابل للتصرف**. انظر المتطلبات.
root@kitploit:~
# 1. Preview the host containment changes (writes nothing)
sudo ./kit/harden-pagecache-lpe.sh --dry-run
# 2. Apply userns restrictions + vulnerable-module blocks
sudo ./kit/harden-pagecache-lpe.sh
# 3. Verify posture — run the functional probe as an UNPRIVILEGED user
sudo -u nobody ./kit/verify-pagecache-lpe.sh # exit: 0=PASS 1=WARN 2=FAIL
# 4. (Optional) Watch the attack chain live with eBPF
sudo bpftrace ./kit/detect-pagecache-lpe.bt
للحاويات، قم بتطبيق تراكب seccomp (`kit/seccomp-pagecache-lpe.json`):
root@kitploit:~
docker run --security-opt seccomp=kit/seccomp-pagecache-lpe.json <image>
**جديد هنا؟** اقرأ **`START-HERE.md`** — دليل إرشادي على أسلوب المحاضرة من السبب الجذري إلى تشغيل تحقق كامل.
## ما في الصندوق
root@kitploit:~
.
├── START-HERE.md دليل إرشادي — نقطة الدخول الموصى بها
├── docs/ "السبب": تحليل وإرشادات المشغل
│ ├── analysis.md تحليل السبب الجذري، سلاسل الهجوم، هندسة الكشف
│ ├── HARDENING-GUIDE.md دليل احتواء المشغل (المضيف → systemd → Docker → Kubernetes)
│ └── plain-language-summary.md نظرة عامة بلغة إنجليزية بسيطة وأكثر لطفًا لكلا العيبين
├── kit/ "ما تشغله": أربع قطع أثرية مستقلة
│ ├── harden-pagecache-lpe.sh تطبيق احتواء المضيف (sysctl + حظر الوحدات)
│ ├── verify-pagecache-lpe.sh فحص الوضع للقراءة فقط (PASS/WARN/FAIL)
│ ├── detect-pagecache-lpe.bt بيانات bpftrace/eBPF لسلسلة التجميع
│ └── seccomp-pagecache-lpe.json تراكب seccomp للحاوية يمنع استدعاءات النظام الخاصة بالسلسلة
└── testkit/ "الدليل": إطار تحقق + كتابة SHOWCASE.md
## المتطلبات
* **التقوية والتحقق** (`harden`, `verify`): مضيف لينكس مع `bash`, `sysctl`, `modprobe`, و `unshare`. صلاحية الجذر للتقوية؛ قم بتشغيل مسبار التحقق كمستخدم غير جذر.
* **الكشف** (`detect-pagecache-lpe.bt`): جذر، `bpftrace` ≥ 0.16، ونواة **BTF** (`/sys/kernel/btf/vmlinux`). قد تكون بعض أدوات kprobe مضمّنة على نواة معينة — رأس البرنامج النصي يشرح كيفية التكيف.
* **تراكب seccomp** : أي بيئة تشغيل OCI (Docker, Podman, containerd).
* **إطار التحقق** (`testkit/`): VM لينكس **قابل للتصرف** — يكتب إعدادات حقيقية ويفرغ وحدات النواة. مشغل EC2 يحتاج إلى AWS CLI v2 و `jq`; لا يُستخدم SSH (النقل هو AWS SSM). يمكن لمستخدمي macOS تشغيل اختبار الدخان المحلي Docker، لكن التحقق الكامل يتطلب لينكس.
## النطاق والأخلاقيات
**TLP:CLEAR — توزيع عام، غير مقيد.** هذا المستودع **كشف ومنع فقط**. يشمل عمدًا:
* تحليل السبب الجذري على مستوى استدعاء النظام / نظام النواة الفرعي
* أدوات التقوية، الكشف، التحقق، و seccomp
* إطار تحقق يمارس _الدفاعات_
…ويستبعد عمدًا:
* كود استغلال قابل للتشغيل، أحمال دليل المفهوم، أو شيلكود
* اشتقاق الكتابة المسيطر عليها أو عناوين مستهدفة
* أي شيء يعزز التسليح
الحدود الصادقة لهذا النهج — ما يثبته التحقق وما لا يثبته — موثقة في `testkit/SHOWCASE.md` §8. **استخدم فقط على الأنظمة التي تملكها أو مخول باختبارها.** التقوية هي احتواء، وليست علاجًا: **صوّح نواتك.**
## تعرف أكثر
* **`START-HERE.md`** — الدليل الإرشادي (ابدأ هنا)
* **`docs/analysis.md`** — التحليل الفني الكامل
* **`docs/plain-language-summary.md`** — نظرة عامة بلغة إنجليزية بسيطة أكثر لطفًا
## المساهمة
نرحب بالمشكلات وطلبات السحب — انظر `CONTRIBUTING.md`. نظرًا لأن عناصر التحكم مكررة عبر عدة ملفات (قائمة الوحدات، مقابض userns، خريطة الكشف)، يرجى قراءة **ثوابت التزامن** في هذا الدليل قبل تغيير سطح الهجوم.
## الترخيص
مرخص بموجب رخصة Apache 2.0.