CVE-2025-38154

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: bpf, sockmap: Göndərmə zamanı azad edilmiş sk_socket istifadəsindən qaçınmaq Backlog axınına (thread) sk->sk_socket kilidlənmir və ya ona istinad edilmir, skb_send_sock() çağırışı zamanı isə sk_socket-in azad edilməsi ilə bağlı yarış şəraiti (race condition) yaranır. Bütün soket növləri (tcp/udp/unix/vsock) bundan təsirlənəcəkdir. Yarış şəraitləri: ''' CPU0 CPU1 backlog::skb_send_sock sendmsg_unlocked sock_sendmsg sock_sendmsg_nosec close(fd): ... ops->release() -> sock_map_close() sk_socket->ops = NULL free(socket) sock->ops->sendmsg ^ burada panic baş verir ''' sock_map_close() icra edildikdən sonra psock-un istinadı 0 olur. ''' void sock_map_close() { ... if (likely(psock)) { ... // !! burada biz psock-u silirik və psock-un istinadı 0 olur sock_map_remove_links(sk, psock) psock = sk_psock_get(sk); if (unlikely(!psock)) goto no_psock; <=== İdarəetmə goto vasitəsilə bura tullanır ... cancel_delayed_work_sync(&psock->work); <=== icra olunmur sk_psock_put(sk, psock); ... } ''' Əgər psock saxlanılıbsa, sock_map_close()-da artıq iş növbəsinin (workqueue) tamamlanmasını gözlədiyimiz faktə əsasən, yarış şəraitlərinin qarşısını almaq üçün sadəcə psock istinad sayını artırırıq. Bu yamama (patch) ilə, əgər backlog axını işləyirsə, sock_map_close() backlog axınının tamamlanmasını gözləyəcək və bütün gözlənilən işləri ləğv edəcəkdir. Əgər heç bir backlog işləmirsə, o vaxta qədər başlamamış hər hansı gözlənilən iş sk_psock_get() tərəfindən çağırıldıqda uğursuz olacaq, çünki psock istinad sayı sıfırlanmışdır və sk_psock_drop() cancel_delayed_work_sync() vasitəsilə bütün tapşırıqları ləğv edəcəkdir. Xülasə etsək, backlog axını və close() axını arasında koordinasiya yaratmaq üçün sinxronizasiya tələb olunur. Tutduğum panic: ''' Workqueue: events sk_psock_backlog RIP: 0010:sock_sendmsg+0x21d/0x440 RAX: 0000000000000000 RBX: ffffc9000521fad8 RCX: 0000000000000001 ... Call Trace: <TASK> ? die_addr+0x40/0xa0 ? exc_general_protection+0x14c/0x230 ? asm_exc_general_protection+0x26/0x30 ? sock_sendmsg+0x21d/0x440 ? sock_sendmsg+0x3e0/0x440 ? __pfx_sock_sendmsg+0x10/0x10 __skb_send_sock+0x543/0xb70 sk_psock_backlog+0x247/0xb80 ... '''

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc3 iyl 2025
İlk görülmə3 iyl 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.15.186, 6.1.142, 6.6.94, 6.10, 6.12.34, 6.15.3 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.15.162 ≤ v < 5.15.186, 6.1.95 ≤ v < 6.1.142, 6.6.35 ≤ v < 6.6.94, 6.9.6 ≤ v < 6.10, 6.10.1 ≤ v < 6.12.34, 6.13 ≤ v < 6.15.3, 6.105.15.186, 6.1.142, 6.6.94, 6.10, 6.12.34, 6.15.3
debian debian_linux11.0—

Versiyanızı yoxlayın

Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.

Intelligence 360 paketində

Attack Surface Management

Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.