CVE-2024-44991
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: tcp: tcp_sk_exit_batch fonksiyonunun eşzamanlı yürütülmesini önleme İki iş parçacığının; birinin cleanup_net workqueue üzerinden, diğerinin ise yeni bir netns klonlamada başarısız olan bir görev üzerinden tcp_sk_exit_batch() fonksiyonunu eşzamanlı olarak çağırması mümkündür. İkinci durumda, hata geri sarma işlemi 'başarısız' netns için çıkış yöneticilerini ters sırada çağırır. tcp_sk_exit_batch(), tcp_twsk_purge() fonksiyonunu çağırır. Sorun şudur ki, b099ce2602d8 ("net: Batch inet_twsk_purge") commit'inden beri bu fonksiyon, yalnızca exit_batch listesi aracılığıyla iletilen netns'yi değil, ölmekte olan herhangi bir netns içindeki twsk'ları seçmektedir. Bu durum, setup_net() hata geri sarma işleminin, çıkış yapan netns'ye ait timewait soketlerini "çalabileceği" ve yok edebileceği anlamına gelir. Bu durum, netns çıkış çalışanının beklenen 1 -> 0 geçişi gerçekleşmeden şu satırı çağırmasına neden olur: WARN_ON_ONCE(!refcount_dec_and_test(&net->ipv4.tcp_death_row.tw_refcount)); ve ardından sistem çöker (splat). Aynı zamanda, inet_twsk_purge() çalıştıran hata geri sarma yolu da benzer şekilde çökecektir: 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 ... çünkü tw_refcount değerinin refcount_dec() işlemi beklenmedik şekilde 0'a düşmüştür. Bu durum gerçek bir hata gibi görünmemektedir (hiçbir tw soketi kaybolmamıştır ve serbest bırakıldıktan sonra kullanım -use-after-free- durumu görülmemektedir), ancak hata ayıklama kontrolünün hatalı tetiklenmesidir. Sıkı sıralamayı zorlamak için bir mutex eklenmiştir: tcp_twsk_purge() fonksiyonunu çağıran görev, mutex sahibi ölmekte olan netns'nin tüm tw soketlerini kaldırana kadar diğer görevin nihai _dec_and_test işlemini yapmasını engeller.
Nasıl düzeltilir
- linux linux_kernel6.1.107, 6.6.48, 6.10.7 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.1 ≤ v < 6.1.107, 6.2 ≤ v < 6.6.48, 6.7 ≤ v < 6.10.7, 6.11 | 6.1.107, 6.6.48, 6.10.7 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.