CVE-2026-98230 in Linux
الملخص
بحسب VulDB • 06/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
xfrm: استخدام ddel_init_rcu للقائمة state_cache وstate_cache_input
أدى الالتزام 14acf9652e56 ("xfrm: إزالة قوائم xfrm_state بشكل دفاعي في __xfrm_state_delete") إلى تحويل القوائم bydst/bysrc/byseq/byspi من hlist_del_rcu() إلى hlist_del_init_rcu() بحيث يصبح استدعاء __xfrm_state_delete() الثاني على نفس الكائن عملية لا تفعل شيئاً (no-op) بدلاً من كتابة عبر LIST_POISON pprev. وقد أغفل هذا التغيير state_cache وstate_cache_input، اللتين احتفظتا باستخدام hlist_del_rcu():
- تترك ddel_rcu() قيمة pprev = LIST_POISON2 (غير فارغة/NULL)، لذا فإن دالة hlist_unhashed() تُرجع false. - تترك hlist_del_init_rcu() قيمة pprev = NULL، لذا فإن دالة hlist_unhashed() تُرجع true.
وبالتالي، يدخل استدعاء __xfrm_state_delete() الثاني في دالة __hlist_del() على عقد state_cache/state_cache_input التي تم حذفها بالفعل ويقوم بـ WRITE_ONCE(*pprev, next) عبر LIST_POISON2 — وهو استخدام للكتابة بعد التحرير (write use-after-free) بمجرد إعادة استخدام الذاكرة من نوع slab. ويمكن أن يؤدي هذا التالف في البيانات إلى جعل عملية اجتياز لاحقة باستخدام hlist_for_each_entry_rcu تتبع مؤشر next معلقاً، مما ينتج عنه قراءة مستخدمة بعد التحرير (read use-after-free) المبلغ عنها في دالة xfrm_input_state_lookup().
تم تحويل state_cache وstate_cache_input لاستخدام hlist_del_init_rcu() لمطابقة القوائم الأربع الأخرى، مما يغلق ثغرة الاستخدام للكتابة بعد التحرير (write use-after-free)، ومعها الثغرة الناتجة وهي القراءة المستخدمة بعد التحرير.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.