
أدوات الكشف والتخفيف لـ CVE-2026-31431 (Copy Fail) على أنوية لينكس. تتضمن نصوص Phalanx-CCS و Silent4Labs بالإضافة إلى playbook Ansible لتطبيق التخفيف المؤقت (حظر وحدة algif_aead أو معامل الإقلاع) عبر الخوادم.
توفر هذه الحزمة حلاً آلياً لاكتشاف وتخفيف الثغرة الأمنية CVE-2026-31431 (المعروفة باسم Copy Fail) على أنظمة لينكس التي تشغل النوى المتأثرة (الإصدارات 4.14 حتى 6.12.84، و6.13 حتى 6.18.21، وغيرها).
تتكون الأدوات من:
mitigate_copyfail.sh) يقوم بـ:
CONFIG_CRYPTO_USER_API_AEAD=m|y).=m): ينشئ ملف /etc/modprobe.d/disable-algif-aead.conf بمحتوى install algif_aead /bin/false ويفرغ الوحدة (rmmod).=y): يضيف معامل إقلاع النواة initcall_blacklist=algif_aead_init (يتطلب إعادة تشغيل).mitigation.yml) يقوم بـ:
ملاحظة مهمة: التخفيف مؤقت. الإصلاح الدائم هو ترقية النواة إلى إصدار يتضمن التصحيح
a664bf3d603d(≥6.18.22, ≥6.19.12 أو ≥7.0).
become: yes)sudo (لتطبيق التخفيف)نصوص الكشف (Phalanx-CCS و Silent4Labs) آمنة ولا تستغل الثغرة؛ فهي تتحقق فقط من سطح الهجوم.
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # النص الموحد (كشف + تخفيف)
│ ├── check_copyfail.py # Phalanx-CCS (مدقق الوصول)
│ └── check-copyfail.sh # Silent4Labs (تقييم المخاطر)
├── ansible/
│ ├── ansible.cfg # (اختياري) تكوين Ansible
│ ├── inventory.ini # قائمة الخوادم
│ └── mitigation.yml # الدفتر الرئيسي
└── resultados_cve/ # مجلد يتم إنشاؤه تلقائياً للسجلات
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)مثال لخادم بعيد:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # إذا تم استخدام كلمة مرور لـ sudo
في mitigation.yml، مهمة Copy scripts to remote تستخدم src: "../scripts/{{ item }}". تأكد من صحة المسار النسبي، أو قم بتعديله وفقاً لترتيب ملفاتك.
من داخل مجلد ansible/:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k يطلب كلمة مرور SSH.-K يطلب كلمة مرور become (sudo).عند استخدام localhost مع ansible_connection=local، لا حاجة لـ SSH.
يعرض الدفتر ملخصاً نصياً مشابهاً لما يلي:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
بالإضافة إلى ذلك، يتم حفظ ملف سجل في resultados_cve/<hostname>_mitigation.log يحتوي على مخرجات النص الكاملة (التاريخ، إصدار النواة، رسائل الكشف، إلخ).
إذا كانت القيم المستخرجة تظهر ? أو Not detected، قم بتمكين مهام التصحيح في mitigation.yml:
when: false إلى when: true في مهام DEBUG الثلاث (أو اضبط when: true لعرض clean_stdout ومخرجات regex).قم بتحرير مهمتي Create local results directory و Save full output to local file:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
قم بتعليق مهام النسخ وعدّل المسار في مهمة Run mitigation script ليشير إلى الموقع الموجود.
غيّر when: false إلى when: true في المهمة الأخيرة (Clean up remote scripts).
initcall_blacklist) يتطلب إعادة تشغيل ليصبح ساري المفعول. لا يقوم الدفتر بإعادة التشغيل تلقائياً؛ يجب التخطيط لنافذة صيانة.CONFIG_CRYPTO_USER_API_AEAD=y (وحدة مدمجة في النواة)، لا يمكن تفريغ الوحدة باستخدام rmmod؛ الطريقة الوحيدة هي معامل الإقلاع./proc/crypto و /boot/config-*؛ فهي تعمل مع become: yes.يُوزع هذا المشروع بموجب ترخيص MIT. النصوص البرمجية من طرف ثالث (Phalanx-CCS و Silent4Labs) تحتفظ بتراخيصها الخاصة.
إذا وجدت هذه الأداة مفيدة، يرجى التفكير في منحها نجمة على GitHub!