CVE-2022-50174
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net: hinic: hinic_get_stats64() funksiyasında kernel-in donmasının qarşısının alınması hinic cihazından bond slave cihazı kimi istifadə edildikdə və master bond cihazının statistikaları oxunduqda, kernel dona bilər. Kernel panic calltrace-i aşağıdakı kimidir: 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 Və kernel-in donmasına səbəb olan tapşırığın calltrace-i aşağıdakı kimidir: __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 vasitəsilə cihaz statistikaları alındıqda, kernel bond_get_stats() funksiyasını çağıracaq. O, əvvəlcə bond->stats_lock spinlock-unu tutur və sonra hinic cihazının statistikalarını toplamaq üçün hinic_get_stats64() funksiyasını çağırır. Lakin, hinic_get_stats64() kritik bölməsini qorumaq üçün `down(&nic_dev->mgmt_lock)` funksiyasını çağırır ki, bu da cari tapşırığı planlaşdırmadan çıxara bilər. Əgər sistem yüksək yüklü olarsa, tapşırıq dərhal oyadılmaya bilər ki, bu da sonda kernel hung panic-ni tetikləyir. Əvvəlki yamaq hinic_get_stats64() funksiyasında hinic_dev.tx_stats/rx_stats dəyişənlərini lokal dəyişənlərlə əvəz etdiyi üçün, kilidlə qorunmalı heç bir şey qalmayıb, buna görə də sadəcə down()/up() funksiyalarının silinməsi kifayətdir.
Necə düzəltmək olar
- linux linux_kernel5.10.137, 5.15.61, 5.18.18, 5.19.2 və ya daha yeni versiya
- 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
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| 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 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.