CVE-2024-35910
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: tcp: kernel soketleri için zamanlayıcılar düzgün şekilde sonlandırılıyor İlgili netns söküldükten sonra tcp zamanlayıcılarının tetiklendiğine dair çeşitli syzbot raporları alınmıştır. Şanslı bir şekilde Josef Bacik bu sorunu daha sık tetikleyebilmiş ve iki yıl önce yazdığım bir yamayı test edebilmiştir. TCP soketleri kapatıldığında, zamanlayıcıları 'durdurmak' için inet_csk_clear_xmit_timers() fonksiyonu çağrılır. inet_csk_clear_xmit_timers(), soket kilidinin tutulduğu durumlar da dahil olmak üzere herhangi bir bağlamdan çağrılabilir. Bu nedenle sk_stop_timer() (diğer adıyla del_timer()) kullanılır. Bu durum, devam eden zamanlayıcıların çok daha sonra tamamlanabileceği anlamına gelir. Kullanıcı soketleri için bu durum sorun teşkil etmez çünkü çalışan her zamanlayıcı soket üzerinde bir referans tutar ve kullanıcı soketi de netns üzerinde bir referans tutar. Kernel soketleri için ise, kernel soketleri netns üzerinde referans tutmadığından, zamanlayıcı tamamlanmadan önce netns'nin serbest bırakılması riski vardır. Bu yama, kernel soketi serbest bırakılmadan önce tüm zamanlayıcıların sonlandırıldığından emin olmak için sk_stop_timer_sync() kullanan inet_csk_clear_xmit_timers_sync() fonksiyonunu ekler. Kernel soketlerini kullanan modüller, bunları kendi netns exit() işleyicilerinde kapatır. Ayrıca LOCKDEP desteği sağlamak için sock_not_owned_by_me() yardımcı fonksiyonu eklenmiştir: inet_csk_clear_xmit_timers_sync(), soket kilidi tutulurken çağrılmamalıdır. Gelecekte, bu sorunu yalnızca rds tarafında çözmeye çalışan 3a58f13a881e ("net: rds: acquire refcount on TCP sockets") commit'ini geri almamız oldukça mümkündür. (net/smc/af_smc.c ve net/mptcp/subflow.c benzer kodlara sahiptir) Muhtemelen gelecekte tcp_out_of_resources() ve __tcp_close() içerisindeki check_net() testlerini kaldırabiliriz.
Nasıl düzeltilir
- linux linux_kernel4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5 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 | 4.2 ≤ v < 4.19.312, 4.20 ≤ v < 5.4.274, 5.5 ≤ v < 5.10.215, 5.11 ≤ v < 5.15.154, 5.16 ≤ v < 6.1.85, 6.2 ≤ v < 6.6.26, 6.7 ≤ v < 6.8.5, 6.9 | 4.19.312, 5.4.274, 5.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5 |
| debian debian_linux | 10.0 | — |
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.