CVE-2026-98432
ipv4: تحرير inet_opt و ireq_opt بعد فترة سماح RCU
- تم النشر
- 15/10/2026
- محدث
- 03/11/2026
- تخصيص CNA
- Linux
- الأدلة المرصودة
- 01/11/2026
CVSS الأساسي
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hمنخفض · الثلاثين يومًا القادمة
- المئوية
- 39.6%
- تاريخ الموديل
- 02/11/2026
EPSS هو تقدير إحصائي، وليس يقينًا أو مقياسًا للتأثير. ادمجها مع CVSS وحالة KEV والتعرض وبيئتك.
ملخص
في نواة Linux، تم إصلاح الثغرة الأمنية التالية: ipv4: تحرير inet_opt وireq_opt بعد فترة سماح RCU. تنقل tcp_v4_syn_recv_sock() ملكية ireq->ireq_opt إلى المقبس الفرعي (newinet->inet_opt) دون نسخه. يمكن لوحدة معالجة مركزية أخرى أن تعالج بشكل متزامن SYN مُعاد إرساله لنفس مقبس الطلب، وترسل SYNACK من tcp_check_req(). تقرأ tcp_v4_send_synack() وinet_csk_route_req() قيمة ireq->ireq_opt تحت rcu_read_lock() فقط، ثم تقرأ ip_build_and_send_pkt() وip_options_build() قيمة opt->optlen مرتين. لاحظ أن مؤقت SYNACK نفسه ليس مشكلة: فهو يحتفظ بمرجع على مقبس الطلب الخاص به، وتستدعي inet_csk_reqsk_queue_drop() الدالة timer_delete_sync() قبل أن يمكن تحرير المقبس الفرعي. منذ الالتزام 079096f103fa ("tcp/dccp: install syn_recv requests into ehash table")، تتم معالجة مقابس الطلب دون الاحتفاظ بقفل المستمع، لذا لا شيء يمنع تحرير المقبس الفرعي بينما لا يزال SYNACK قيد الإنشاء. لا تمتلك مقابس TCP الفرعية SOCK_RCU_FREE، وتحرّر inet_sock_destruct() قيمة inet_opt باستخدام kfree() عادية، مما يؤدي إلى استخدام بعد التحرير (use-after-free) في ip_options_build(). توجد مشكلة مشابهة مع ترحيل مقبس الطلب (net.ipv4.tcp_migrate_req=1، أو برنامج BPF_SK_REUSEPORT_SELECT_OR_MIGRATE). تستنسخ reqsk_timer_handler() مقبس الطلب باستخدام inet_reqsk_clone()، بحيث يتشارك مقبس الطلب القديم ونسخته نفس ireq_opt، ثم تمسح reqsk_migrate_reset() المؤشر في القديم. يمكن لوحدة معالجة مركزية أخرى تحتفظ بمرجع على مقبس الطلب القديم أن تكون لا تزال تستخدم هذه الخيارات (إرسال SYNACK، أو إنشاء مقبس فرعي في tcp_v4_syn_recv_sock()) عند تحرير النسخة، كما تستخدم tcp_v4_reqsk_destructor() أيضًا kfree() عادية. يستخدم القارئون بالفعل RCU، والمسارات الأخرى التي تستبدل inet_opt (do_ip_setsockopt()، cipso_v4_sock_setattr()...) تستخدم بالفعل kfree_rcu(). استخدم kfree_rcu() في inet_sock_destruct() وtcp_v4_reqsk_destructor() أيضًا. لا يتأثر IPv6 بالمشكلة الأولى، لأن tcp_v6_syn_recv_sock() تكرّر الخيارات. تعاني tcp_v6_reqsk_destructor() من نفس مشكلة الترحيل مع ipv6_opt، والذي يتم تعيينه فقط بواسطة CALIPSO. ستتم معالجة ذلك في تصحيح منفصل.
المصادر
مسبار بعيد بالصندوق الأسود يكتشف CVE-2026-98432، وهو ثغرة use-after-free في Linux IPv4 TCP ireq_opt، عبر صدى خيارات SYN-ACK التفاضلي، إضافةً إلى التحقق الساكن من vmlinux.
الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.