CVE-2023-53667

Orta

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: net: cdc_ncm: dwNtbOutMaxSize değerinin çok düşük olması durumu ele alındı Şu anda cdc_ncm_check_tx_max() içinde, dwNtbOutMaxSize hesaplanan "min" değerinden düşük ancak sıfırdan büyükse, mantık tx_max değerini dwNtbOutMaxSize olarak ayarlar. Bu değer daha sonra tüm verilerin işlendiği cdc_ncm_fill_tx_frame() içinde yeni bir SKB ayırmak için kullanılır. dwNtbOutMaxSize değerinin küçük olması durumunda, alloc_skb(dwNtbOutMaxSize, GFP_ATOMIC) sırasında ayrılan bellek, boyutun ayırma anında hizalanma biçimi nedeniyle aynı boyuta sahip olur: size = SKB_DATA_ALIGN(size); size += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); Böylece 2be6d4d16a084 ("net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero") commit'i ile gidermeye çalıştığımız aynı hataya düşeriz. dwNtbOutMaxSize değerinin düşük olması şu anda bir soruna yol açmamaktadır çünkü alloc_skb() anında yalnızca SKB başlıkları için gereken miktardan (320b) daha fazla bellek (512b) ayrılır ve CDC verileri (172b) için bir miktar alan (512b - 320b = 192b) kalır. Ancak, SKB başlık yapılarından birine, örneğin 'struct skb_shared_info' yapısına daha fazla öğe eklenirse (örneğin 3 x u64 = [24b]), bu yapının özgün boyutu (320b [320b hizalı]) daha büyük bir değere (344b [384b hizalı]) çıkar ve birden CDC verileri (172b) artık yedek SKB veri alanına (512b - 384b = 128b) sığmaz. Sonuç olarak SKB sınır denetimi semantiği başarısız olur ve panik oluşur: skbuff: skb_over_panic: text:ffffffff831f755b len:184 put:172 head:ffff88811f1c6c00 data:ffff88811f1c6c00 tail:0xb8 end:0x80 dev:<NULL> ------------[ cut here ]------------ kernel BUG at net/core/skbuff.c:113! invalid opcode: 0000 [#1] PREEMPT SMP KASAN CPU: 0 PID: 57 Comm: kworker/0:2 Not tainted 5.15.106-syzkaller-00249-g19c0ed55a470 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 04/14/2023 Workqueue: mld mld_ifc_work RIP: 0010:skb_panic net/core/skbuff.c:113 [inline] RIP: 0010:skb_over_panic+0x14c/0x150 net/core/skbuff.c:118 [snip] Call Trace: <TASK> skb_put+0x151/0x210 net/core/skbuff.c:2047 skb_put_zero include/linux/skbuff.h:2422 [inline] cdc_ncm_ndp16 drivers/net/usb/cdc_ncm.c:1131 [inline] cdc_ncm_fill_tx_frame+0x11ab/0x3da0 drivers/net/usb/cdc_ncm.c:1308 cdc_ncm_tx_fixup+0xa3/0x100 dwNtbOutMaxSize değerinin çok düşük olması durumu ele alınarak bu değer [USB_CDC_NCM_NTB_MIN_OUT_SIZE, CDC_NCM_NTB_MAX_SIZE_TX] aralığına sıkıştırılır. dwNtbOutMaxSize değerinin USB_CDC_NCM_NTB_MIN_OUT_SIZE değerinden küçük olmaması sağlanarak CDC verilerini işlemek için yeterli veri alanının ayrılması güvence altına alınır.

ÖnemOrta
CVSS5.5
İstismar olasılığı—
ÜrünLinux Kernel
Yayın7 Eki 2025
İlk görülme7 Eki 2025

Nasıl düzeltilir

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.16 ≤ v < 4.14.317, 4.15 ≤ v < 4.19.285, 4.20 ≤ v < 5.4.245, 5.5 ≤ v < 5.10.181, 5.11 ≤ v < 5.15.114, 5.16 ≤ v < 6.1.31, 6.2 ≤ v < 6.3.5, 6.44.14.317, 4.19.285, 5.4.245, 5.10.181, 5.15.114, 6.1.31, 6.3.5

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.

Intelligence 360 paketinde

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.