
مدقق التعرض ومختبر آمن للجهاز الظاهري المؤقت لثغرة CVE-2026-23111 (تصعيد الامتيازات المحلي بسبب استخدام بعد التحرير في nf_tables في Linux). دفاعي: الكشف، التخفيف، مختبر متعدد التوزيعات. لا يوجد استغلال.
أدوات دفاعية ومختبر آلة افتراضية قابل للتكرار لـ CVE-2026-23111،
وهو ثغرة استخدام بعد التحرير (use-after-free) لتصعيد الصلاحيات المحلية في نواة لينكس (nf_tables)
(خطأ في فحص نشاط العنصر في nft_map_catchall_activate()، خطأ "off by !").
يمكن لمستخدم محلي غير مميز تصعيد صلاحياته إلى root، والهروب من الحاوية،
من خلال مساحات أسماء المستخدمين غير المميزة.
هذا المستودع لا يحتوي على أداة استغلال. يحتوي على فاحص تعرض للقراءة فقط، وسكربت لإنشاء مستخدم غير مميز حقًا، وتعريفات آلة افتراضية لتتمكن من الوصول إلى الثغرة بأمان ودراسة البحث العام. سلسلة التصعيد الكاملة موجودة في الإفصاحات المذكورة أدناه، وليس هنا.
الشرح الكامل: https://techearl.com/cve-2026-23111-nftables-lpe
check-exposure.sh — كاشف للقراءة فقط: إصدار النواة مقابل البناء المُصلح، وجود nf_tables، شرط مساحات أسماء المستخدمين غير المميزة، وتوقيعات تعطل سجل النواة.setup-unprivileged-user.sh — ينشئ مستخدم labuser بدون صلاحيات sudo ويثبت أنه غير مميز. الهدف من اختبار LPE هو البدء من مستخدم لا يمكنه بالفعل أن يصبح root.Vagrantfile — آلات افتراضية قابلة للتخلص من Debian 12 و AlmaLinux 10 (التوزيعات التي لا يستطيع Multipass تشغيلها).الحاوية تشارك نواة المضيف. تشغيل استغلال نواة داخل حاوية يعمل ضد نواة المضيف الحقيقية، لذا يمكن أن يؤدي "اختبار" إلى اختراق الجهاز الفعلي. استخدم آلة افتراضية قابلة للتخلص مع نواتها الخاصة.
| التوزيعة | أداة التشغيل | السبب |
|---|---|---|
| Ubuntu 24.04 / 22.04 | Multipass (أوبونتو فقط) | تم إعادة إنتاج Exodus على كليهما؛ 24.04 يأتي مع تقييد AppArmor لمساحات أسماء المستخدمين مفعلاً افتراضيًا، لذلك يظهر التخفيف. |
| Debian 12 | Vagrant (vagrant up debian) | تم إعادة إنتاج Exodus عليها؛ مساحات أسماء المستخدمين غير المميزة مفتوحة افتراضيًا. |
| AlmaLinux / Rocky 10.1 | Vagrant (vagrant up alma) | يتطابق مع نواة هدف FuzzingLabs 6.12.0-124.x.el10، لذا فإن مشغلهم العام يتكرر كما نُشر. |
Multipass يشغل أوبونتو فقط، ولذلك تستخدم الأخرى Vagrant.
كل توزيعة تحتاج خدعة مختلفة لتحميل نواة خالية من التصحيح حقًا ولا تزال تحتوي على شبكة عاملة على آلة افتراضية سحابية:
linux-aws قديمًا، وليس linux-generic. النواة العامة تفتقر إلى مشغل بطاقة الشبكة ENA الخاص بـ AWS وتفقد اتصال SSH على مثيل Nitro.
sudo apt install -y linux-image-6.8.0-1028-aws (أقل من الثابت 6.8.0-1051)،
اجعلها الافتراضية في GRUB، أعد التشغيل. على الجهاز الافتراضي المحلي، النواة العامة جيدة.cloud (تحافظ على ENA):
deb [check-valid-until=no trusted=yes] https://snapshot.debian.org/archive/debian/20251201T000000Z/ bookworm main،
ثم apt install -y linux-image-6.1.0-39-cloud-amd64=6.1.148-1 (أقل من الثابت 6.1.164-1, DSA-6163-1).el10_1 القابلة للتأثر موجودة في خزينة 10.1.
وجّه dnf إلى https://vault.almalinux.org/10.1/BaseOS/x86_64/os/ و
dnf install kernel-6.12.0-124.38.1.el10_1، ثم grubby --set-default.# 1. إنشاء مستخدم غير مميز حقًا وإثبات أنه لا يستطيع sudo.
# (useradd، وليس adduser الخاص بـ Debian، لكي يعمل على RHEL أيضًا.)
sudo bash setup-unprivileged-user.sh labuser
# 2. حكم التعرض.
sudo ./check-exposure.sh
# 3. كمستخدم labuser، الشرط المسبق، ثم مشغل nft العام داخل مساحة اسم شبكة.
sudo -u labuser unshare -Ur id # uid=0 في مساحة اسم مستخدم جديدة = شرط مسبق مفتوح
# (مرفوض على Ubuntu 24.04 الافتراضي = التخفيف يعمل)
# مشغل FuzzingLabs العام (catchall GOTO + دفعة ملغاة). مدرج هنا كتوثيق؛
# هذا المستودع لا يحتوي على ملف استغلال/مشغل قابل للتنفيذ.
sudo -u labuser unshare -Urn bash -c '
nft add table inet t; nft add chain inet t c
nft add map inet t m "{ type ipv4_addr : verdict; }"
nft add element inet t m "{ * : goto c }"
printf "delete element inet t m { * }\ndelete element inet t m { 1.2.3.4 }\n" > /tmp/b.nft
nft -f /tmp/b.nft; nft flush ruleset'
هذا التسلسل يشغل مسار الإلغاء المعيب؛ لا يحتوي على سلسلة تصعيد صلاحيات، وعلى نواة افتراضية يكون صامتًا (انظر أدناه).
| التوزيعة | النواة القابلة للتأثر التي تم تحميلها | userns الافتراضي | الحكم |
|---|---|---|---|
| Ubuntu 24.04 | 6.8.0-1028-aws | مقيد (AppArmor) | مخفف، غير مُصلح |
| Debian 12 | 6.1.0-39-cloud (6.1.148-1) | مفتوح | مكشوف |
| AlmaLinux 10.1 | 6.12.0-124.38.1.el10_1 | مفتوح | مكشوف |
الناتج الصادق على المشغل: على نواة إنتاج افتراضية يكون صامتًا.
يشغل مسار الإلغاء المعيب بدون تعطل ولا إخراج dmesg، حتى عند تكراره مع التحرير وإعادة الاستخدام. مخرجات KASAN: slab-use-after-free في الشروحات تأتي من نواة KASAN/تصحيح؛ تحويل الاستخدام بعد التحرير الكامن إلى سلاح يحتاج إلى رش كومة الاستغلال (غير موجود في هذا المستودع). المختبر يثبت أن المستخدم غير المميز يصل إلى الثغرة، ويظهر تقييد AppArmor الافتراضي لـ Ubuntu الذي يمنع هذا المسار، ويعطي حكمًا واضحًا: مكشوف / مخفف / مُصلح. لا يعطيك شل root عن قصد.
قيد مساحات أسماء المستخدمين غير المميزة (يغلق المسار الواقعي للاستغلالات العامة)، ثم صحح النواة.
# Ubuntu 23.10+ (قائم على AppArmor، يحافظ على عمل مستخدمي userns الشرعيين):
echo "kernel.apparmor_restrict_unprivileged_userns=1" | sudo tee /etc/sysctl.d/99-restrict-userns.conf
sudo sysctl --system
# في مكان آخر (تعطيل شامل؛ اضبط كليهما على Debian/Ubuntu):
printf 'kernel.unprivileged_userns_clone=0\nuser.max_user_namespaces=0\n' | sudo tee /etc/sysctl.d/99-restrict-userns.conf
sudo sysctl --system
# التصحيح (Ubuntu 24.04 العام ثابت عند 6.8.0-107.107):
sudo apt update && sudo apt install --only-upgrade linux-image-generic && sudo reboot
MIT. للاستخدام الدفاعي والتعليمي.