Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/xn0kkx/cve-2026-31431_copyfail_linuxkernel_lpe
تصعيد الامتيازاتأطر الاستغلالتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليماستغلال الملفات الثنائية
GitHubxn0kkx/cve-2026-31431_copyfail_linuxkernel_lpe

CVE-2026-31431_CopyFail_LinuxKernel_LPE

# إعادة كتابة تعليمية لـ Copy Fail PoC (CVE-2026-31431) — تصعيد امتيازات محلي في نواة لينكس عبر algif_aead في مكان التشفير + كتابة splice() في ذاكرة التخزين المؤقت للصفحات

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
2منذ 3 أشهرلم تتم المراجعة بعد

CVE-2026-31431 — Copy Fail (تصعيد صلاحيات محلي في نواة لينكس)

إعادة كتابة تعليمية لإثبات المفهوم من Theori/Xint لثغرة CVE-2026-31431، وهي ثغرة تصعيد صلاحيات محلي في واجهة مقبس التشفير algif_aead في نواة لينكس. تؤثر على جميع نوى الإصدار الرئيسي من 4.14 (يوليو 2017) حتى 6.18.21، وفرع 6.19 المستقر حتى 6.19.11.


إخلاء مسؤولية

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


ملخص الثغرة

تعرض نواة لينكس واجهة برمجة تشفير داخل النواة لمستخدمي مساحة المستخدم منذ النواة 3.2 عبر عائلة مقابس AF_ALG (<linux/if_alg.h>). يفتح مستخدم مساحة المستخدم مقبس SOCK_SEQPACKET، ويربطه بقالب خوارزمية (مثل "aead" / "authencesn(hmac(sha256),cbc(aes))")، ويرسل البيانات للتشفير أو فك التشفير.

في عام 2017، تم دمج تحسين أداء يسمح لخوارزميات AEAD بتشفير أو فك تشفير البيانات في مكانها عندما تكتشف النواة أن المصدر والوجهة يتشاركان نفس الصفحات الأساسية. هذا يتجنب نسخ ذاكرة زائد في كل عملية.

قالب authencesn (الذي يضيف دعم رقم التسلسل الموسع إلى التشفير المصادق عليه) يحتوي على كتابة مؤقتة أثناء فك التشفير: فهو يكتب بايتات ESN في إزاحة محددة داخل مخزن بيانات العملية قبل تشغيل فحص المصادقة. عندما يتم الحصول على صفحات مصدر العملية من ذاكرة التخزين المؤقت للصفحات لملف عادي عبر splice()، وتكون تحسينات المعالجة في المكان نشطة، تذهب هذه الكتابة المؤقتة مباشرة إلى تلك الصفحات المخزنة مؤقتاً.

لأن ذاكرة التخزين المؤقت للصفحات في النواة هي تعيين مشترك — أي عملية تفتح نفس الملف ترى نفس الصفحات الفعلية — يمكن لمستخدم غير مميز أن:

  1. يفتح أي ملف قابل للقراءة (مثل /usr/bin/su) مع O_RDONLY.
  2. ينقل صفحاته إلى مقبس عملية AF_ALG عبر splice().
  3. يطلق عملية فك تشفير authencesn؛ الكتابة المؤقتة لـ ESN تفسد الصفحة عند إزاحة محكومة ببايتات يتحكم فيها المهاجم.
  4. لا يتم تعديل القرص أبداً؛ فقط ذاكرة التخزين المؤقت للصفحات في الذاكرة يتم تصحيحها.

أدوات فحص السلامة خارج المضيف (AIDE, Tripwire, IMA/EVM) التي تقارن مجاميع التحقق من الملفات على القرص عمياء تماماً عن هذا الهجوم. تختفي الكتابة بعد إخلاء ذاكرة التخزين المؤقت للصفحات أو إعادة التشغيل، دون ترك أي أثر جنائي على القرص.

من خلال استهداف /usr/bin/su (ملف ثنائي setuid root) والكتابة فوق فرع يحمي فحص مصادقة PAM، يحصل المهاجم على قشرة جذر بدون كلمة مرور.


النوى المتأثرة

التزام التحسين الذي أدخل الثغرة وصل في دورة تطوير 4.14 (يوليو 2017). أي نواة مبنية مع CONFIG_CRYPTO_USER_API_AEAD=y وCONFIG_CRYPTO_AUTHENC=y (كلاهما افتراضي شائع) في النطاقات أعلاه معرضة للخطر.


التوزيعات المتأثرة (غير حصرية)

تحقق من متتبع الأمان الخاص بتوزيعتك للحصول على حالة الاستشارة الدقيقة.


المتطلبات

  • نواة لينكس في نطاق ضعيف (انظر الجدول أعلاه)
  • Python 3.10+ (تمت إضافة os.splice في Python 3.10)
  • صلاحية قراءة للملف الثنائي المستهدف (الافتراضي: /usr/bin/su، قابل للقراءة عالمياً لأنه setuid)
  • لا توجد صلاحيات خاصة مطلوبة — هذا تصعيد صلاحيات محلي

الاستخدام

root@kitploit:~
# عرض ما سيتم كتابته دون لمس النواة (آمن):
python3 copy_fail_exploit.py --dry-run

# تصحيح ذاكرة التخزين المؤقت لصفحات /usr/bin/su (يتطلب نواة ضعيفة):
# تحذير: يتطلب نواة ضعيفة — استخدم فقط على أنظمة تملكها
python3 copy_fail_exploit.py

# التصحيح والتصعيد الفوري إلى الجذر:
python3 copy_fail_exploit.py --spawn-shell

# استخدام ملف ثنائي مستهدف وحمولة مخصصة:
python3 copy_fail_exploit.py --target /usr/bin/sudo --payload-file ./custom_patch.bin

# إخراج مفصّل (طباعة كل كتابة 4 بايت):
python3 copy_fail_exploit.py --verbose --dry-run

بشكل افتراضي، --spawn-shell مغلق. بعد التصحيح، يطبع السكربت:

root@kitploit:~
[+] تم تطبيق التصحيح على ذاكرة التخزين المؤقت لصفحات '/usr/bin/su' (القرص دون تغيير).
    قم بتشغيل `su` للتصعيد، أو أعد التشغيل مع --spawn-shell.
    للاستعادة: echo 3 | sudo tee /proc/sys/vm/drop_caches

يجب عليك الاشتراك في إطلاق القشرة مع --spawn-shell. هذا مقصود: يجبرك على فهم ما فعله الاستغلال قبل تنفيذ النتيجة.


كيف يعمل

إعداد البدائية. يفتح الاستغلال مقبس AF_ALG ويربطه بقالب authencesn(hmac(sha256),cbc(aes)) بمفتاح وهمي من الأصفار. ثم يضبط حجم علامة المصادقة إلى 4 بايت عبر ALG_SET_AEAD_AUTHSIZE. accept() على مقبس التحكم ينتج مقبس عملية يمكنه إرسال طلبات فك تشفير فردية.

إطلاق كتابة ذاكرة التخزين المؤقت للصفحات. لكل جزء 4 بايت من حمولة التصحيح، يستدعي الاستغلال sendmsg() على مقبس العملية مع تعيين MSG_MORE، مرراً 8 بايت من البيانات المرتبطة (AAD): 4 بايت حشو تليها 4 بايت الحمولة. MSG_MORE يخبر النواة بالاحتفاظ بالعملية حتى وصول المزيد من البيانات. ثم ينشئ أنبوباً ويصدر استدعاءين splice() — file_fd → pipe → op_sock — متبرعاً بصفحات ذاكرة التخزين المؤقت الخاصة بالملف كمدخل لعملية فك التشفير. عندما يتم استدعاء recv() أخيراً، تشغل النواة فك تشفير authencesn. يحدث تحسين المعالجة في المكان (المصدر والوجهة هما نفس الصفحات)، و الكتابة المؤقتة لـ ESN تنسخ بايتات الحمولة إلى صفحة التخزين المؤقت عند الإزاحة المستهدفة. يعيد recv() EBADMSG لأن علامة المصادقة لا يمكن التحقق منها — وهذا متوقع وغير ضار. لقد حدثت الكتابة بالفعل.

تصحيح الملف الثنائي. الحمولة المدمجة (مأخوذة حرفياً من Theori PoC) تكتب فوق تعليمة فرع في /usr/bin/su من بناء util-linux قياسي، محولة قفزة شرطية تفرض مصادقة PAM إلى مرور غير مشروط. بعد التصحيح، ينجح تشغيل su بدون كلمة مرور و يسقط قشرة جذر. الملف الثنائي على القرص دون تغيير؛ إسقاط إدخالات ذاكرة التخزين المؤقت للصفحات (echo 3 > /proc/sys/vm/drop_caches) يعيد التغيير فوراً.

للتحليل الفني الأعمق راجع المراجع أدناه، خاصة مدونة Xint ومستودع Theori PoC.


الاكتشاف

قاعدة Falco

root@kitploit:~
- rule: AF_ALG socket opened by unprivileged process
  desc: >
    CVE-2026-31431 — an unprivileged process opened an AF_ALG (family 38)
    socket, which is the first step of the Copy Fail exploit.
  condition: >
    evt.type = socket and
    evt.arg.domain = 38 and
    not user.uid = 0
  output: >
    AF_ALG socket opened (user=%user.name uid=%user.uid
    pid=%proc.pid comm=%proc.name)
  priority: WARNING
  tags: [host, network, privilege_escalation, CVE-2026-31431]

YARA (فحص ذاكرة لسكربت الاستغلال)

root@kitploit:~
rule CopyFail_CVE_2026_31431 {
    meta:
        description = "Detects Copy Fail exploit script in memory or on disk"
        cve         = "CVE-2026-31431"
    strings:
        $template = "authencesn(hmac(sha256),cbc(aes))" ascii
        $splice   = "os.splice" ascii
        $aflag    = "AF_ALG" ascii
    condition:
        all of them
}

auditd — اكتشاف إنشاء مقبس AF_ALG

أضف إلى /etc/audit/rules.d/cve-2026-31431.rules:

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=38 -k cve_2026_31431_afalg

ثم راقب السجلات مع:

root@kitploit:~
ausearch -k cve_2026_31431_afalg --interpret

التخفيف

1. تطبيق تصحيح النواة (موصى به) قم بالترقية إلى النواة 6.18.22 أو 6.19.12 أو 7.0-rc7 أو أحدث، أو طبق تحديث الأمان الخاص بتوزيعتك.

2. تعطيل CONFIG_CRYPTO_USER_API_AEAD عند البناء إذا كنت تبني نواتك الخاصة، اضبط:

root@kitploit:~
# CONFIG_CRYPTO_USER_API_AEAD is not set

هذا يزيل واجهة AF_ALG AEAD بالكامل ويزيل سطح الهجوم. معظم النشرات المدمجة/المحصنة لا تحتاجها.

3. seccomp — منع عائلة مقابس AF_ALG أضف مرشح seccomp للعمليات الحساسة (أو على مستوى النظام عبر سياسة LSM) يرفض socket(AF_ALG, ...):

root@kitploit:~
// Deny socket() when domain == AF_ALG (38)
BPF_STMT(BPF_LD | BPF_W | BPF_ABS, offsetof(struct seccomp_data, args[0])),
BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 38, 0, 1),
BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | EACCES),

4. إسقاط صلاحيات ذاكرة التخزين المؤقت للصفحات عبر تحصين النواة vm.unprivileged_userfaultfd=0 والإعدادات المماثلة تقلل سطح الهجوم لواجهات ذاكرة النواة المتاحة للمستخدم، رغم أنها لا تمنع هذا CVE مباشرة.


التنظيف بعد الاختبار

يعدل الاستغلال فقط ذاكرة التخزين المؤقت للصفحات في الذاكرة؛ الملف الثنائي على القرص لا يُلمس أبداً. لاستعادة محتوى الملف الأصلي في الذاكرة، أسقط ذاكرة التخزين المؤقت للصفحات في النواة:

root@kitploit:~
echo 3 | sudo tee /proc/sys/vm/drop_caches

هذا يطرد جميع الصفحات النظيفة من التخزين المؤقت. القراءة التالية لـ /usr/bin/su (أو أي ملف ثنائي تم تصحيحه) ستعيد تحميل البايتات الأصلية من القرص.

إعادة التشغيل تمسح أيضاً ذاكرة التخزين المؤقت للصفحات بالكامل.


المراجع

  • إثبات المفهوم الأصلي — Theori
  • الشرح الفني — Xint
  • تحليل تهديدات Sysdig
  • مدونة أمان Microsoft
  • إدخال NVD
  • متتبع أمان Debian

الاعتمادات

  • الاكتشاف والإفصاح الأصلي: Theori (theori.io) و Xint (xint.io)
  • إعادة الكتابة التعليمية: n0kk

الترخيص

MIT — انظر LICENSE.

تم اختيار MIT بدلاً من ترخيص مخصص "للاستخدام التعليمي فقط" لأنه لا يوجد مثل هذا الترخيص كمعرف معترف به من OSI/SPDX. MIT متساهل، مفهوم قانونياً جيداً، ومتوافق مع مستودعات الإفصاح المسؤول. الهدف التعليمي معبر عنه في docstring الوحدة، قسم إخلاء المسؤولية في هذا README، ومخرجات --help — وليس في بند ترخيص مخصص مشكوك فيه قانونياً.

تنزيل الأداة
الفرعأول إصدار ضعيفآخر إصدار ضعيفتم الإصلاح في
الرئيسي4.146.18.216.18.22
6.19 المستقر6.19.06.19.116.19.12
7.0-rc7.0-rc17.0-rc67.0-rc7
التوزيعةالنواة المرفقة (تقريباً)تم التصحيح؟
Debian 12 (Bookworm)6.1.xنعم (تراجع)
Debian 13 (Trixie)6.12.x / 6.14.xنعم (تراجع)
Ubuntu 24.04 LTS6.8.xنعم (USN-7xxx)
Ubuntu 24.106.11.xنعم
RHEL 9.x5.14.x (معاد بناؤها)نعم (RHSA)
Alpine 3.206.6.xنعم (تراجع)
Arch Linuxمتداول (≥ 6.18.22 الآن)نعم
Kali Linux 2026.16.18.12ضعيفة
Kali Linux 2026.2+6.18.22+تم الإصلاح
Linux Mint 226.8.x (أساس Ubuntu)نعم (Ubuntu USN)