CVE-2022-50174
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net: hinic: hinic_get_stats64() fonksiyonundaki çekirdek kilitlenmesinin önlenmesi hinic aygıtı bir bond slave aygıtı olarak kullanıldığında ve ana bond aygıtının aygıt istatistikleri okunduğunda, çekirdek kilitlenebilir. Çekirdek paniği çağrı izi şu şekildedir: Kernel panic - not syncing: softlockup: hung tasks Call trace: native_queued_spin_lock_slowpath+0x1ec/0x31c dev_get_stats+0x60/0xcc dev_seq_printf_stats+0x40/0x120 dev_seq_show+0x1c/0x40 seq_read_iter+0x3c8/0x4dc seq_read+0xe0/0x130 proc_reg_read+0xa8/0xe0 vfs_read+0xb0/0x1d4 ksys_read+0x70/0xfc __arm64_sys_read+0x20/0x30 el0_svc_common+0x88/0x234 do_el0_svc+0x2c/0x90 el0_svc+0x1c/0x30 el0_sync_handler+0xa8/0xb0 el0_sync+0x148/0x180 Ve çekirdek kilitlenmesine fiilen neden olan görevin çağrı izi şöyledir: __switch_to+124 __schedule+548 schedule+72 schedule_timeout+348 __down_common+188 __down+24 down+104 hinic_get_stats64+44 [hinic] dev_get_stats+92 bond_get_stats+172 [bonding] dev_get_stats+92 dev_seq_printf_stats+60 dev_seq_show+24 seq_read_iter+964 seq_read+220 proc_reg_read+164 vfs_read+172 ksys_read+108 __arm64_sys_read+28 el0_svc_common+132 do_el0_svc+40 el0_svc+24 el0_sync_handler+164 el0_sync+324 Bond üzerinden aygıt istatistikleri alınırken çekirdek, bond_get_stats() fonksiyonunu çağıracaktır. Bu işlem önce bond->stats_lock spinlock'ını tutar ve ardından hinic aygıtının istatistiklerini toplamak için hinic_get_stats64() fonksiyonunu çağırır. Ancak hinic_get_stats64(), kritik bölümünü korumak için `down(&nic_dev->mgmt_lock)` fonksiyonunu çağırır; bu durum mevcut görevin zamanlanmasına (schedule) neden olabilir. Sistem yüksek baskı altındaysa görev hemen uyandırılamaz ve bu da sonuçta çekirdek kilitlenme paniğini tetikler. Önceki yama hinic_get_stats64() içerisindeki hinic_dev.tx_stats/rx_stats değerlerini yerel değişkenlerle değiştirdiği için artık kilit ile korunması gereken bir durum kalmamıştır, dolayısıyla sadece down()/up() fonksiyonlarının kaldırılması yeterlidir.
Nasıl düzeltilir
- linux linux_kernel5.10.137, 5.15.61, 5.18.18, 5.19.2 ya da sonraki bir sürüm
- git.kernel.org/stable/c/3ba59bbe4f306bb6ee15753db0a40564c0eb7909
- git.kernel.org/stable/c/693f31dc91568e61047fd2980a8235e856cd9ce8
- git.kernel.org/stable/c/98f9fcdee35add80505b6c73f72de5f750d5c03c
- git.kernel.org/stable/c/e74f3097a9c713ce855cda07713393bcc23a005d
- git.kernel.org/stable/c/fced5bce712122654ec8a20356342698cce104d2
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.14 ≤ v < 5.10.137, 5.11 ≤ v < 5.15.61, 5.16 ≤ v < 5.18.18, 5.19 ≤ v < 5.19.2 | 5.10.137, 5.15.61, 5.18.18, 5.19.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.