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

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

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

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

دليل الأدوات

الفئات

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

cve-2026-31431

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

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

الأكثر شعبية

عرض الكل →

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

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

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

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

مجموعة أدوات CVE-2026-31431 (Copy Fail)

يحتوي هذا المستودع على أداة الكشف وPoC لثغرة الكتابة الخاطئة في ذاكرة التخزين المؤقت للصفحات (page cache scratch-write) في algif_aead / authencesn بنظام Linux، والمعروفة باسم CVE-2026-31431.

مقالة الإفصاح: https://xint.io/blog/copy-fail-linux-distributions

ملاحظات الترخيص

يُسمح باستخدام هذه الأدوات فقط على الأجهزة التي تمتلكها أو التي لديك إذن صريح لاستخدامها عليها. أداة الكشف غير مدمرة وتتعامل فقط مع ملفات sentinel في دليل مؤقت؛ بينما تعد PoC وLPE تقنيات حقيقية لتصعيد الامتيازات المحلية لأنها تعدّل حالة ذاكرة التخزين المؤقت للصفحات في الذاكرة، وقد يكون تشغيلها دون إذن غير قانوني.

نظرة عامة على الثغرة

ينفّذ algif_aead عمليات AEAD في مكانها (in-place)، أي أن req->src == req->dst. عندما يتم إدخال البيانات عبر splice() من ملف عادي، تحتوي قائمة scatterlist الهدف على مراجع لصفحات ذاكرة التخزين المؤقت لهذا الملف، مما قد يؤدي إلى كتابة النواة في نسخة ذاكرة التخزين المؤقت للصفحات الخاصة بالملف.

يقوم authencesn(hmac(sha256),cbc(aes)) بكتابة خاطئة بحجم 4 بايت في حقل seqno_lo داخل AAD (البايتات من 4 إلى 7 في AAD). عند دمج ذلك مع خاصية AEAD في المكان ومسار splice()، يمكن للمهاجم جعل هذه الـ 4 بايتات تقع في صفحة ذاكرة تخزين مؤقت لملف قابل للقراءة.

لا يتم كتابة هذا التعديل مرة أخرى إلى القرص، بل يؤثر فقط على ذاكرة التخزين المؤقت للصفحات الحالية في النواة. لذلك تبقى محتويات الملف على القرص دون تغيير، لكن القراء الذين يشاركون نفس ذاكرة التخزين المؤقت سيرون المحتوى الملوّث. يمكن استهداف ملفات قابلة للقراءة عالميًا مثل /etc/passwd و/usr/bin/su.

وصف الملفات

بناء الإصدار الرسمي

يتطلب تثبيت Rust toolchain وCargo على الجهاز.

بناء جميع ثنائيات Rust:

root@kitploit:~
cargo build --release --bins

بعد اكتمال البناء، سيتم إنشاء:

root@kitploit:~
target/release/cve_2026_31431_detector
target/release/cve_2026_31431_poc

إذا كنت ترغب في إرسال ملفات مُجمّعة مسبقًا في المستودع، فضعها في:

root@kitploit:~
dist/linux-x86_64/cve_2026_31431_detector
dist/linux-x86_64/cve_2026_31431_poc
dist/linux-x86_64/SHA256SUMS

لا ترسل دليل target/ بالكامل؛ فهو يحتوي على منتجات Cargo الوسيطة وذاكرة التخزين المؤقت المحلية.

بناء أداة الكشف غير المدمرة فقط:

root@kitploit:~
cargo build --release --bin cve_2026_31431_detector

بناء نسخة Rust من poc.py فقط:

root@kitploit:~
cargo build --release --bin cve_2026_31431_poc

التحقق من وجود الثغرة

يُوصى باستخدام أداة الكشف غير المدمرة بلغة Rust:

root@kitploit:~
./target/release/cve_2026_31431_detector
echo $?

يمكن أيضًا تشغيلها مباشرة عبر Cargo:

root@kitploit:~
cargo run --release --bin cve_2026_31431_detector
echo $?

استخدام أداة الكشف بلغة Python:

root@kitploit:~
python3 test_cve_2026_31431.py
echo $?

معنى رموز الخروج:

رمز الخروجالمعنى
0لم يتم اكتشاف ثغرة، أو لم تتحقق الشروط المسبقة، مثل عدم توفر AF_ALG / authencesn.

تفسير المخرجات الشائعة:

العمليات التي تنفذها أداة الكشف:

  1. التحقق من توفر AF_ALG وauthencesn(hmac(sha256),cbc(aes)).
  2. إنشاء ملف sentinel بحجم 4 KiB في دليل مؤقت.
  3. إرسال AAD عبر sendmsg مع تعيين seqno_lo في AAD على marker PWND.
  4. إدخال صفحة ذاكرة التخزين المؤقت لملف sentinel عبر splice() إلى op socket الخاص بـ AF_ALG.
  5. استدعاء recv() لدفع تنفيذ الخوارزمية.
  6. إعادة قراءة ملف sentinel للتحقق من ظهور marker أو أي تعديل آخر في ذاكرة التخزين المؤقت للصفحات.

لا تعدّل أداة الكشف ملفات /usr/bin/su أو /etc/passwd أو أي ملفات نظام أخرى. يتم حذف ملف sentinel المؤقت عند الخروج.

تشغيل PoC

نسخة Rust من poc.py:

root@kitploit:~
./target/release/cve_2026_31431_poc

أو:

root@kitploit:~
cargo run --release --bin cve_2026_31431_poc

ملاحظة: تفتح هذه الـ PoC ملف /usr/bin/su وفقًا لمنطق poc.py، وتلوّث نسخة ذاكرة التخزين المؤقت الخاصة به عبر بدائية الثغرة، ثم تنفّذ su. هذه ليست عملية كشف غير مدمرة، ويجب تشغيلها فقط في بيئة اختبار مصرح بها.

استخدام LPE بلغة Python

root@kitploit:~
python3 exploit_cve_2026_31431.py
python3 exploit_cve_2026_31431.py --shell

يبحث هذا السكربت عن حقل UID الخاص بالمستخدم الحالي في /etc/passwd ويحاول تغيير UID في ذاكرة التخزين المؤقت إلى 0000. لا يتم تعديل ملف /etc/passwd على القرص، لكن عمليات النظام التي تقرأ ذاكرة التخزين المؤقت قد ترى المحتوى الملوّث.

الشروط المسبقة:

  • يجب أن يكون UID للمستخدم الحالي رقمًا من 4 أرقام، مثل 1000 إلى 9999.
  • قد تخفي خدمات ذاكرة التخزين المؤقت NSS مثل nscd وsssd وsystemd-userdbd تغييرات ذاكرة التخزين المؤقت لـ /etc/passwd.
  • يجب أن تبقى ذاكرة التخزين المؤقت لـ /etc/passwd موجودة بين تطبيق التصحيح وتنفيذ su.

تنظيف ذاكرة التخزين المؤقت:

root@kitploit:~
python3 -c "import os; fd=os.open('/etc/passwd', os.O_RDONLY); os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)"

إذا حصلت بالفعل على shell بصلاحيات root، يمكنك أيضًا تنفيذ:

root@kitploit:~
echo 3 > /proc/sys/vm/drop_caches

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

إجراءات التخفيف

قبل إصدار إصلاح من توزيعة Linux، يمكن تعطيل algif_aead:

root@kitploit:~
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null

بعد تطبيق التخفيف، يجب أن تُخرج أداة الكشف عادةً نتيجة الكشف: لم يتم العثور على ثغرة مع توضيح أن الشروط المسبقة للتفعيل غير متوفرة، ورمز الخروج 0.

فكرة الإصلاح من الجهة العليا هي إعادة عمليات AEAD من المعالجة في المكان إلى المعالجة غير الموضعية، لتجنب دخول صفحات ذاكرة التخزين المؤقت إلى قائمة scatterlist الوجهة القابلة للكتابة.

المراجع

  • مقالة إفصاح Xint: https://xint.io/blog/copy-fail-linux-distributions
  • CVE-2026-31431
تنزيل الأداة
الملفالوصف
test_cve_2026_31431.pyأداة كشف غير مدمرة بلغة Python. تتعامل فقط مع ملفات sentinel مؤقتة ولا تلمس ملفات النظام.
src/main.rsأداة كشف غير مدمرة بلغة Rust. منطق الكشف ورموز الخروج مطابقة لأداة Python.
src/bin/poc.rsنسخة Rust من poc.py. تلوّث ذاكرة التخزين المؤقت لـ /usr/bin/su وتنفّذ su.
poc.pyPoC بلغة Python.
exploit_cve_2026_31431.pyLPE بلغة Python. يحاول الحصول على shell بصلاحيات root عبر تلويث ذاكرة التخزين المؤقت لـ /etc/passwd.
2
تم اكتشاف قابلية التأثر بـ CVE-2026-31431.
1حدث خطأ أثناء عملية الاختبار، ولا يمكن استخدام النتيجة كحكم على وجود الثغرة.
المخرجاتالاستنتاج
نتيجة الكشف: لم يتم العثور على ثغرةلم يتم اكتشاف ثغرة، أو لم تتحقق الشروط المسبقة للتفعيل.
نتيجة الكشف: توجد ثغرة CVE-2026-31431نجح marker PWND في الوصول إلى صفحة ذاكرة التخزين المؤقت المُدخلة عبر splice()، مما يعني وجود الثغرة.
نتيجة الكشف: توجد ثغرة CVE-2026-31431 مشتبه بهاتم تعديل ذاكرة التخزين المؤقت للصفحات، حتى لو لم يصل marker إلى الموضع المتوقع، يجب اعتبار النظام متأثرًا.
حدث خطأ أثناء عملية الاختبار، لا يمكن تحديد وجود الثغرةفشل الكشف، رمز الخروج 1، يجب التحقق من رسالة الخطأ وإعادة التشغيل.