CVE-2023-53785
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mt76: mt7921: SDIO başlıkları için yeterli boş alan (headroom) olduğu varsayılmamalıdır mt7921_usb_sdio_tx_prepare_skb() fonksiyonu, her ikisi de iletilen skb içinde yeterli boş alan olacağını körü körüne varsayan mt7921_usb_sdio_write_txwi() ve mt7921_skb_add_usb_sdio_hdr() fonksiyonlarını çağırır. Bu varsayım, skb mt7921 netdev üzerinden iletim için net çekirdeğinde tahsis edildiğinde genellikle karşılanır (ancak bu bile yalnızca bir optimizasyondur ve kesin olarak garanti edilmez); fakat skb başka bir netdev'in alma yolundan kaynaklanıp bridge katmanı gibi yapılarla mt7921'e aktarıldığında bu varsayım bazen karşılanmaz. Bir skb başına körü körüne bayt eklemek her zaman hatalıdır. Bu commit, skb üzerine en az MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE bayt eklenebildiğinden emin olmak için mt7921_usb_sdio_tx_prepare_skb() içerisindeki mt7921_usb_sdio_write_txwi() çağrısından önce bir skb_cow_head() çağrısı ekler. Bu düzeltme olmadan; dahili RTL8169 PCI Ethernet adaptörü kullanan Intel Atom tabanlı bir x86 sistemde veya dahili SMSC9512 USB Ethernet adaptörü kullanan ARM tabanlı bir Raspberry Pi 1 üzerinde, MT7921AU tabanlı bir USB 802.11ax arayüzünü bir Ethernet arayüzüyle köprüleyerek kolayca kernel panic durumuna neden olunabilir. Paniklerin her sistem konfigürasyonunda meydana gelmediği, yalnızca alıcı netdev'in aldığı skb'lerde bıraktığı boş alanın mt7921'in SDIO başlıkları için ihtiyaç duyduğundan daha az olması durumunda gerçekleştiği unutulmamalıdır. Kernel 6.1.24+ çalışan Raspberry Pi OS Lite 2023-02-21 üzerindeki bu paniğe ait örnek yığın izlemesi şöyledir [1]: skb_panic from skb_push+0x44/0x48 skb_push from mt7921_usb_sdio_tx_prepare_skb+0xd4/0x190 [mt7921_common] mt7921_usb_sdio_tx_prepare_skb [mt7921_common] from mt76u_tx_queue_skb+0x94/0x1d0 [mt76_usb] mt76u_tx_queue_skb [mt76_usb] from __mt76_tx_queue_skb+0x4c/0xc8 [mt76] __mt76_tx_queue_skb [mt76] from mt76_txq_schedule.part.0+0x13c/0x398 [mt76] mt76_txq_schedule.part.0 [mt76] from mt76_txq_schedule_all+0x24/0x30 [mt76] mt76_txq_schedule_all [mt76] from mt7921_tx_worker+0x58/0xf4 [mt7921_common] mt7921_tx_worker [mt7921_common] from __mt76_worker_fn+0x9c/0xec [mt76] __mt76_worker_fn [mt76] from kthread+0xbc/0xe0 kthread from ret_from_fork+0x14/0x34 Bu düzeltmeden sonra, mt7921 arayüzünün köprülenmesi daha önce sorun çıkaran her iki sistemde de sorunsuz çalışmaktadır. [1] https://github.com/raspberrypi/firmware/tree/5c276f55a4b21345cd4d6200a504ee991851ff7a
Nasıl düzeltilir
- Linux Linux5c8bbb79c7cbca65534badf360f3b1145759c7bc, 414c0c04703423b78bc9dea1aa6493334dc61f6e, 98c4d0abf5c478db1ad126ff0c187dbb84c0803c ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | e0f9fdda81bd32371ddac9222487e612027d8de2 ≤ v < 5c8bbb79c7cbca65534badf360f3b1145759c7bc, e0f9fdda81bd32371ddac9222487e612027d8de2 ≤ v < 414c0c04703423b78bc9dea1aa6493334dc61f6e, e0f9fdda81bd32371ddac9222487e612027d8de2 ≤ v < 98c4d0abf5c478db1ad126ff0c187dbb84c0803c, 5.12 | 5c8bbb79c7cbca65534badf360f3b1145759c7bc, 414c0c04703423b78bc9dea1aa6493334dc61f6e, 98c4d0abf5c478db1ad126ff0c187dbb84c0803c |
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.