
حزمة تعليمية دفاعية لنظام لينكس لثغرات تصعيد الصلاحية الناتجة عن فساد ذاكرة التخزين المؤقت للصفحات (DirtyClone CVE-2026-43503، pedit COW CVE-2026-46331): تعزيز الأمان، الكشف، التحقق، seccomp + أداة التحقق. فقط الكشف والوقاية — لا يوجد كود استغلال. TLP:CLEAR.
الكشف عن، احتواء، والتحقق من الدفاعات ضد تصعيدين للصلاحيات المحلية (LPE) لتلف ذاكرة التخزين المؤقت للصفحات في لينكس — DirtyClone (CVE-2026-43503) و pedit COW (CVE-2026-46331) — على المضيفين والحاويات.
هذه طقم أمني تعليمي، دفاعي. يشرح كيفية عمل كلا الثغرات على مستوى استدعاءات النظام ويوفر أدوات التقوية (hardening)، والكشف، والتحقق، وأدوات seccomp — بالإضافة إلى إطار تحقق يثبت أن الأدوات تعمل على أنوية حقيقية. لا يحتوي على استغلال، أو شيلكود، أو عناوين مستهدفة، حسب التصميم.
تسمح كلتا الـ CVE لمستخدم محلي غير مميز بأن يصبح root عن طريق إفساد ذاكرة التخزين المؤقت للصفحات (نسخة الذاكرة العشوائية) لملف ثنائي setuid-root مثل /usr/bin/su — دون لمس الملف على القرص أبدًا. وهذا يجعلهما خفيين: مراقبة تكامل الملفات تبقى خضراء، وتحقيقات القرص لا تجد شيئًا، ويتلاشى الإفساد عند إعادة التشغيل.
تصحيح النواة هو الحل الحقيقي. لكن خلال فترة التطبيق — وكدفاع في العمق بعد ذلك — تحتاج إلى إغلاق مسارات الهجوم، مراقبة سلسلة الهجوم، والتحقق من وضعك. هذا ما يوفره هذا الطقم، مع ربط كل تحكم بخطوة موثقة من سلسلة الاستغلال حتى تتمكن من رؤية لماذا يعمل.
كلا العيبين من نفس فئة الخلل: النواة تكتب في مخزن مؤقت تعتقد أنه خاص بينما هذا المخزن لا يزال مدعومًا بذاكرة تخزين مؤقت للصفحات مشتركة مدعومة بالملفات. حاجزان هيكليان يتحكمان في كل متغير من كلا السلسلتين:
تم إصلاحها في الإصدارات النقطة المستقرة (DirtyClone ≥ 6.12.91 / 7.0.10; pedit COW 6.12.94 / 7.0.13) بالإضافة إلى التصحيحات الخلفية من البائعين؛ الخط الرئيسي 7.1 هو النهائي. تأكد من نواتك مقابل متتبع توزيعتك — انظر docs/analysis.md §8.
مضيفات لينكس فقط. هذه البرامج النصية تقرأ وتكتب حالة النواة الحقيقية. قم بتشغيل التقوية على مضيف تتحكم فيه؛ قم بتشغيل إطار التحقق التدميري على VM قابل للتصرف. انظر المتطلبات.
# 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):
docker run --security-opt seccomp=kit/seccomp-pagecache-lpe.json <image>
جديد هنا؟ اقرأ START-HERE.md — دليل إرشادي على أسلوب المحاضرة من السبب الجذري إلى تشغيل تحقق كامل.
.
├── 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 مضمّنة على نواة معينة — رأس البرنامج النصي يشرح كيفية التكيف.testkit/): VM لينكس قابل للتصرف — يكتب إعدادات حقيقية ويفرغ وحدات النواة. مشغل EC2 يحتاج إلى AWS CLI v2 و jq; لا يُستخدم SSH (النقل هو AWS SSM). يمكن لمستخدمي macOS تشغيل اختبار الدخان المحلي Docker، لكن التحقق الكامل يتطلب لينكس.TLP:CLEAR — توزيع عام، غير مقيد. هذا المستودع كشف ومنع فقط. يشمل عمدًا:
…ويستبعد عمدًا:
الحدود الصادقة لهذا النهج — ما يثبته التحقق وما لا يثبته — موثقة في testkit/SHOWCASE.md §8. استخدم فقط على الأنظمة التي تملكها أو مخول باختبارها. التقوية هي احتواء، وليست علاجًا: صوّح نواتك.
START-HERE.md — الدليل الإرشادي (ابدأ هنا)docs/analysis.md — التحليل الفني الكاملdocs/plain-language-summary.md — نظرة عامة بلغة إنجليزية بسيطة أكثر لطفًانرحب بالمشكلات وطلبات السحب — انظر CONTRIBUTING.md. نظرًا لأن عناصر التحكم مكررة عبر عدة ملفات (قائمة الوحدات، مقابض userns، خريطة الكشف)، يرجى قراءة ثوابت التزامن في هذا الدليل قبل تغيير سطح الهجوم.
مرخص بموجب رخصة Apache 2.0.
| Gate | What it is | Strength as a control |
|---|
| 1. مسار القدرة | CAP_NET_ADMIN يتم الحصول عليه عبر مساحات أسماء المستخدم غير المميزة (unshare(CLONE_NEWUSER|CLONE_NEWNET)) | نقطة اختناق قوية — جميع المتغيرات يجب أن تمر هنا، المعروفة وغير المعروفة. أغلقه أولاً. |
| 2. سطح الوحدة | الوحدات القابلة للاختراق: act_pedit, esp4/esp6, rxrpc, xt_TEE, nf_dup_ipv4/nf_dup_ipv6 | دفاع في العمق — يزيل الأوليات المعروفة فقط؛ المغسلة الجديدة ستتجاوزه. |
| المكون | الدور |
|---|
docs/analysis.md | مصدر الحقيقة: السبب الجذري، سلاسل الهجوم السلوكية، هندسة الكشف، التقوية، جدول مقارن. |
docs/HARDENING-GUIDE.md | احتواء متعدد الطبقات للمضيفين، وحدات systemd، Docker/Podman، و Kubernetes. |
kit/ | التسليمات الأربعة. انسخ هذا الدليل إلى مضيف للدفاع عنه. |
testkit/ | تحقق قابل للتكرار على أنوية حقيقية (Docker محلي + EC2 قابل للتصرف)، و SHOWCASE.md — تقييم صادق لما تثبته الاختبارات وما لا تثبته. |