CVE-2024-35981
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: virtio_net: Desteklenmiyorsa RSS anahtarını göndermeyin virtio_net içerisinde RSS seçenekleri ayarlanırken tüm makineyi çökertebilen ve çekirdeği sonsuz döngüye sokan bir hata bulunmaktadır. virtionet kullanan herhangi bir QEMU sanal makinesinde aşağıdaki komutun çalıştırılması bu sorunu yeniden oluşturacaktır: # ethtool -X eth0 hfunc toeplitz Sorunun oluşma süreci şöyledir: 1) ethtool_set_rxfh(), virtnet_set_rxfh() fonksiyonunu çağırır. 2) virtnet_set_rxfh(), virtnet_commit_rss_command() fonksiyonunu çağırır. 3) virtnet_commit_rss_command(), rss scatter-gather için 4 giriş doldurur. 4) Yukarıdaki komutta bir anahtar bulunmadığından, rss_key_size == 0 olduğu için son scatter-gather girişi sıfırlanır. sg_buf_size = vi->rss_key_size; 5) Bu tampon bellek qemu'ya iletilir ancak qemu sıfır uzunluktaki bir tampon bellekten memnun kalmaz ve virtqueue_map_desc() (QEMU fonksiyonu) içerisinde şunu yapar: if (!sz) { virtio_error(vdev, "virtio: zero sized buffers are not allowed"); 6) virtio_error() (yine bir QEMU fonksiyonu), cihazı bozuk (broken) olarak işaretler: vdev->broken = true; 7) Qemu işlemi durdurur ve bu hatalı çekirdek durumuna yanıt vermez. 8) Çekirdek, yanıtın geri gelmesini bekler (virtnet_send_command() fonksiyonu). 9) Çekirdek şu işlemi yaparak beklemeye devam eder: while (!virtqueue_get_buf(vi->cvq, &tmp) && !virtqueue_is_broken(vi->cvq)) cpu_relax(); 10) Yukarıdaki koşulların hiçbiri doğru olmadığı için çekirdek burada sonsuza kadar döngüye girer. virtqueue_is_broken() fonksiyonunun qemu tarafındaki `vdev->broken` değerini kontrol etmediği göz önüne alındığında, virtio'nun QEMU tarafında bozulduğunu asla fark etmez. Özellik cihazda mevcut değilse RSS komutlarının gönderilmemesi sağlanarak sorun giderilmiştir.
Nasıl düzeltilir
- linux linux_kernel6.1.90, 6.6.29, 6.8.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 | 5.18 ≤ v < 6.1.90, 6.2 ≤ v < 6.6.29, 6.7 ≤ v < 6.8.7, 6.9 | 6.1.90, 6.6.29, 6.8.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.