CVE-2021-47304
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: tcp: icsk_ca_initialized değerini sıfırlamaması için tcp_init_transfer() düzeltildi Bu commit, tıkanıklık kontrol modülleri için hatalı çift başlatmalara neden olabilen ve init fonksiyonlarında bellek tahsis eden tıkanıklık kontrol modülleri (CDG gibi) için bellek sızıntılarına veya diğer sorunlara yol açabilen bir hatayı (syzkaller tarafından bulunan) düzeltmektedir. syzkaller tarafından oluşturulan hatalı senaryo şuna benzerdir: (1) Bir TCP soketi oluşturulur (2) sendto() aracılığıyla bir TFO bağlantısı başlatılır (3) Soket TCP_SYN_SENT durumundayken, şunları çağıran setsockopt(TCP_CONGESTION) çağrılır: tcp_set_congestion_control() -> tcp_reinit_congestion_control() -> tcp_init_congestion_control() (4) ACK alınır, bağlantı kurulur, tcp_init_transfer() çağrılır, icsk_ca_initialized=0 olarak ayarlanır (önce cc->release() çağrılmadan), tcp_init_congestion_control() tekrar çağrılır. Bu dizide, arada bir cc->release() çağrısı olmadan tcp_init_congestion_control() fonksiyonunun iki kez çağrıldığına dikkat edin. Bu nedenle, init() fonksiyonunda bellek tahsis eden CC modülleri (örneğin CDG) için bir bellek sızıntısı meydana gelebilir. syzkaller aracı, CDG'de böyle bir sızıntıyı tetikleyen bir yeniden üretici bulmayı başarmıştır. Hata, 8919a9b31eb4 ("tcp: Only init congestion control if not initialized already") numaralı commit ile icsk_ca_initialized tanıtıldığında ve tcp_init_transfer() içinde icsk_ca_initialized değeri 0 olarak ayarlandığında ortaya çıkmıştır. Burada, bir işlemin TCP_SYN_SENT durumunda (yani connect() veya TFO open sendmsg() işleminden sonra) setsockopt(TCP_CONGESTION) çağırarak tcp_init_congestion_control() fonksiyonunu çağırabileceği yukarıdaki gibi bir dizi olasılığı gözden kaçırılmıştır. Amaç kullanıcının halihazırda açıkça yaptığı herhangi bir başlatmayı sıfırlamak değildi; sadece bu özel dizinin olasılığı (syzkaller'ın bulduğu) atlanmıştı.
Nasıl düzeltilir
- linux linux_kernel5.10.53, 5.13.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 | 5.10 ≤ v < 5.10.53, 5.11 ≤ v < 5.13.5, 5.14 | 5.10.53, 5.13.5 |
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.