
CVE-2026-46331 و CVE-2026-43503
3 استغلالات لتصعيد الامتيازات المحلية في نواة لينكس. نفس فئة الثغرات مثل Dirty COW و Dirty Pipe. شل جذر في ثوانٍ. جميع التوزيعات الرئيسية متأثرة.
كل الثلاثة تُفسد ذاكرة التخزين المؤقت للصفحات في النواة — النسخة الموجودة في الذاكرة من الملفات التي تقرؤها وتنفّذها العمليات فعليًا. لا يتم لمس الملف الموجود على القرص إطلاقًا. أدوات تكامل الملفات لا ترى شيئًا. execve("/usr/bin/su") يُحمَّل من ذاكرة التخزين المؤقت ← ينفّذ الشيل كود الخاص بك ← جذر.
| الاستغلال | CVE | الآلية | الوقت حتى الجذر | الأسطر |
|---|---|---|---|---|
| Dirty Pedit | CVE-2026-46331 | فجوة COW في TC pedit (التفاف u32) | أقل من ثانية | 275 |
| skb_shift | CVE-2026-43503 | فقدان علم نقل جزء TCP SACK | ~10 ثوانٍ | 500 |
| GRO Flag Loss | CVE-2026-43503 | فقدان علم نقل الجزء أثناء دمج GRO | ~10 ثوانٍ | 550 |
كل الثلاثة: من مستخدم غير مميز ← جذر. لا صلاحيات خاصة. فقط مساحات المستخدم (User namespaces).
كل استغلال في هذا المستودع يتبع النمط نفسه:
1. Get page-cache pages into a kernel buffer (splice)
2. Bypass the copy-on-write defense
3. Write in-place → read-only file corrupted in memory
ما يختلف هو كيفية تجاوز الدفاع وما الذي ينفّذ الكتابة:
2016 Dirty COW COW race via mmap + fork
2022 Dirty Pipe Stale PIPE_BUF_FLAG_CAN_MERGE in splice
2026 Copy Fail AF_ALG in-place AEAD on page-cache scatterlist
2026 Dirty Frag ESP skip_cow on splice'd frags (missing flag)
2026 Fragnesia skb_try_coalesce drops SHARED_FRAG flag
2026 Dirty Pedit ← TC pedit COW gap, no crypto needed
2026 skb_shift ← TCP SACK drops SHARED_FRAG, ESP writes
2026 GRO Flag Loss ← GRO merge drops SHARED_FRAG, ESP writes
إعدادات افتراضية. لا حاجة إلى أي تحصين لتكون عرضة. إذا كنت تشغّل لينكس، فأنت متأثر.
يستخدم كلا الاستغلالين skb_shift وGRO أسلوب الاستغلال نفسه: فقدان علم SKBFL_SHARED_FRAG، ثم ترك تشفير ESP يقوم بعملية XOR داخل صفحات ذاكرة التخزين المؤقت للصفحات بايتًا واحدًا في كل مرة باستخدام جدول بحث IV محسوب مسبقًا.
Dirty Pedit هو وحش مختلف تمامًا:
skb_store_bits.skb_ensure_writable عبر التفاف الأعداد الصحيحة.# Build all three
cd dirty_pedit && gcc -static -O2 -o exploit exploit.c && cd ..
cd skb_shift && gcc -static -O2 -o exploit exploit.c && cd ..
cd gro && gcc -static -O2 -o exploit exploit.c && cd ..
كل استغلال هو ملف C واحد مكتفٍ بذاته. لا تبعيات تتجاوز libc.
# Any of the three (as unprivileged user):
./exploit
# → root shell
المتطلبات: نواة لينكس ضمن نطاق الإصدارات المتأثرة + CONFIG_USER_NS=y (افتراضي في جميع التوزيعات الرئيسية).
[*] Dirty Pedit — Local Privilege Escalation
[*] uid=1000 pid=42
[*] Victim line at offset 186: nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
[*] Injecting user 'a' (uid=0, no password) over victim line...
[+] User 'a' injected with uid=0!
[+] Running: su a
# id
uid=0(root) gid=0(root) groups=0(root)
[*] uid=1000 euid=1000
[*] IV table pre-computed (256 entries)
[*] Writing 192 bytes to /usr/bin/su...
[120] 0x00→0x48 ... OK
[121] 0x00→0x31 ... OK
[*] Write complete: 192/192
[!] /usr/bin/su page cache overwritten!
# whoami
root
تم الإفصاح عن جميع الثغرات بشكل مسؤول لفريق أمن نواة لينكس ومطوّري الشبكات. تم دمج التصحيحات في المصدر الأساسي (upstream) وترحيلها إلى الفروع المستقرة.
899ee91156e548f6a5356a33نُشرت هذه الاستغلالات لأغراض تعليمية ودفاعية بعد توفر التصحيحات. فساد ذاكرة التخزين المؤقت للصفحات يقتصر على الذاكرة فقط — إعادة التشغيل أو echo 1 > /proc/sys/vm/drop_caches يستعيد الملفات الأصلية.
راجات غوبتا — الأمن الهجومي @ كوالكوم
MIT
| الاستغلال | الدفاع الذي تم تجاوزه | الكاتب |
|---|
| Dirty Pedit | skb_ensure_writable (التفاف u32 ← COW جزئي) | skb_store_bits (كتابة مباشرة لأربعة بايتات) |
| skb_shift | فقدان علم SKBFL_SHARED_FRAG أثناء TCP SACK | فك تشفير ESP AES-GCM (بايت واحد لكل حزمة) |
| GRO Flag Loss | فقدان علم SKBFL_SHARED_FRAG أثناء دمج GRO | فك تشفير ESP AES-GCM (بايت واحد لكل حزمة) |
| الاستغلال | أُدخل في | أُصلح في | التوزيعات المتأثرة |
|---|
| Dirty Pedit | v5.18 (مايو 2022) | v7.1-rc7 | Ubuntu, RHEL, Debian, Fedora, SUSE |
| skb_shift | v3.9 (2013) | v7.1-rc5 | كل توزيعة منذ 13 عامًا |
| GRO Flag Loss | v3.9 (2013) | v7.1-rc5 | كل توزيعة منذ 13 عامًا |
| الخاصية | Dirty Pedit | skb_shift | GRO |
|---|
| الامتيازات | لا شيء (userns) | لا شيء (userns) | لا شيء (userns) |
| الوصول إلى الملف | O_RDONLY | O_RDONLY | O_RDONLY |
| التشفير المطلوب | لا | نعم (AES-GCM) | نعم (AES-GCM) |
| التحكم في الكتابة | 4 بايتات/حزمة | بايت واحد/حزمة | بايت واحد/حزمة |
| الموثوقية | حتمي | حتمي | احتمالي (إعادة محاولة) |
| الهروب من حاوية K8s | لا (لا حاجة إلى veth) | لا | نعم (veth+GRO افتراضي) |
| سطح الهجوم | geneve + TC | loopback + espintcp | veth + ESP-in-UDP |