CVE-2024-26623
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: pds_core: adminq ile ilgili yarış durumlarının önlenmesi pdsc'nin adminq biriminin kullanılmasıyla sonuçlanabilecek birden fazla yol bulunmaktadır. [1] pdsc_adminq_isr ve bunun sonucunda queue_work() üzerinden yürütülen işlem, yani pdsc_work_thread()->pdsc_process_adminq() [2] pdsc_adminq_post() Hatalı PCIe durumu veya hatalı cihaz durumu nedeniyle PCIe sıfırlaması ve/veya fw_down/fw_up döngüsü aracılığıyla cihaz sıfırlandığında, adminq yok edilir ve yeniden oluşturulur. Eğer [1] veya [2] işlemleri adminq zaten yok edildikten sonra gerçekleşirse, bir NULL pointer dereference hatası meydana gelebilir. Bunu düzeltmek için ek durum kontrolleri eklenmiş ve adminq kullanımları için referans sayacı uygulanmıştır. Referans sayacı, birden fazla iş parçacığının [1] veya [2] yoluyla aynı anda adminq'ye erişmeye çalışabilmesi nedeniyle kullanılmıştır. Ek olarak, birden fazla istemci (örneğin pds-vfio-pci) aynı anda [2]'yi kullanıyor olabilir. adminq_refcnt, adminq tahsis edildiğinde ve kullanıma hazır olduğunda 1 olarak başlatılır. adminq kullanıcıları/istemcileri ([1] ve [2]), adminq'yi kullandıklarında refcnt değerini artıracaktır. Sürücü bir fw_down döngüsüne girdiğinde, PDSC_S_FW_DEAD bitini ayarlayacak ve ardından adminq_refcnt değerinin 1'e düşmesini bekleyecektir. Beklemeden önce PDSC_S_FW_DEAD bitinin ayarlanması, daha fazla adminq_refcnt artışını önleyecektir. adminq_refcnt değerinin 1'e düşmesinin beklenmesi, sürücü adminq'yi serbest bırakmadan önce mevcut tüm adminq kullanıcılarının işlemlerini tamamlamasına olanak tanır. adminq_refcnt 1'e ulaştığında, sürücü adminq'nin silindiğini ve kullanılamayacağını belirtmek için refcnt değerini temizler. fw_up döngüsünde sürücü, adminq'nin tekrar kullanılabilmesine izin vermek için adminq_refcnt değerini yeniden 1 olarak başlatacaktır.
Nasıl düzeltilir
- linux linux_kernel6.6.16, 6.7.4 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.4 ≤ v < 6.6.16, 6.7 ≤ v < 6.7.4, 6.8 | 6.6.16, 6.7.4 |
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.