CVE-2026-90184
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: null_blk: configfs öznitelik güncellemelerini cihaz kurulumu ile serileştirin NULLB_DEVICE_ATTR() ile oluşturulan öznitelik depolama yöntemleri, NULLB_DEV_FL_CONFIGURED değerini test ederek aktif bir cihazın yapılandırmasını değiştirmeyi reddeder; ancak bu bayrak yalnızca null_add_dev() döndükten sonra nullb_device_power_store() tarafından ayarlanır ve depolama yöntemleri hiçbir kilit kullanmaz. configfs yalnızca aynı açık dosyaya yapılan yazmaları (buffer->mutex) serileştirdiğinden, herhangi bir özniteliğe yapılan yazma işlemi null_add_dev() ile eşzamanlı olarak çalışabilir ve cihaz kullanılırken cihaz yapılandırmasını değiştirebilir. null_add_dev() yapılandırmayı birkaç kez okur; örneğin dev->zoned, kuyruk sınırlarını ayarlamak için bir kez ve bölge kaynaklarını başlatmak için bir kez okunur: CPU0: echo 1 > nullb0/power CPU1: echo 1 > nullb0/zoned nullb_device_power_store() mutex_lock(&lock) null_add_dev() if (dev->zoned) -> false /* no BLK_FEAT_ZONED */ nullb_device_zoned_store() test_bit(FL_CONFIGURED) -> 0 dev->zoned = true blk_mq_alloc_disk() /* queue is not zoned */ if (nullb->dev->zoned) -> true null_register_zoned_dev() blk_revalidate_disk_zones() Ardından, BLK_FEAT_ZONED değeri ayarlanmamış bir kuyruk için blk_revalidate_disk_zones() çağrılır, bu da WARN_ON_ONCE() işlemini tetikler ve cihaz kurulumunun -EIO ile başarısız olmasına neden olur: WARNING: CPU: 2 PID: 322 at block/blk-zoned.c:2357 blk_revalidate_disk_zones+0x4c/0x560 Aynı zaman aralığında dev->zoned değerinin temizlenmesi daha kötüdür: Kuyruk BLK_FEAT_ZONED ile oluşturulur ancak bölge kaynakları asla başlatılmaz, böylece add_disk() bölgesi olmayan bölgeli bir disk için başarılı olur. Ve son dev->zoned testinden sonra gerçekleşen bir depolama işlemi, dev->zones hala NULL iken dev->zoned değerini ayarlı bırakır; bu durum, ilk yazma işleminde null_process_zoned_cmd() tarafından geçersiz referans alınmasına (dereference) yol açar. Bu sorun, hem NULLB_DEV_FL_CONFIGURED testi hem de cihaz yapılandırmasının güncellenmesi etrafında, nullb_device_power_store() fonksiyonunun zaten null_add_dev() ve null_del_dev() boyunca tuttuğu genel kilidin alınmasıyla düzeltilmiştir. submit_queues ve poll_queues geri çağırma işlevleri artık bu kilit tutulurken çağrıldığından, kendi içlerinde yaptıkları kilitleme işlemleri kaldırılmıştır. Depolama yöntemleri, configfs_register_subsystem() döner dönmez, yani null_init() henüz mutex_init(&lock) aşamasına gelmeden önce çalışabildiğinden, kilit ayrıca DEFINE_MUTEX() ile statik olarak başlatılmıştır.
Nasıl düzeltilir
- Linux Linux6352e7ead2d8111802a554eeb94886f5a9894bb9, 7de792b4c48fba02a36a8077032f7d5093c925e5, aed8af338a09a64d63b068a803c4ecfc5701dd4c, 32456a85995579e56c60cc53c357cda75a9d4f7c, d3d35dd045a35991bf6fd13de5f293e6dd7bf3b3, 4e1f23f9c33c156be7e313b40695af5a3a834739 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < 6352e7ead2d8111802a554eeb94886f5a9894bb9, 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < 7de792b4c48fba02a36a8077032f7d5093c925e5, 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < aed8af338a09a64d63b068a803c4ecfc5701dd4c, 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < 32456a85995579e56c60cc53c357cda75a9d4f7c, 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < d3d35dd045a35991bf6fd13de5f293e6dd7bf3b3, 3bf2bd20734e3e6ffda53719a9c10fb3ee9c5ffa ≤ v < 4e1f23f9c33c156be7e313b40695af5a3a834739, 4.14 | 6352e7ead2d8111802a554eeb94886f5a9894bb9, 7de792b4c48fba02a36a8077032f7d5093c925e5, aed8af338a09a64d63b068a803c4ecfc5701dd4c, 32456a85995579e56c60cc53c357cda75a9d4f7c, d3d35dd045a35991bf6fd13de5f293e6dd7bf3b3, 4e1f23f9c33c156be7e313b40695af5a3a834739 |
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.