CVE-2026-97997
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: virtio_ring: başarısız bir packed add sonrası güncelliğini yitirmiş tanımlayıcı bayraklarının düzeltilmesi Bir packed ring yapısında AVAIL ve USED bitleri tanımlayıcının kendisinde yer alır, dolayısıyla bunları yazmak o tanımlayıcıyı kullanılabilir hale getirir. Bu bit kombinasyonları, bir sarım sayacı (wrap counter) tarafından takip edilen her ring turunda anlam değiştirir; bu nedenle bir tanımlayıcıyı geçersiz kılmak veya doğrulamak, her iki bitin tersine çevrilmesi anlamına gelir. 1ce9e6055fa0 ("virtio_ring: introduce packed ring support") commit'i ile virtqueue_add_packed(), zinciri eşlerken zincirin her tanımlayıcısını kullanılabilir hale getirmekte ve başlığı (head) en son yazmaktadır. Cihaz, ring'i sırayla tüketir ve henüz kullanılabilir olmayan bir başlıkta durur, böylece geri kalanına asla ulaşmaz. vring_map_one_sg() işlemi yarıda kaldığında, unmap_release segmentlerin eşlemesini kaldırır ve avail_used_flags değerlerini geri yükler ancak ring içinde yazdığı tanımlayıcılar AVAIL ve USED bitleri işaretli olarak kalır. Artık cihazın bu güncelliğini yitirmiş girişleri tüketmesini engelleyen tek girdi başlıktır. Örneğin, ring şu an şöyle görünecektir: Z - önceki önceki komut A - önceki komut B - iptal edilen komut C - mevcut komut [A1 DONE] [A2 DONE] <C1 EMPTY> [B2] [B3] [Z1 DONE] Sürücü şimdi C komutunu yürütmeye çalıştığında, bir sonraki ekleme işlemi B ile aynı başlıkta başlar. Eğer C, B'den daha az tanımlayıcı kapsıyorsa, AVAIL ve USED bitleri hala yerinde olduğu için bir bitiş belirteci oluşmaz. Bu da cihazın bu güncelliğini yitirmiş girişleri (B2/B3) başka bir komut girişi olarak yorumlamaya başlayacağı ve bunun sonucunda kuyruğun bloke olacağı anlamına gelir. Bu durum tipik olarak bellek baskısı altındaki swiotlb konfigürasyonlarında meydana gelir; çünkü vring_map_one_sg() daha büyük I/O isteklerinde hata verebilir ve bu da komutların iptal edilmesine yol açar. Bu bayrakların geride bırakılmasını önlemek için genel olarak iki yol vardır: 1) Bu bayrakları da zincir tamamlanana kadar ertelemek. 2) Bu bayrakları önceki sarım sayacı için yeniden yazmak. Her iki packed add yolu için ikinci seçenek uygulanmıştır. İlk seçenek, her başarılı eklemede zinciri ikinci kez taramaktadır. İkinci seçenek ise herhangi bir ekleme başarısız olduğunda eklenen tüm tanımlayıcıları geçersiz kılar. Bu yamanın uygulanmasıyla birlikte, bir packed virtqueue, başarısız bir ekleme işleminden sonra da istekleri tamamlamaya devam eder.
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralık belirtilmemiş | — |
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.