
# Ansible Playbook للتخفيف من الثغرة الأمنية CVE-2026-31431 على أنظمة التشغيل المبنية على RHEL و Debian.
دليل Ansible لتطبيق واسترجاع التخفيف من وحدة نواة CVE-2026-31431 (AF_ALG) على أنظمة Debian/Ubuntu و RHEL/Rocky/AlmaLinux.
يقوم هذا الدليل بتخفيف CVE-2026-31431 عن طريق تعطيل وحدة النواة الضعيفة algif_aead:
grubby لإضافة وسيط قائمة حظر initcall للنواة⚠️ مهم: لا يقوم الدليل بإعادة تشغيل خوادمك تلقائيًا. يعرض رسالة تذكير عند الحاجة إلى إعادة التشغيل، مما يسمح للمشغلين بجدولة عمليات إعادة التشغيل خلال نوافذ الصيانة.
يتم توفير ملفات التكوين النموذجية في دليل examples/:
# نسخ ملف الجرد النموذجي
cp examples/inventory/hosts.ini inventory/hosts.ini
# نسخ تكوين ansible النموذجي (اختياري)
cp examples/ansible.cfg ansible.cfg
راجع examples/README.md للحصول على تعليمات تخصيص مفصلة.
قم بتحرير inventory/hosts.ini مع تفاصيل خادمك:
[servers]
server1.example.com
server2.example.com ansible_host=192.168.1.50
[servers:vars]
ansible_user=admin
ansible_become=true
ansible all -m ping
ansible-playbook mitigation-playbook.yaml
لتطبيق التخفيف على جميع المضيفين في الجرد الخاص بك:
ansible-playbook mitigation-playbook.yaml
للتطبيق على مضيفين أو مجموعات محددة:
ansible-playbook mitigation-playbook.yaml --limit webservers
لاسترجاع (إزالة) التخفيف:
ansible-playbook mitigation-playbook.yaml -e "rollback=true"
أو استخدم وسم rollback:
ansible-playbook mitigation-playbook.yaml --tags rollback -e "rollback=true"
لإزالة ملفات systemd drop-in القديمة (إذا كنت تقوم بالترحيل من إصدار أقدم من هذا التخفيف):
ansible-playbook mitigation-playbook.yaml -e "run_systemd_cleanup=true"
TASK [CVE-2026-31431 Summary (Debian)] ****************************************
ok: [server1] => {
"msg": [
"===== CVE-2026-31431 SUMMARY — server1 =====",
"Action: apply",
"Module loaded (pre): False",
"Module loaded (post): False",
"Reboot required: False"
]
}
TASK [Remind operator to reboot (RHEL)] ****************************************
ok: [server2] => {
"msg": "REMINDER: Kernel args changed. Reboot required to activate mitigation."
}
TASK [CVE-2026-31431 Summary (Red Hat)] ****************************************
ok: [server2] => {
"msg": [
"===== CVE-2026-31431 SUMMARY — server2 =====",
"Action: apply",
"Kernel arg active (pre): False",
"Kernel arg active (post): False",
"Reboot required: True"
]
}
TASK [Remind to reboot if required (Red Hat)] **********************************
ok: [server2] => {
"msg": "REMINDER: A reboot is required to activate/deactivate the mitigation on this Red Hat-based host."
}
| عائلة نظام التشغيل | إعادة التشغيل مطلوبة عندما | السلوك |
|---|---|---|
| Debian/Ubuntu | كانت الوحدة "قيد الاستخدام" ولا يمكن إلغاء تحميلها | تذكير فقط |
| RHEL/Rocky/Alma | قام Grubby بإجراء تغييرات على وسائط النواة | تذكير فقط |
تم تصميم الدليل ليكون لا يعيد التشغيل تلقائيًا أبدًا لمنح المشغلين تحكمًا كاملاً في نوافذ الصيانة.
| المتغير | الافتراضي | الوصف |
|---|---|---|
rollback | false | اضبط على true لاسترجاع التخفيف |
run_systemd_cleanup | false | اضبط على true لإزالة ملفات systemd drop-in القديمة |
target_hosts | all | تقييد التنفيذ على مضيفين أو مجموعات محددة |
mitigation_serial | 25% | حجم الدفعة للتنفيذ المتدرج |
mitigation - تشغيل مهام تطبيق التخفيف فقطrollback - تشغيل مهام الاسترجاع فقطsystemd-cleanup - تشغيل مهام تنظيف systemd فقطمثال:
# تشغيل مهام التخفيف فقط
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags mitigation
# تشغيل مهام الاسترجاع فقط
ansible-playbook -i inventory/hosts.ini mitigation-playbook.yaml --tags rollback -e "rollback=true"
بعد تشغيل الدليل (وبعد إعادة التشغيل إذا طُلب ذلك)، تحقق من أن التخفيف نشط:
# تحقق مما إذا كانت الوحدة مدرجة في قائمة الحظر
cat /etc/modprobe.d/disable-algif.conf
# تحقق مما إذا كانت الوحدة محملة (يجب ألا يُرجع شيئًا)
lsmod | grep algif_aead
# تحقق من وجود وسيط النواة
grep initcall_blacklist /proc/cmdline
# يجب أن يُخرج شيئًا مثل:
# ... initcall_blacklist=algif_aead_init ...
رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل
المساهمات مرحب بها! يرجى تقديم المشكلات وطلبات السحب.
تم إنشاء هذا الدليل مستوحى من المصادر التالية:
يتم توفير هذا الدليل كما هو. اختبر دائمًا بدقة في بيئتك قبل التطبيق على أنظمة الإنتاج. المؤلفون غير مسؤولين عن أي تلف في النظام أو توقف ناتج عن استخدام هذا الدليل.