CVE-2026-74748 in Linuxالمعلومات

الملخص

بحسب VulDB • 26/08/2026

في نواة Linux، تم حل الثغرة التالية:

netfilter: ipset: إصلاح سباق العد المرجعي بين عملية حذف العناصر القديمة (GC) لـ list:set وعملية التبديل (swap).

تقوم الدالة `__ip_set_put_byindex()` بحل الفهرس إلى مؤشر مجموعة تحت RCU، ثم تأخذ قفل `ip_set_ref_lock` في `__ip_set_put()` لإنقاص قيمة `set->ref`. تحافظ دالة `ip_set_swap()` على نفس القفل أثناء تبديل كل من خانات قائمة ip_set وعددي المرجع للمجموعتين، لذا يمكن أن تتداخل بين فك الإحالة واقتناء القفل، مما يترك المتصل ليقلل من عدد المراجع لمجموعة انتقل عددها المرجعي بالفعل إلى الفهرس الآخر ويؤدي إلى حدوث `BUG_ON(set->ref == 0)`. تصل دالة `list_set_gc()` إلى هذا الوضع عبر مقطع المقاطعة اللين للعداد (timer softirq)، والذي لا تقوم قفلة nfnl بمزامنته مع التبديل: حيث يستدعي عضو قائمة:set الذي انتهت صلاحيته `list_set_del()` -> `ip_set_put_byindex()` بينما تعمل `IPSET_CMD_SWAP` على المجموعات المرجعية.

حل الفهرس وإنقاص العداد تحت قفل `ip_set_ref_lock**، كما تفعل دالة `ip_set_swap()` بالفعل، مع الحفاظ على ارتباط العداد المرجعي بالفهرس بدلاً من الارتباط بمؤشر مجموعة عفا عليه الزمن (stale).

kernel BUG at net/netfilter/ipset/ip_set_core.c:685! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:ip_set_put_byindex (net/netfilter/ipset/ip_set_core.c:870) Call Trace: list_set_del (net/netfilter/ipset/ip_set_list_set.c:159) set_cleanup_entries (net/netfilter/ipset/ip_set_list_set.c:181) list_set_gc (net/netfilter/ipset/ip_set_list_set.c:578) call_timer_fn (kernel/time/timer.c:1748) __run_timers (kernel/time/timer.c:1799 kernel/time/timer.c:2374) run_timer_softirq (kernel/time/timer.c:2405) Kernel panic - not syncing: Fatal exception in interrupt

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

15/08/2026

إفشاء

26/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-395807

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Do you know our Splunk app?

Download it now for free!