CVE-2022-49936
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: USB: core: İç içe geçmiş cihaz sıfırlama çağrılarını önleyin Otomatik çekirdek fuzzing işlemi, usb-storage bileşeninde özyinelemeli bir kilitleme ihlali ortaya çıkarmıştır: ============================================ WARNING: possible recursive locking detected 5.18.0 #3 Not tainted -------------------------------------------- kworker/1:3/1205 is trying to acquire lock: ffff888018638db8 (&us_interface_key[i]){+.+.}-{3:3}, at: usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230 but task is already holding lock: ffff888018638db8 (&us_interface_key[i]){+.+.}-{3:3}, at: usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230 ... stack backtrace: CPU: 1 PID: 1205 Comm: kworker/1:3 Not tainted 5.18.0 #3 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014 Workqueue: usb_hub_wq hub_event Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_deadlock_bug kernel/locking/lockdep.c:2988 [inline] check_deadlock kernel/locking/lockdep.c:3031 [inline] validate_chain kernel/locking/lockdep.c:3816 [inline] __lock_acquire.cold+0x152/0x3ca kernel/locking/lockdep.c:5053 lock_acquire kernel/locking/lockdep.c:5665 [inline] lock_acquire+0x1ab/0x520 kernel/locking/lockdep.c:5630 __mutex_lock_common kernel/locking/mutex.c:603 [inline] __mutex_lock+0x14f/0x1610 kernel/locking/mutex.c:747 usb_stor_pre_reset+0x35/0x40 drivers/usb/storage/usb.c:230 usb_reset_device+0x37d/0x9a0 drivers/usb/core/hub.c:6109 r871xu_dev_remove+0x21a/0x270 drivers/staging/rtl8712/usb_intf.c:622 usb_unbind_interface+0x1bd/0x890 drivers/usb/core/driver.c:458 device_remove drivers/base/dd.c:545 [inline] device_remove+0x11f/0x170 drivers/base/dd.c:537 __device_release_driver drivers/base/dd.c:1222 [inline] device_release_driver_internal+0x1a7/0x2f0 drivers/base/dd.c:1248 usb_driver_release_interface+0x102/0x180 drivers/usb/core/driver.c:627 usb_forced_unbind_intf+0x4d/0xa0 drivers/usb/core/driver.c:1118 usb_reset_device+0x39b/0x9a0 drivers/usb/core/hub.c:6114 Bunun usb-storage kaynaklı bir hata olmadığı, aksine iç içe geçmiş bir cihaz sıfırlama girişimi olduğu anlaşılmıştır. Yani, rtl8712 sürücüsü ilgisiz bir USB sıfırlaması hazırlığı amacıyla kompozit bir cihazdan ayrılırken (bu sürücü pre_reset veya post_reset geri çağırmalarına sahip değildir), ->remove rutini usb_reset_device() fonksiyonunu çağırmış ve böylece bir sıfırlama çağrısını diğerinin içine yerleştirmiştir. Bağlantı kesme işleminin bir parçası olarak sıfırlama gerçekleştirmek, en iyi ihtimalle sorgulanabilir bir uygulamadır. Ancak hata raporu, USB core yapısının iç içe geçmiş sıfırlamalara karşı herhangi bir korumaya sahip olmadığını belirtmektedir. Bir reset_in_progress bayrağı eklenmesi ve bunun test edilmesi, gelecekte bu tür hataların önlenmesini sağlayacaktır.
Nasıl düzeltilir
- linux linux_kernel4.9.328, 4.14.293, 4.19.258, 5.4.213, 5.10.142, 5.15.66, 5.19.8 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 | v < 4.9.328, 4.10 ≤ v < 4.14.293, 4.15 ≤ v < 4.19.258, 4.20 ≤ v < 5.4.213, 5.5 ≤ v < 5.10.142, 5.11 ≤ v < 5.15.66, 5.16 ≤ v < 5.19.8, 6.0 | 4.9.328, 4.14.293, 4.19.258, 5.4.213, 5.10.142, 5.15.66, 5.19.8 |
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.