CVE-2022-49159
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: scsi: qla2xxx: SRB için referans sayacı uygulanması Zaman aşımı işleyicisi ve tamamlanma fonksiyonu arasında bir yarış durumu (race condition) bulunmaktadır. qla2x00_async_iocb_timeout() çalışmaya başladığında, normal yanıt yolu (firmware aracılığıyla?) tarafından kesintiye uğratılabilir. qla24xx_async_gpsc_sp_done() fonksiyonu SRB'yi koşulsuz olarak serbest bırakır. qla2x00_async_iocb_timeout() işlemine geri dönüldüğünde, qla24xx_async_abort_cmd() serbest bırakılmış bir sp->qpair işaretçisine erişecektir: qla2xxx [0000:83:00.0]-2871:0: Async-gpsc timeout - hdl=63d portid=234500 50:06:0e:80:08:77:b6:21. qla2xxx [0000:83:00.0]-2853:0: Async done-gpsc res 0, WWPN 50:06:0e:80:08:77:b6:21 qla2xxx [0000:83:00.0]-2854:0: Async-gpsc OUT WWPN 20:45:00:27:f8:75:33:00 speeds=2c00 speed=0400. qla2xxx [0000:83:00.0]-28d8:0: qla24xx_handle_gpsc_event 50:06:0e:80:08:77:b6:21 DS 7 LS 6 rc 0 login 1|1 rscn 1|0 lid 5 BUG: unable to handle kernel NULL pointer dereference at 0000000000000004 IP: qla24xx_async_abort_cmd+0x1b/0x1c0 [qla2xxx] Bunun belirgin çözümü bir referans sayacı eklemektir. Normal kod yolu ('iyi' durum) için bir referans ve zaman aşımı yolu için bir referans alınır. Normal iyi durum ile zaman aşımı/iptal işleyicisi arasında her zaman bir yarış durumu olduğu için bunu serileştirmek gerekir. Ayrıca, işleyiciler arasında herhangi bir sıra varsayılamaz. Bu yavaş bir yol olduğundan, kilitler aracılığıyla uygun senkronizasyon kullanılabilir. Bir zamanlayıcıyı iptal edebildiğimizde (del_timer 1 döndürdüğünde), zaman aşımı işleyicisi henüz sona ermediği için devam eden herhangi bir hata yönetimi olamayacağını biliriz; bu nedenle referans sayacını güvenle bir azaltabiliriz. Zamanlayıcıyı iptal edemezsek, bir iptal işleyicisinin çalıştığını biliriz. kref_put() çağırmadan önce iptal işleyicilerinde sp->done() fonksiyonunu çağırdığımızdan emin olmalıyız.
Nasıl düzeltilir
- linux linux_kernel5.15.33, 5.16.19, 5.17.2 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 | 5.15 ≤ v < 5.15.33, 5.16 ≤ v < 5.16.19, 5.17 ≤ v < 5.17.2 | 5.15.33, 5.16.19, 5.17.2 |
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.