CVE-2026-43054
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: scsi: target: tcm_loop: target_reset işleyicisindeki komutların boşaltılması tcm_loop_target_reset(), SCSI EH sözleşmesini ihlal etmektedir: devam eden hiçbir komutu boşaltmadan SUCCESS döndürür. SCSI EH dokümantasyonu (scsi_eh.rst), bir sıfırlama işleyicisi SUCCESS döndürdüğünde, sürücünün alt katmanlara "zaman aşımına uğramış scmd'leri unutmalarını" söylemiş olması ve yeni komutlar için hazır olması gerektiğini belirtir. Diğer tüm SCSI LLD'ler (virtio_scsi, mpt3sas, ipr, scsi_debug, mpi3mr), SUCCESS döndürmeden önce bekleyen komutları boşaltarak veya tamamlayarak bunu uygular. tcm_loop_target_reset() işlemi boşaltma yapmadığı için, hedef çekirdek eski se_cmd için hala kuyruğa alınmış asenkron tamamlama işlemlerine sahipken, SCSI EH kurtarma komutları (örneğin TUR) için devam eden scsi_cmnd yapılarını yeniden kullanır. queuecommand içerisindeki memset; se_lun ve lun_ref_active değerlerini sıfırlar, bu da transport_lun_remove_cmd()'nin percpu_ref_put() işlemini atlamasına neden olur. Sızan LUN referansı, transport_clear_lun_ref()'nin tamamlanmasını engeller ve configfs LUN bağlantı kesme işleminin sonsuza kadar D durumunda asılı kalmasına yol açar: INFO: task rm:264 blocked for more than 122 seconds. rm D 0 264 258 0x00004000 Call Trace: __schedule+0x3d0/0x8e0 schedule+0x36/0xf0 transport_clear_lun_ref+0x78/0x90 [target_core_mod] core_tpg_remove_lun+0x28/0xb0 [target_core_mod] target_fabric_port_unlink+0x50/0x60 [target_core_mod] configfs_unlink+0x156/0x1f0 [configfs] vfs_unlink+0x109/0x290 do_unlinkat+0x1d5/0x2d0 Bu sorun, tcm_loop_target_reset()'in gerçekten komutları boşaltması sağlanarak düzeltilmiştir: 1. Hedef çekirdeğin bildiği tüm komutları (henüz CMD_T_COMPLETE olmayanlar) boşaltmak için tcm_loop_issue_tmr() aracılığıyla TMR_LUN_RESET yayınlanır. 2. Başlatılan tüm istekleri yinelemek için blk_mq_tagset_busy_iter() kullanılır ve her se_cmd üzerinde flush_work() çalıştırılır — bu işlem, TMR öncesinde zaten CMD_T_COMPLETE olarak işaretlenmiş olan (ve TMR tarafından __target_check_io_state() ile atlanan) komutlar için ertelenmiş tamamlama işlemlerini boşaltır. Bu, sıfırlama sırasında bekleyen komutları boşaltmak için mpi3mr, scsi_debug ve libsas tarafından kullanılan desenle aynıdır.
Nasıl düzeltilir
- linux linux_kernel5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.22, 6.19.12 ya da sonraki bir sürüm
- git.kernel.org/stable/c/05ac3754467363558a0a54ae4bb7c89b2c9574cf
- git.kernel.org/stable/c/103f79e4949513247d763c6e7f3cbbf62017afdf
- git.kernel.org/stable/c/1333eee56cdf3f0cf67c6ab4114c2c9e0a952026
- git.kernel.org/stable/c/15f5241d5a52364a7e7867b49128b0442dbcad9d
- git.kernel.org/stable/c/757c43c692294cdfad31390accc0e90429b2ef8a
- git.kernel.org/stable/c/7cbd69aaa507b1245240a28022bf5da0f07c68d9
- git.kernel.org/stable/c/a836054ea81014117ec6b73529a21626a9e1f829
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 5.13 ≤ v < 5.15.203, 5.16 ≤ v < 6.1.168, 6.2 ≤ v < 6.6.134, 6.7 ≤ v < 6.12.81, 6.13 ≤ v < 6.18.22, 6.19 ≤ v < 6.19.12, 7.0 | 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.22, 6.19.12 |
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.