
يقوم بتدقيق نوى Debian/Ubuntu بحثًا عن CVE-2026-98432 ويطبّق تخفيفات nftables وsysctl دائمة، ثم يوجّه عملية ترقية النواة والتراجع عنها.
يتحقق السكربت مما إذا كانت النواة مصححة من CVE-2026-98432 (use-after-free في معالجة IPv4 TCP، CVSS 9.8). إذا لم تكن النواة مصححة، فإنه يفعّل فورًا حماية مؤقتة ويساعد في تثبيت تحديث النواة.
الحماية تقلل المخاطر لكنها لا تزيل الثغرة. الحل الكامل واحد: تثبيت نواة مصححة وإعادة التشغيل. وفقًا لتقييم Red Hat، فإن تصفية الحزم ذات خيارات IP لا تستبعد الاستغلال بالكامل.
tcp_v4_syn_recv_sock() قيمة ireq_opt إلى المقبس الفرعي دون نسخ، بينما تحررها inet_sock_destruct() باستخدام kfree() العادي. SYN المتكرر، الذي تتم معالجته في تلك اللحظة على نواة معالج أخرى، يصل إلى ذاكرة محررة بالفعل في ip_options_build().net.ipv4.tcp_migrate_req=1 أو برنامج BPF BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.ipv4: free inet_opt and ireq_opt after an RCU grace period (e3f33b0a1d89).| فرع stable | تم الإصلاح في |
|---|---|
| 5.10 | 5.10.272 |
| 5.15 | 5.15.223 |
| 6.1 | 6.1.190 |
| 6.6 | 6.6.159 |
| 6.12 | 6.12.113 |
| 6.18 | 6.18.56 |
| 7.2 | 7.2.10 |
| mainline | 7.3 |
الحالة في التوزيعات اعتبارًا من 2 نوفمبر 2026:
linux 6.1.190-1 (DLA-4841-1) وlinux-6.12 6.12.113-1~deb12u1 (DLA-4850-1).linux 6.12.113-1 (DSA-6568-1).prerouting بأولوية raw (−300)، أي قبل أن تقوم النواة بتحليل الخيارات. يُستخدم nftables، وإذا لم يكن متاحًا فـ iptables مع وحدة u32.net.mptcp.enabled = 0. مع ذلك تبقى مقابس MPTCP المفتوحة بالفعل MPTCP، لذا يسردها السكربت كي تعيد تشغيل تلك الخدمات.net.ipv4.tcp_migrate_req = 0 إذا كانت القيمة 1.nftables / netfilter-persistent / firewalld، وفحص عبر مؤقت كل 5 دقائق.إذا كانت النواة قيد التشغيل مصلحة بالفعل، فلن يغيّر السكربت شيئًا وسيرشدك إلى كيفية إزالة الحماية المفعّلة سابقًا.
nftables (موصى به) أو iptables. تتطلب الحماية الدائمة systemd.git clone https://github.com/IgrekLg/cve-2026-98432-mitigation.git
cd cve-2026-98432-mitigation
sudo bash mitigate-cve-2026-98432.sh # аудит, защита, предложение обновить ядро
sudo bash mitigate-cve-2026-98432.sh --status # только посмотреть, ничего не меняя
| المفتاح | الإجراء |
|---|---|
--status | عرض الحالة فقط |
--uninstall | إزالة الحماية وإعادة قيم sysctl الأصلية (إذا لم تكن النواة مُصلحة، سيطلب التأكيد) |
-y, --yes | بدون أسئلة: تثبيت تحديث النواة، تأكيد --uninstall |
--no-upgrade | عدم الاتصال بـ apt: التدقيق والحماية فقط |
--force | تفعيل الحماية حتى لو كانت النواة مُصلحة بالفعل |
--keep-mptcp | عدم تعطيل MPTCP |
--keep-tcp-migrate | عدم المساس بـ net.ipv4.tcp_migrate_req |
إذا لم تكن هناك طرفية (Ansible، cron، ssh بدون -t) ولم يُحدَّد --yes، فإن الحماية تُفعَّل مع ذلك، ويُتخطى تثبيت النواة مع تلميح.
| الرمز | المعنى |
|---|---|
| 0 | النواة قيد التشغيل مُصلحة أو غير متأثرة |
| 3 | النواة غير مُصلحة، الحماية نشطة: يلزم التحديث وإعادة التشغيل |
| 4 | النواة غير مُصلحة، الحماية غير نشطة |
| 1 | خطأ |
| 2 | وسائط غير صحيحة |
مثال لـ Ansible:
- name: CVE-2026-98432 mitigation
ansible.builtin.script: mitigate-cve-2026-98432.sh --yes
register: cve
failed_when: cve.rc not in [0, 3]
changed_when: false
تتم الفحوصات بالترتيب:
CVE-2026-98432 أو عنوان الـ commit المُصلح، فإن النواة مصححة.6.1.190-1. يُقارن الجزء العلوي (upstream) من الإصدار بالجدول أعلاه. تتلقى Debian الإصلاحات عبر تحديثات stable، ولا يُذكر رقم CVE في سجل التغييرات دائمًا.5.15.0-NNN) لا يعكس فرع stable، لذلك تُعتبر النواة مصححة فقط بناءً على سجل التغييرات. بدونه تكون الحالة «الإصلاح غير مؤكد»، ويُفعَّل الحماية. إضافةً إلى ذلك يُعرض pro fix CVE-2026-98432 --dry-run.uname -r. تُعتبر النوى المرشحة (-rc) غير معروفة.جدول الإصدارات المصححة مضمّن في السكربت (FIXED_IN، بيانات بتاريخ 2026-11-02). بالنسبة للتوزيعات المشتقة ذات نوى خاصة بها (Proxmox وغيرها)، راجع نشرة المورّد.
| المسار | الغرض |
|---|---|
/usr/local/sbin/cve-2026-98432-fw | المساعد: apply / ensure / remove / check |
/etc/cve-2026-98432/mitigation.nft | قاعدة nftables (الجدول ip cve_2026_98432) |
/etc/systemd/system/cve-2026-98432-mitigation.service | تطبيق القاعدة عند الإقلاع، قبل network-pre.target |
/etc/systemd/system/cve-2026-98432-mitigation-check.{service,timer} | فحص كل 5 دقائق، يستعيد القاعدة إذا حذفها أحدهم (تسجيل في syslog) |
/etc/systemd/system/{nftables,netfilter-persistent,firewalld}.service.d/50-cve-2026-98432.conf | إعادة التطبيق بعد (إعادة) تحميل القواعد بواسطة هذه الخدمات؛ تُنشأ فقط للخدمات المثبتة |
/etc/sysctl.d/99-zz-cve-2026-98432.conf | sysctl؛ اختير الاسم بحيث يُقرأ الملف بعد /etc/sysctl.conf |
/var/lib/cve-2026-98432/sysctl.orig | قيم sysctl الأصلية لـ --uninstall |
تُحذف ملفات الإصدار السابق من السكربت (mitigate-CVE-2026-98432.service، 99-CVE-2026-98432.conf ونسخ قاعدة iptables المكررة) تلقائيًا.
tcp_v6_syn_recv_sock() ينسخ الخيارات.BPF_SK_REUSEPORT_SELECT_OR_MIGRATE، تحقق منها يدويًا.systemctl stop nftables (أو أي nft flush ruleset خارج الخدمات) لا تعود القاعدة فورًا، بل وفق المؤقّت، خلال 5 دقائق.GODEBUG=multipathtcp=0. فريق أمان Go نفسه يصف تعطيل MPTCP حسب البرامج بأنه إجراء غير موثوق.بعد إعادة التشغيل في نواة مُصلحة:
sudo bash mitigate-cve-2026-98432.sh --uninstall
# логика определения версий, без изменений в системе
bash tests/test-logic.sh
# фильтр в изолированном сетевом пространстве имён (хост не затрагивается):
# ожидается plain=ok options=blocked при включённом правиле
sudo unshare -n sh -c 'python3 tests/netns-probe.py up && nft -f /etc/cve-2026-98432/mitigation.nft && python3 tests/netns-probe.py probe'