CVE-2024-44991

Orta

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: tcp: tcp_sk_exit_batch funksiyasının eyni vaxtda icrasının qarşısının alınması İki thread-in eyni vaxtda tcp_sk_exit_batch() funksiyasını çağırması mümkündür: biri cleanup_net iş növbəsindən (workqueue), digəri isə yeni netns klonlamağa cəhd edərkən uğursuz olan tapşırıqdan. Sonuncu halda, xəta zamanı geri qaytarma prosesi (error unwinding) 'uğursuz' netns üçün çıxış idarəedicilərini tərs ardıcıllıqla çağırır. tcp_sk_exit_batch() funksiyası tcp_twsk_purge() funksiyasını çağırır. Problem ondadır ki, b099ce2602d8 ("net: Batch inet_twsk_purge") commit-indən etibarən bu funksiya yalnız exit_batch siyahısı vasitəsilə ötürülən netns-i deyil, hər hansı bir məhv olan (dying) netns-dəki twsk-ları seçir. Bu o deməkdir ki, setup_net() funksiyasının xəta zamanı geri qaytarma prosesi, çıxan netns-ə aid timewait soketlərini "oğurlaya" və məhv edə bilər. Bu, netns çıxış işçisinin gözlənilən 1 -> 0 keçidi olmadan aşağıdakını çağırmasına şərait yaradır və nəticədə sistem çökməsi (splat) baş verir: WARN_ON_ONCE(!refcount_dec_and_test(&net->ipv4.tcp_death_row.tw_refcount)); Eyni zamanda, inet_twsk_purge() funksiyasını icra edən xəta geri qaytarma yolu da çökəcək: WARNING: .. at lib/refcount.c:31 refcount_warn_saturate+0x1ed/0x210 ... refcount_dec include/linux/refcount.h:351 [inline] inet_twsk_kill+0x758/0x9c0 net/ipv4/inet_timewait_sock.c:70 inet_twsk_deschedule_put net/ipv4/inet_timewait_sock.c:221 inet_twsk_purge+0x725/0x890 net/ipv4/inet_timewait_sock.c:304 tcp_sk_exit_batch+0x1c/0x170 net/ipv4/tcp_ipv4.c:3522 ops_exit_list+0x128/0x180 net/core/net_namespace.c:178 setup_net+0x714/0xb40 net/core/net_namespace.c:375 copy_net_ns+0x2f0/0x670 net/core/net_namespace.c:508 create_new_namespaces+0x3ea/0xb10 kernel/nsproxy.c:110 ... çünki tw_refcount-un refcount_dec() dəyəri gözlənilmədən 0-a düşdü. Bu, real bir xəta kimi görünmür (heç bir tw soketi itməyib və use-after-free halları müşahidə olunmayıb), lakin debug yoxlamasının səhv tetiklənməsidir. Sərt ardıcıllığı təmin etmək üçün mutex əlavə edildi: tcp_twsk_purge() funksiyasını çağıran tapşırıq, mutex sahibi məhv olan netns-in bütün tw soketlərini silənə qədər digər tapşırığın son _dec_and_test əməliyyatını yerinə yetirməsinə mane olur.

CiddilikOrta
CVSS5.5
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc4 sen 2024
İlk görülmə4 sen 2024

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.1.107, 6.6.48, 6.10.7 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel6.1 ≤ v < 6.1.107, 6.2 ≤ v < 6.6.48, 6.7 ≤ v < 6.10.7, 6.116.1.107, 6.6.48, 6.10.7

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-2024-44991 · Linux Kernel · Dark Radar