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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CopyFail-Exploits-CVE-2026-31431 — استغلالات تعليمية متعددة اللغات لثغرة CVE-2026-31431، وهي تصعيد صلاحيات محلي في نواة لينكس عبر وحدة algif_aead، مع كاشف آمن وإرشادات استخدام في مسابقات CTF. | Kitploit
أدوات/GitHubGitHub/shotafry/copyfail-exploits-cve-2026-31431
تصعيد الامتيازاتأطر الاستغلالالاستغلالCTFالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubshotafry/copyfail-exploits-cve-2026-31431

الأكثر شعبية

عرض الكل →

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

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

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

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

CopyFail-Exploits-CVE-2026-31431

استغلالات تعليمية متعددة اللغات لثغرة CVE-2026-31431، وهي تصعيد صلاحيات محلي في نواة لينكس عبر وحدة algif_aead، مع كاشف آمن وإرشادات استخدام في مسابقات CTF.

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

CVE-2026-31431 — Copy Fail

مستودع تعليمي يتضمن تطبيقات بلغات متعددة لاستغلال Copy Fail.
تم إنشاؤه وصيانته بواسطة @shotafry — لأن قراءة CVE ليست كافية. يجب إعادة إنتاجه.


📖 اقرأ هذا باللغة الإنجليزية


الفهرس

  • ما هو Copy Fail؟
  • من اكتشفه؟
  • الخطورة وCVSS
  • كيف يعمل؟
  • المتطلبات
  • التطبيقات المتاحة
  • الاستخدام حسب اللغة
  • التحقق من النظام
  • ماذا يحدث بالضبط عند تشغيله؟
  • الاستخدام في CTFs وبيئات الاختبار
  • الإخفاء — المتغيرات الصامتة
  • التخفيف والتصحيح
  • هيكل المستودع
  • إخلاء المسؤولية القانوني

ما هو Copy Fail؟

Copy Fail هو ثغرة تصعيد صلاحيات محلية (LPE) في نواة لينكس، مصنفة كـ CVE-2026-31431. تؤثر على النظام الفرعي للتشفير في النواة، وتحديداً وحدة algif_aead التي تدير عمليات التشفير الموثّق (AEAD) عبر مآخذ AF_ALG.

تم إدخال الخلل في 2017 في تحسين لوحدة authencesn وظل غير مكتشف لمدة 9 سنوات تقريباً، وهو موجود في جميع توزيعات لينكس الحديثة تقريباً.

ما يجعل Copy Fail مميزاً مقارنة بثغرات LPE التاريخية الأخرى:

الخاصيةCopy FailLPE نموذجي
يحتاج حالة سباق (race condition)❌ لا✅ نعم
يحتاج عنوان إزاحة محدد للنواة❌ لا✅ نعم
يعمل على جميع التوزيعات✅ نعم❌ عادةً لا
الموثوقيةحتمي 100%متغير
يعدّل القرص❌ لا (RAM فقط)يعتمد

من اكتشفه؟

تم اكتشاف الثغرة بواسطة Taeyang Lee من فريق البحث في Theori. تم تطوير سلسلة الاستغلال الكاملة بواسطة فريق Xint Code Research، الذي وثق العملية باستخدام تحليل مدعوم بالذكاء الاصطناعي على النظام الفرعي crypto/ في نواة لينكس.

يتضمن الإفصاح العام PoC وظيفي، وتحليلاً تقنياً كاملاً، وتوثيقاً على copy.fail.


الخطورة وCVSS

CVE:       CVE-2026-31431
CVSS:      7.8 — عالية
المتجه:    محلي
التأثير:   تصعيد صلاحيات كامل (root)
التوزيعات: جميع توزيعات لينكس بنواة >= 2017 بدون تصحيح

درجة CVSS هي 7.8 ولا تصل إلى حرجة (9+) فقط لأنها تتطلب وصولاً محلياً مسبقاً — يجب أن يكون لدى المهاجم جلسة على النظام بالفعل. في بيئات السحابة ومع حاويات Docker، يكون هذا الشرط أسهل بكثير في تحقيقه مما يبدو.


كيف يعمل؟

ذاكرة التخزين المؤقت للصفحات في النواة

تحتفظ نواة لينكس في RAM بالملفات التي تمت قراءتها مؤخراً. يُسمى هذا page cache. عندما تقرأ عملية /etc/passwd، لا تذهب النواة إلى القرص — بل تقدم النسخة الموجودة في RAM. هذا أسرع، لكنه يخلق سطح هجوم: إذا تمكنت من تعديل تلك النسخة في RAM دون لمس القرص، سيرى النظام بيانات مزيفة.

الخلل في algif_aead

تسمح وحدة algif_aead بإجراء عمليات AEAD من مساحة المستخدم عبر مآخذ AF_ALG. الخلل موجود في التحسين الذي أُدخل في 2017: عند استخدام splice() لتمرير صفحات من ملف إلى المأخذ، تنتهي تلك الصفحات من page cache في قائمة التشتت الهدف (القابلة للكتابة) للعملية التشفيرية.

النتيجة: يمكن لأي مستخدم بدون صلاحيات كتابة 4 بايتات مُتحكم بها في أي ملف يمكنه قراءته، دون لمس القرص.

تدفق الاستغلال

مستخدم بدون صلاحيات
        │
        ▼
  يفتح مأخذ AF_ALG (authencesn)
        │
        ▼
  sendmsg() — معاملات AEAD مع 4 بايتات لدينا في seqno_lo
        │
        ▼
  splice() — ملف → أنبوب → عملية المأخذ
  [BUG] تبقى page cache للملف في قائمة التشتت الهدف
        │
        ▼
  recv() يطلق عملية AEAD
  يفشل التحقق (EBADMSG) لكن الكتابة الخدشية حدثت بالفعل
        │
        ▼
  /etc/passwd (page cache) الآن يقول: مستخدم → UID 0
        │
        ▼
  su <مستخدم> → PAM يتحقق من كلمة المرور الحقيقية → setuid(0) → ROOT

تشبيه بسيط

تخيل أن النواة لديها سجل قيود القلعة (/etc/passwd). Copy Fail يشبه اكتشاف أنك إذا فتحت ورشة السحر في القلعة بترتيب محدد جداً، فإن سجل القيود يبقى بالخطأ على طاولة عملك — ويمكنك تغيير رتبتك من "جندي عادي" إلى "ملك" بقلم. أمين الأرشيف (PAM) يتحقق من كلمة مرورك لكنه لا يتحقق من السجل الأصلي، فقط من النسخة التي أمامك. أنت ملك.

ماذا يحدث بالضبط عند تشغيله؟

passwd يتغير في الوقت الفعلي

التطبيقات المتاحة


المتطلبات

من النظام المستهدف

  • نواة لينكس >= ~2017 بدون تصحيح CVE-2026-31431
  • وحدة algif_aead متاحة وقابلة للتحميل
  • UID من 4 أرقام (1000–9999) — قياسي في جميع التوزيعات

تحقق سريع

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

# عرض إصدار النواة
uname -a

# التحقق من توفر الخوارزمية
grep -i authencesn /proc/crypto

# التحقق من تحميل الوحدة
lsmod | grep alg

إذا أعاد grep -i authencesn /proc/crypto الناتج authencesn(hmac(sha256),cbc(aes))، فإن النظام عرضة للثغرة.

حسب اللغة

اللغةالمتطلب على الهدفالترجمة المسبقة
Cلا شيء (ملف ثنائي ثابت)gcc على جهاز الترجمة
PythonPython 3.10+لا
Rustلا شيء (ملف ثنائي ثابت)rustc على جهاز الترجمة
Goلا شيء (ملف ثنائي ثابت)go على جهاز الترجمة
RubyRuby + gem fiddle (مضمن افتراضياً)لا
PerlPerl 5 (مضمن في كل لينكس تقريباً)لا

التطبيقات المتاحة

يحتوي هذا المستودع على الاستغلال مطبقاً في 6 لغات، جميعها متكافئة وظيفياً، مع تعليقات تعليمية باللغة الإسبانية.

copy_fail_exploit.c      → C         — ملف ثنائي ثابت، صفر تبعيات
copy_fail_exploit.py     → Python    — الأكثر قابلية للقراءة، مثالي للتعلم
copy_fail_exploit.rs     → Rust      — السخرية: لغة "آمنة" تستغل النواة
copy_fail_exploit.go     → Go        — ملف ثنائي ثابت، قابل للنقل بدرجة كبيرة
copy_fail_exploit.rb     → Ruby      — موجود في كل مكان على خوادم Rails
copy_fail_exploit.pl     → Perl      — الأكثر صمتاً، موجود في كل لينكس
test_cve_2026_31431.py   → كاشف      — يتحقق من الثغرة دون استغلال أي شيء

الاستخدام حسب اللغة

الكاشف (دائماً أولاً)

python3 test_cve_2026_31431.py
  • Exit 0 → غير عرضة للثغرة
  • Exit 2 → عرضة للثغرة
  • Exit 1 → خطأ في الاختبار

C

# الترجمة
gcc copy_fail_exploit.c -o copy_fail_c

# تشغيل تجريبي (ينظف عند الخروج، لا يترك أثراً)
./copy_fail_c

# استغلال كامل
./copy_fail_c --shell

Python

# تشغيل تجريبي
python3 copy_fail_exploit.py

# استغلال كامل
python3 copy_fail_exploit.py --shell

Rust

# الترجمة
rustc copy_fail_exploit.rs -o copy_fail_rs

# تشغيل تجريبي
./copy_fail_rs

# استغلال كامل
./copy_fail_rs --shell

Go

# الترجمة
go build -o copy_fail_go copy_fail_exploit.go

# تشغيل تجريبي
./copy_fail_go

# استغلال كامل
./copy_fail_go --shell

Ruby

# تشغيل تجريبي
ruby copy_fail_exploit.rb

# استغلال كامل
ruby copy_fail_exploit.rb --shell

Perl

# تشغيل تجريبي
perl copy_fail_exploit.pl

# استغلال كامل
perl copy_fail_exploit.pl --shell

تثبيت اللغات (إذا لم تكن لديك)

# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env

# Go
apt install golang-go

# Ruby (عادةً مثبت مسبقاً في Kali)
apt install ruby

# Perl (موجود دائماً تقريباً)
perl --version

التحقق من النظام

بمجرد تشغيل الاستغلال (قبل su)، يمكنك التحقق بصرياً من التغيير في page cache باستخدام:

تنزيل الأداة