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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script
أمن البنية التحتية السحابيةماسحات الثغرات الأمنيةأمن الحاوياتتحليل الثغرات الأمنيةتدقيق التكوينDevSecOpsكشف التسللالاستجابة للحوادث

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
GitHub
liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script

CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script

نص كشف لـ CVE-2026-31431 (Copy Fail) يتحقق من إصدار النواة، ووجود التصحيح، وإعدادات النواة، وتوفر مقبس AF_ALG، وثنائيات setuid، والإجراءات التخفيفية لتحديد حالة الثغرة الأمنية على أنظمة لينكس.

عرض المستودع
2528منذ 4 أشهرتمت المراجعة من قبل Kitploit
مشاركة

CVE-2026-31431 — Copy Fail — سكربت اكتشاف الثغرة

للكشف فقط. يوجد PoC عملي بالفعل على copy.fail/#exploit. هذا السكربت مخصص لمسؤولي الأنظمة وفرق الأمان لتحديد أماكن تعرضهم للثغرة — أو استمرار تعرضهم لها بعد تطبيق التصحيح.


ما الموضوع؟

في 29 أبريل 2026، تم الكشف علنًا عن ثغرة تُسمى Copy Fail (CVE-2026-31431) من قبل فريق Xint Code Research Team. إنها خلل منطقي موجود بهدوء في نواة لينكس منذ حوالي 2017 — ما يقارب عقدًا من الزمن — وتسمح لأي مستخدم محلي غير مميز بالحصول على صلاحيات الجذر.

ليس "الحصول على الجذر في ظل ظروف محددة مع بعض الحظ ورياح مواتية." فقط... الحصول على الجذر. بشكل موثوق. على كل توزيعات لينكس الرئيسية تقريبًا.

تؤثر على Ubuntu وAmazon Linux وRHEL وSUSE وأي شيء آخر يعمل بنواة سائدة من آخر ~8 سنوات. نفس السكربت، بدون إعادة ترجمة، وبدون تعديلات خاصة بالتوزيعات.

نعم، الأمر سيء كما يبدو.

النسخة المختصرة لكيفية عملها

تحتوي نواة لينكس على نظام فرعي للتشفير يمكن الوصول إليه من قبل المستخدمين غير المميزين عبر مقابس AF_ALG. توجد آلية تُسمى splice() يمكنها تغذية بيانات الملفات مباشرة إلى ذلك النظام الفرعي دون نسخها — مما يعني أن النسخة المخزنة في ذاكرة النواة من ملف (ما يُسمى "page cache") تنتهي داخل عملية تشفير.

خوارزمية واحدة محددة — authencesn، المستخدمة لأرقام التسلسل الموسعة في IPsec — لديها خصوصية حيث تستخدم مخزن الإخراج كمساحة عمل مؤقتة وتكتب 4 بايتات أبعد قليلاً من الموضع المفترض. عادةً ما يكون هذا غير ضار. ولكن عندما تنتهي صفحات page cache من ثنائي setuid مثل في سلسلة داخل مخزن الإخراج ذلك (بفضل "تحسين" عام 2017 في )، تهبط تلك الـ 4 بايتات مباشرة في النسخة المخزنة في ذاكرة النواة من الثنائي.

/usr/bin/su
algif_aead.c

تفشل العملية مع خطأ. لا تقوم النواة أبدًا بوضع علامة على تلك الصفحة كمتسخة. الملف على القرص يبقى دون تغيير. أدوات فحص سلامة الملفات التي تتحقق من المجاميع الاختبارية على القرص لا ترى أي خطأ.

لكن page cache هو ما يتم تنفيذه. وsu هو setuid root.

الشرح الفني الكامل موجود على xint.io ويستحق القراءة حقًا.


ما تفحصه السكربتات

سكربت بايثون — 13 فحصًا

سبعة من الإصدار الأصلي بالإضافة إلى ستة فحوصات جديدة أُضيفت لسد فجوات الكشف:

#الفحصما الذي يبحث عنه
1إصدار النواةهل هذه النواة ضمن النطاق المتأثر (4.10–6.14)؟
2وجود التصحيحهل commit الإصلاح موجود فعليًا في نواتك قيد التشغيل؟
3وحدة algif_aeadهل الوحدة الضعيفة محمّلة أو قابلة للتحميل؟
4CONFIG_CRYPTO_AUTHENC (جديد)هل CONFIG_CRYPTO_AUTHENC مدمجة (=y) أم وحدة (=m)؟ هذا الخيار الواحد يبني كلاً من authenc وauthencesn. المدمجة تعني أن تخفيف قائمة الحظر في modprobe لا يفعل شيئًا.
5CONFIG_CRYPTO_USER_API_AEAD (جديد)هل واجهة مستخدم AF_ALG AEAD مضمّنة في الترجمة أصلًا؟ إذا لم تكن كذلك، فإن مسار الاستغلال بأكمله مغلق وقت الترجمة.
6مقبس AF_ALGهل يمكن لمستخدم غير مميز فتح واحد الآن؟
7Python os.spliceهل مسار الاستغلال بـ Python الخالص متاح؟
8ثنائيات setuidقائمة موسعة من أهداف setuid-root القابلة للقراءة الموجودة على النظام.
9التخفيفاتAppArmor وSELinux وseccomp — ما الموجود؟
10مساحات أسماء المستخدمين (جديد)هل مساحات أسماء المستخدمين غير المميزة مفعّلة؟ (لا تمنع Copy Fail مباشرة، لكنها تؤثر على سطح تصعيد الصلاحيات المحلي الأوسع.)
11الصفحات الضخمة الشفافة (جديد)حالة THP — يمكن أن تؤثر على محاذاة page cache وموثوقية الاستغلال.
12كشف البيئة (جديد)سياق Docker/حاوية/VM — الحاويات تشارك نواة المضيف؛ المضيف هو ما يحتاج إلى التصحيح.
13تحذير مستخدم الجذر (جديد)يحذر إذا كان التشغيل كجذر، لأن عدة فحوصات تعطي نتائج إيجابية خاطئة للجذر بغض النظر عن قيود غير المميزين.

سكربت شل — 10 فحوصات

يغطي سكربت Bash نفس منطق الكشف الأساسي لكنه يحذف ثلاثة عناصر خاصة بـ Python:

#الفحصملاحظات
1إصدار النواة
2وجود التصحيح
3وحدة algif_aead
4مقبس AF_ALGيستخدم Python كمساعد إذا كان متاحًا؛ يتراجع إلى استنتاج إعدادات النواة
5ثنائيات setuidقائمة موسعة، نفس نسخة Python
6التخفيفاتAppArmor وSELinux وseccomp
7CONFIG_CRYPTO_AUTHENC
8مساحات أسماء المستخدمين
9الصفحات الضخمة الشفافة
10كشف البيئة

غير موجود في سكربت شل (مقارنة بـ Python):

الفحص المفقودالسبب
CONFIG_CRYPTO_USER_API_AEADلم يُنفَّذ بعد — مخطط له
توفر Python os.spliceغير قابل للتطبيق على سكربت شل
تحذير مستخدم الجذرلم يُنفَّذ بعد — مخطط له

لن يصلح أي من السكربتين أي شيء أو يستغل أي شيء. يخبرانك بالحقيقة حول نظامك لتتمكن من التصرف بناءً عليها.


المتطلبات

  • Python 3.6+
  • لا تبعيات خارجية — المكتبة القياسية فقط
  • لا حاجة لصلاحيات الجذر (عن قصد — نتحقق مما يمكن لمهاجم غير مميز رؤيته)
  • موصى به: التشغيل كمستخدم غير جذر — بعض الفحوصات (مقبس AF_ALG، stat لـ setuid) تنجح دائمًا للجذر وستعطي نتائج إيجابية خاطئة

الاستخدام

root@kitploit:~
# استنسخ أو حمّل السكربت، ثم:
python3 cve-2026-31431-detect.py

هذا كل شيء. تقرير ملوّن مع ملخص في النهاية.

رموز الخروج

يخرج السكربت برمز غير صفري عند وجود نتائج ضعيفة، مما يجعله مناسبًا للاستخدام في خطوط الأنابيب:

الرمزالمعنى
0لا توجد شروط ضعيفة
1يوجد شرط أو أكثر من الشروط الضعيفة
root@kitploit:~
# مثال: إفشال خطوة CI إذا كان المضيف ضعيفًا
python3 cve-2026-31431-detect.py
rc=$?
if [ $rc -eq 1 ]; then
  echo "VULNERABLE — block deployment"
elif [ $rc -ne 0 ]; then
  echo "ERROR — script failed to complete (exit $rc)"
fi

مثال على الإخراج

root@kitploit:~
CVE-2026-31431 'Copy Fail' — Vulnerability Detection
authencesn page cache corruption / local privilege escalation
Running as uid=1001, euid=1001

=== Kernel Version ===
  [VULNERABLE] Kernel version
          Reason : Kernel is in the vulnerable range (4.10 – 6.14)
          Detail : Release: 6.12.0-124.45.1.el10_1 — patch status must be confirmed

=== CONFIG_CRYPTO_AUTHENC (Kernel Config) ===
  [VULNERABLE] CONFIG_CRYPTO_AUTHENC
          Reason : Built as module (=m): auto-loads on AF_ALG bind(); modprobe blacklist is the correct mitigation

=== CONFIG_CRYPTO_USER_API_AEAD (Kernel Config) ===
  [VULNERABLE] CONFIG_CRYPTO_USER_API_AEAD
          Reason : AF_ALG AEAD interface is a loadable module — unprivileged users can access the crypto subsystem via AF_ALG sockets

...

  SYSTEM IS LIKELY VULNERABLE TO CVE-2026-31431

  Recommended actions:
    1. Apply your distribution's kernel update for CVE-2026-31431
    2. Until patched, blacklist the module:
         echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
         rmmod algif_aead 2>/dev/null
       NOTE: this is ONLY effective when CONFIG_CRYPTO_AUTHENC=m (module).
       If CONFIG_CRYPTO_AUTHENC=y (built-in), patching is the only fix.

نسخة شل (لخطوط أنابيب DevSecOps)

سكربت Bash مصاحب (cve-2026-31431-detect.sh) متاح للبيئات التي لا يتوفر فيها Python أو حيث يُفضَّل استخدام أدوات شل الأصلية. ينفذ 10 من أصل 13 فحصًا — راجع جدول مقارنة الفحوصات أعلاه لتفاصيل الاختلافات.

root@kitploit:~
# تشغيل أساسي
bash cve-2026-31431-detect.sh

# إخراج JSON — مناسب لاستيعاب SIEM وAnsible facts وتجميع السجلات
bash cve-2026-31431-detect.sh --json > scan-results.json

# وضع هادئ — طباعة الملخص فقط (مفيد في سجلات CI)
bash cve-2026-31431-detect.sh --quiet

# تعطيل ألوان ANSI (للملفات السجلية)
bash cve-2026-31431-detect.sh --no-colour

يستخدم سكربت شل نفس رموز الخروج (0 = سليم، 1 = ضعيف) وينتج إخراج JSON مكافئًا لاستهلاك خطوط الأنابيب. عندما يتوفر Python 3 على النظام، يستخدمه سكربت شل لإجراء اختبار مقبس AF_ALG الحي؛ وإلا يتراجع إلى استنتاج إعدادات النواة.


الإصلاح

الإصلاح الحقيقي هو تصحيح نواتك. تحقق من النشرات الأمنية لتوزيعتك.

التوزيعةأين تنظر
Ubuntuubuntu.com/security/CVE-2026-31431
RHEL / Amazon Linuxdnf update kernel
SUSEzypper update kernel-default
Debianapt update && apt upgrade

تخفيف مؤقت (لإصدارات الوحدات فقط)

إذا أبلغ فحص CONFIG_CRYPTO_AUTHENC عن =m (مبنية كوحدة، وليست مدمجة)، يمكنك حظرها:

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

مهم: هذا التخفيف ليس له أي تأثير إذا كانت CONFIG_CRYPTO_AUTHENC=y (مدمجة). في هذه الحالة، تصحيح النواة هو الحل الوحيد. فحص CONFIG_CRYPTO_AUTHENC في السكربت يخبرك بأي حالة أنت فيها. لاحظ أن CONFIG_CRYPTO_AUTHENC هو مفتاح إعداد النواة الصحيح — فهو يبني كلاً من وحدتي authenc وauthencesn من خيار واحد.

قد يؤثر هذا على IPsec إذا كنت تستخدمه — تحقق قبل النشر على نطاق واسع.

الإصلاح من المنبع

الإصلاح من المنبع هو هذا الـ commit — يعيد تحسين AEAD الموضعي لعام 2017 في algif_aead.c، ويفصل قوائم scatterlist للمصدر والوجهة بحيث لا يمكن لصفحات page cache أن تنتهي في الوجهة القابلة للكتابة بعد الآن.


الحاويات والأجهزة الافتراضية

إذا كنت تشغّل هذا داخل حاوية Docker أو pod في Kubernetes أو أي بيئة حاويات أخرى، سيحذرك السكربت: الحاويات تشارك نواة المضيف. الثغرة موجودة في النواة، وليس في صورة الحاوية. يجب عليك تقييم وتصحيح المضيف.


أمثلة تكامل DevSecOps

root@kitploit:~
# GitHub Actions
# The step will naturally fail and block the pipeline when the script exits 1.
# No extra configuration needed — non-zero exit codes fail steps by default.
- name: Check CVE-2026-31431
  run: |
    python3 cve-2026-31431-detect.py
    rc=$?
    if [ $rc -eq 1 ]; then
      echo "VULNERABLE — pipeline blocked"
      exit 1
    elif [ $rc -ne 0 ]; then
      echo "ERROR — detection script failed to complete (exit $rc)"
      exit $rc
    fi
root@kitploit:~
# Ansible
# Uses playbook_dir to ensure the script path resolves correctly.
# failed_when checks for any non-zero exit (vulnerability OR script error).
- name: Check for CVE-2026-31431
  script: "{{ playbook_dir }}/cve-2026-31431-detect.py"
  register: cve_check
  failed_when: cve_check.rc != 0
root@kitploit:~
# Nagios / monitoring check (shell script — supports exit codes natively)
bash cve-2026-31431-detect.sh --quiet
# exit 0 = OK, exit 1 = CRITICAL (vulnerable)
root@kitploit:~
# JSON output for SIEM / log aggregation (shell script)
bash cve-2026-31431-detect.sh --json --quiet > /var/log/cve-2026-31431-$(hostname)-$(date +%Y%m%d).json

الجدول الزمني للكشف

التاريخالحدث
2026-03-23تم الإبلاغ لفريق أمان نواة لينكس
2026-03-24تم الإقرار
2026-03-25تم اقتراح ومراجعة التصحيحات
2026-04-01تم الالتزام بالإصلاح في النواة الرئيسية
2026-04-22تم تعيين CVE-2026-31431
2026-04-29الكشف العلني

الفضل لـ Taeyang Lee في Theori للرؤية البحثية الأصلية، وفريق Xint Code Research Team لكتابة تقرير الكشف الكامل.


المساهمة

وجدت نتيجة إيجابية خاطئة؟ توزيعة لا يغطيها السكربت؟ إعداد نواة يجب فحصه؟ نرحب بالطلبات (PRs). الهدف هو إشارة دقيقة، وليس مجرد نص أحمر مخيف.

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

تُقدَّم هذه الأداة كما هي لأغراض الأمان الدفاعية. وجّهها إلى الأنظمة التي لديك إذن بتقييمها. لا تكن غريبًا في ذلك.

تنزيل الأداة