
سكربت Shell يقيّم حالة تصحيح نواة Ubuntu للثغرة CVE-2026-98432 ويطبّق إجراءً مؤقتًا دائمًا عبر nftables أو iptables لإسقاط حزم TCP IPv4 التي تحمل خيارات IP.
# 1. Inspect the host; no changes.
sudo ./cve-2026-98432-mitigate.sh check
# 2. Get a patch-state verdict for the exact running kernel package.
sudo ./cve-2026-98432-mitigate.sh assess
# 3. Apply the stopgap filter and make it survive reboot.
sudo ./cve-2026-98432-mitigate.sh enable
# 4. Prove that normal TCP still works and IP-option TCP is dropped.
sudo ./cve-2026-98432-mitigate.sh verify
# 5. Monitor. Exit 0 = healthy, 1 = mismatch/persistence failure, 2 = no state.
sudo ./cve-2026-98432-mitigate.sh status
# 6. After booting a kernel that Ubuntu marks as fixed.
sudo ./cve-2026-98432-mitigate.sh disable
enable يرفض تغيير مجموعة القواعد عند اكتشاف CIPSO/NetLabel، لأن القاعدة تُسقط كل حركة TCP التي تحمل خيارات IP، بما في ذلك الحركة الموسومة. استخدم --ignore-cipso فقط إذا كنت تقبل هذه المقايضة. يجب على الحاويات أو المضيفات التي لا تعمل بنظام systemd استخدام --no-persist؛ وإلا فإن enable يخرج بالرمز 4 عندما يتعذر تأمين الاستمرارية بعد إعادة التشغيل مع الإبقاء على القاعدة النشطة في مكانها.
CVE-2026-98432 هو ثغرة use-after-free في مصافحة TCP الخاصة بـ IPv4 في Linux. يمكن الوصول إليها عندما يحمل SYN الوارد خيارات IP. الإصلاح الحقيقي هو نواة مُرقّعة؛ هذا السكربت حل مؤقت يُسقط حزم TCP الواردة الخاصة بـ IPv4 التي يزيد طول ترويستها IP عن 5 (IHL 6-15)، أي الحزم التي تحمل خيارات IP، قبل conntrack وDocker NAT.
يدعم واجهتين خلفيتين متكافئتين:
table ip cve_2026_98432، أولوية prerouting -310، TCP فقط، عدّاد، إسقاط.raw PREROUTING، مطابقة u32 بـ 0>>24&0xf=6:15، TCP فقط، عدّاد، إسقاط.يستخدم شكل nft عائلة ip وأولوية رقمية بحيث يعمل على nft 0.5 في Ubuntu 16.04 وكذلك على nft 1.x الحالي. يعمل شكل iptables مع iptables 1.6 وما بعده. لا يتم تثبيت أي حزمة ما لم يتم تمرير --install-nft.
يتحقق السكربت من القاعدة الكاملة المتوقعة، وليس من أجزاء منها. بالنسبة لـ nft فإنه يتطلب أن تحمل سلسلة pre خطاف prerouting عند الأولوية -310 بالضبط (أو الصيغة القديمة raw - 10) وأن يكون DROP المتوقع هو القاعدة الأولى. بالنسبة لـ iptables فإنه يتطلب نجاح iptables -C ومطابقة قاعدة raw PREROUTING الأولى الكاملة بعد التطبيع. يقوم enable بإصلاح قاعدة مُزاحة بدلاً من رفض إعادة التطبيق.
ساهم سكربت Akamai بأفكار التقييم والسلامة أدناه. لم يُعتمد شكل التنفيذ الخاص به لأن شكلنا أكثر صرامة ومتوافق مع 16.04. أهم النتائج المُدمجة، بترتيب الأولوية:
assess حزمة صورة النواة الدقيقة قيد التشغيل (linux-image-$KVER، ثم linux-image-unsigned-$KVER، ثم مالك /boot/vmlinuz-$KVER). تُعرض الحزم الفوقية مثل linux-image-generic كسياق فقط، ولا تُستخدم أبداً كدليل على الحكم. إصابة في سجل التغييرات دليل قوي لكنه قابل للخطأ؛ سجل تغييرات مفقود مع إصدار upstream نظيف قاطع بشكل مستقل عند الإصدار المُصلح أو أعلى منه لا يزال يُنتج PATCHED؛ نواة من المورّد بدون دليل تُنتج UNKNOWN.enable يخرج بالرمز 4 مع الإبقاء على القاعدة نشطة. يقيّم status الاستمرارية بشكل مستقل عن حالة التشغيل الخاصة بـ oneshot ويرفض enabled-runtime كغير مستمرة.detected يرفض افتراضياً، unknown يحذّر، not_detected يمضي قدماً. غياب netlabelctl لا يُثبت غياب CIPSO.check بين مُتحقَّق-قابل للاستخدام، وموجود-غير مُتحقَّق، وغير قابل للاستخدام، ومجهول؛ --backend nft يقيّم nft حتى عندما يعمل iptables.XDP_PASS لا يزال يدخل مكدس النواة.-x) حيثما أمكن، وتُبلَّغ قاعدة filter/INPUT القديمة من إصدار سابق وتُزال بعد تحميل بديل raw.مطابقة القاعدة وتنسيق ملف الحالة متوافقان مع الإصدارات السابقة. لا تحتاج إلى تنفيذ disable أولاً؛ إعادة تشغيل enable بهذا الإصدار تُصلح القاعدة في مكانها، وتُثبّت وحدة الإقلاع المحدّثة، وتُسجّل حقل الاستمرارية الجديد. إذا كان ملف حالة قديم لا يحتوي على سطر persist=، فإن status يستنتج الاستمرارية من حالة الوحدة بدلاً من الفشل بسبب الحقل المفقود.
تغييرات تشغيلية يجب معرفتها:
enable الآن يخرج بالرمز 4 عندما تكون القاعدة نشطة لكن استمرارية إعادة التشغيل فشلت. سابقاً كان يمكن أن يخرج بالرمز 0 في تلك الحالة.check الآن يُرجع 0 فقط لواجهة خلفية مُتحقَّق من صلاحيتها، و1 في حال عدم وجود واجهة خلفية صالحة، و4 في حال وجودها دون تحقق، و2 لأخطاء الاستخدام.assess جديد ويُرجع 0/1/3/4 كما هو موثّق أدناه.enable ما لم يُمرَّر --ignore-cipso.enable حتى يُطبَّق ترتيب الوحدة الجديد وExecStart.أُعِدّ: 2026-10-30 (حُدِّث 2026-10-31)
تم فحص متتبّع Ubuntu: 2026-10-31 11:59 UTC (آخر تحديث للصفحة 2026-10-30). لم تصدر أي نواة مُصلحة بعد.
النطاق: خوادم Linux، وبشكل أساسي Ubuntu 16.04 (xenial)، و22.04 (jammy)، و24.04 (noble)، و26.04 (resolute)، بما في ذلك مضيفات Docker/BTCPay.
المُخرَج: cve-2026-98432-mitigate.sh في هذا الدليل.
تم الاختبار على: Ubuntu 16.04، و22.04، و24.04، و26.04.
6.8.0-149.149)، و22.04 (5.15.0-203.213)، و26.04 (7.0.0-43.43)، و26.10 (7.3.0-10.10).من وصف Ubuntu: