CVE-2025-38236

Yüksək

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: af_unix: Ardıcıl istifadə edilmiş OOB skb-lər saxlanılmasın. Jann Horn unix_stream_read_generic() funksiyasında use-after-free xətasını bildirmişdir. Problem aşağıdakı ardıcıllıqla təkrar istehsal olunur: $ python3 from socket import * s1, s2 = socketpair(AF_UNIX, SOCK_STREAM) s1.send(b'x', MSG_OOB) s2.recv(1, MSG_OOB) # istifadə edilmiş bir OOB skb qalır s1.send(b'y', MSG_OOB) s2.recv(1, MSG_OOB) # istifadə edilmiş bir OOB skb qalır s1.send(b'z', MSG_OOB) s2.recv(1) # 'z' qeyri-qanuni şəkildə oxunur s2.recv(1, MSG_OOB) # 'z' skb-sinə müraciət edilir (use-after-free) İstifadəçi OOB məlumatlarını oxusa belə, məlumatları saxlayan skb, OOB sərhədini qeyd etmək və növbəti recv() çağırışını dayandırmaq üçün recv növbəsində qalır. Yuxarıdakı ssenaridə sonuncu send() çağırışından sonra, sk2-nin recv növbəsində 2 öncədən istifadə edilmiş OOB skb və 1 real OOB skb olur. Sonra, MSG_OOB olmadan növbəti recv() zamanı aşağıdakılar baş verir: 1. unix_stream_read_generic() birinci istifadə edilmiş OOB skb-ni yoxlayır (peek) 2. manage_oob() növbəti istifadə edilmiş OOB skb-ni qaytarır 3. unix_stream_read_generic() hələ istifadə edilməmiş növbəti OOB skb-ni götürür 4. unix_stream_read_generic() OOB skb-ni oxuyur və azad edir Və sonuncu recv(MSG_OOB) KASAN xətasını tetikləyir. Yuxarıdakı 3-cü bənd SO_PEEK_OFF kodu səbəbindən baş verir; bu kod unix_skb_len(skb)-nin 0 olmasını gözləmir, lakin həmin istifadə edilmiş OOB skb-lər üçün bu doğrudur. while (skip >= unix_skb_len(skb)) { skip -= unix_skb_len(skb); skb = skb_peek_next(skb, &sk->sk_receive_queue); ... } Bu use-after-free xətasına əlavə olaraq, ardıcıl istifadə edilmiş OOB skb-lər olduqda ioctl(SIOCATMARK) funksiyasının düzgün işləməməsi kimi digər bir problem də mövcuddur. Beləliklə, bu vəziyyətdən heç bir fayda gəlmir. Ardıcıl istifadə edilmiş OOB skb-lər üçün dövr (loop) tətbiq edərək manage_oob(), ioctl() idarəetməsini və növbəti ECONNRESET düzəlişini mürəkkəbləşdirmək əvəzinə, gəlin belə ardıcıl OOB-ləri lazımsız yerə saxlamayaq. İndi, unix_stream_recv_urg() funksiyasında OOB skb qəbul edilərkən, əgər onun əvvəlki skb-si istifadə edilmiş OOB skb-sidirsə, o azad edilir.

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

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel5.15.194, 6.1.143, 6.6.96, 6.12.36, 6.15.5 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel5.15 ≤ v < 5.15.194, 5.16 ≤ v < 6.1.143, 6.2 ≤ v < 6.6.96, 6.7 ≤ v < 6.12.36, 6.13 ≤ v < 6.15.5, 6.165.15.194, 6.1.143, 6.6.96, 6.12.36, 6.15.5
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.

CVE-2025-38236 · Linux Kernel · Dark Radar