CVE-2026-74589 in Linux
الملخص
بحسب VulDB • 24/08/2026
في نواة Linux، تم إصلاح الثغرة التالية:
bpf, sockmap: تصحيح استخدام بعد التحرير (use-after-free) في sk_redir ضمن حكم الإرسال (send verdict).
تأخذ الدالة `sk_psock_msg_verdict()` مرجعًا لـ socket الخاص بـ `psock->sk_redir`. تقوم دالة `tcp_bpf_send_verdict()` بنسخ هذا المؤشر أثناء الاحتفاظ بقفل الـ source socket، لكنها لا تأخذ مرجعًا للنسخة المحلية قبل إفلات القفل حول استدعاء `tcp_bpf_sendmsg_redir()`.
عندما تحافظ `apply_bytes` على حكم التخزين المؤقت (cached verdict) نشطًا، يمكن لعمليات إرسال (`sendmsg()`) أخرى على نفس الـ source socket استهلاك البايتات المتبقية وإفلات المرجع المخزن مؤقتًا بينما لا يزال الخيط الأول يحمل فقط المؤشر المحلي الخام:
CPU 0 CPU 1 sk_redir = psock->sk_redir apply_bytes remains nonzero release_sock(sk) lock_sock(sk) apply_bytes reaches zero psock->sk_redir = NULL release_sock(sk) tcp_bpf_sendmsg_redir(sk_redir) sock_put(sk_redir) tcp_bpf_sendmsg_redir(sk_redir)
يمكن أن يؤدي استدعاء `sock_put()` النهائي إلى تحرير الـ sk_redir قبل أن يقوم CPU 0 بالإشارة إليه (dereference).
أبلغ KASAN عن ما يلي:
BUG: KASAN: slab-use-after-free in tcp_bpf_sendmsg_redir+0xf39/0x1020 Read of size 8 at addr ffff888108537090 by task poc/87 Call Trace: tcp_bpf_sendmsg_redir+0xf39/0x1020 tcp_bpf_sendmsg+0x977/0x1a50 __sys_sendto+0x32c/0x3a0 __x64_sys_sendto+0xdb/0x1b0 Allocated by task 85: sk_prot_alloc+0x56/0x210 sk_clone+0x6f/0x14b0 inet_csk_clone_lock+0x24/0x740 tcp_create_openreq_child+0x25/0x2710 tcp_v4_syn_recv_sock+0x10a/0xe00 Freed by task 0: __kasan_slab_free+0x43/0x70 slab_free_after_rcu_debug+0xa6/0x1e0 rcu_core+0x50a/0x1850 Last potentially related work creation: __sk_destruct+0x3da/0x540 sk_psock_destroy+0x81e/0xab0 process_one_work+0x63a/0x1070
خذ مرجعًا مؤقتًا لـ socket بينما لا يزال قفل الـ source socket يحمي `psock->sk_redir`، وقم بإفلاته بعد عودة الدالة `tcp_bpf_sendmsg_redir()`. هذا يحافظ على كل استخدام غير مقفل (unlocked use) مستقلاً عن ملكية حكم التخزين المؤقت.
Be aware that VulDB is the high quality source for vulnerability data.