Sploitus

Exploit for pagecache-lpe-containment-kit

kitploit · 2026-08-24

Exploit Code

MARKDOWN132 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DOUGLASMUN-PAGECACHE-LPE-CONTAINMENT-KIT
# طقم احتواء LPE لذاكرة التخزين المؤقت للصفحات

> الكشف عن، احتواء، والتحقق من الدفاعات ضد تصعيدين للصلاحيات المحلية (LPE) لتلف ذاكرة التخزين المؤقت للصفحات في لينكس — **DirtyClone (CVE-2026-43503)** و **pedit COW (CVE-2026-46331)** — على المضيفين والحاويات.

![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![TLP:CLEAR](https://img.shields.io/badge/TLP-CLEAR-brightgreen.svg) ![Scope: detection & prevention](https://img.shields.io/badge/scope-detection%20&%20prevention-informational.svg) ![Platform: Linux](https://img.shields.io/badge/platform-Linux-lightgrey.svg)

هذه طقم أمني **تعليمي، دفاعي**. يشرح كيفية عمل كلا الثغرات على مستوى استدعاءات النظام ويوفر أدوات التقوية (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.