CVE-2023-52792
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: cxl/region: cxl_region_setup_targets() başarısız olduğunda temizleme işlemi yapmaya çalışmayın 5e42bcbc3fef numaralı commit ("cxl/region: decrement ->nr_targets on error in cxl_region_attach()"), cxl_region_setup_targets() başarısız olduğunda sadece ->nr_targets değerini azaltarak, ->nr_targets 16'yı aştığında meydana gelen 'eiw' başlatma hatalarını önlemeye çalışmıştır. 86987c766276 numaralı commit ("cxl/region: Cleanup target list on attach error"), bu temizleme işlemini cxled->pos ve p->targets[pos] değerlerini de temizleyecek şekilde genişletmiştir. Başlatma hatası tesadüfen, 5e42bcbc3fef'ten birkaç gün sonra birleştirilen 8d4285425714 numaralı commit ("cxl/region: Fix port setup uninitialized variable warnings") ile ayrı olarak düzeltilmiştir. Ancak şu anda, cxl_region_setup_targets() başarısız olduğundaki orijinal temizleme işlemi, uç nokta (endpoint) ve anahtar çözücü (switch decoder) kaynaklarının yeniden kullanılmasını engellemektedir: 1) Temizleme işlemi, çözücünün bölgesini (decoder's region) NULL olarak ayarlamaz; bu da gelecekteki dpa_size_store() çağrılarının -EBUSY döndürmesine neden olur. 2) Çözücü uygun şekilde serbest bırakılmaz; bu da üst akış anahtarı (upstream switch) ile ilişkili gelecekteki commit hatalarına yol açar. Başlatma hataları ayrı olarak düzeltildiğinden, bu durum için uygun temizleme yöntemi doğrudan geri dönmektir. Böylece, bu hedefle ilişkili kaynaklar, başarısız olan bölge silindiğinde normal şekilde temizlenir. Hata durumundaki ->nr_targets azaltma işlemi aynı zamanda bir p->targets[] dizi taşmasının (array overflow) önlenmesine yardımcı oluyordu, bu nedenle söz konusu taşmayı önlemek için yeni bir kontrol eklenmiştir. 2 switch * 2 endpoint topolojisi için geçersiz bir bölge oluşturulmaya çalışılarak ve ardından geçerli bir bölge oluşturularak test edilmiştir.
Nasıl düzeltilir
- linux linux_kernel6.1.64, 6.5.13, 6.6.3 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.0 ≤ v < 6.1.64, 6.2 ≤ v < 6.5.13, 6.6 ≤ v < 6.6.3 | 6.1.64, 6.5.13, 6.6.3 |
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.