CVE-2026-80970
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: ALSA: FCP: başlatılmamış bir init yanıtının kopyalanmasını engelleyin fcp_ioctl_init(), yanıt tamponunu kmalloc() ile ayırır ve tüm tamponu kullanıcı alanına geri kopyalar: buf_size = init.step0_resp_size + init.step2_resp_size; void *resp __free(kfree) = kmalloc(buf_size, GFP_KERNEL); ... if (copy_to_user(arg->resp, resp, buf_size)) return -EFAULT; Tamponu temizleyen hiçbir işlem yoktur ve başlangıçtaki step0_resp_size baytlarını yazan tek yer step-0 kontrol transferidir: err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), FCP_USB_REQ_STEP0, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, 0, private->bInterfaceNumber, step0_resp, private->step0_resp_size); if (err < 0) return err; usb_fill_control_urb() fonksiyonu URB_SHORT_NOT_OK değerini ayarlamaz, bu nedenle kısa veya sıfır uzunluklu bir veri aşaması durum 0 ile tamamlanır ve snd_usb_ctl_msg() küçük bir actual_length döndürür. Tek kontrol err < 0 olduğu için, kısa bir transfer başarı olarak kabul edilir. snd_usb_ctl_msg(), tam boyutu koşulsuz olarak geri kopyalar: buf = kmemdup(data, size, GFP_KERNEL); ... memcpy(data, buf, size); Bu nedenle cihazın hiçbir zaman yazmadığı baytlar resp içerisine değişmeden geri yüklenir ve kullanıcı alanına kopyalanır. step0_resp_size ve step2_resp_size her biri yalnızca 1..255 arasında doğrulandığından, çağrıcı aynı zamanda kmalloc-8'den kmalloc-512'ye kadar olan slab önbelleğini de seçmiş olur. 7.2.0-rc5 (arm64) sürümünde, adım 0'a sıfır uzunluklu bir veri aşamasıyla yanıt veren cihazda, s0 = s2 = 255 olduğunda: # init_on_alloc kapalı, sprey yok step0 penceresi [0,255): nonzero=94/255 000: 00 80 60 06 00 00 ff ff 18 00 00 00 57 01 ea 01 010: 08 78 22 13 00 00 ff ff a8 c4 5f 80 00 80 ff ff # aynı çekirdek, kmalloc-512 8 baytlık bir etiketle önceden doldurulmuş step0 penceresi [0,255): nonzero=219/255 tagbytes=232 # aynı çalışma, init_on_alloc=1 step0 penceresi [0,255): nonzero=0/255 tagbytes=0 # üç çalışmanın tamamı step2 penceresi [255,510): eşleşen cihaz kelimeleri=62/62 a8 c4 5f 80 00 80 ff ff değeri, ffff8000805fc4a8 şeklindeki little-endian kernel text adresidir. Step-2 penceresi etkilenmemiştir, dolayısıyla bilgi ifşası tam olarak step-0 bölgesindedir. Tamponu sıfırlayın ve kısa bir veri aşamasının hata olarak raporlanması için step-0 transferinin tam step0_resp_size baytını iletmesini şart koşun. XBOW tarafından keşfedildi, Baul Lee <[email protected]> tarafından analiz edildi.
Nasıl düzeltilir
- Linux Linuxe9e52437120fb5f802152877ba20c4b406c9fa9e, 29ab2df278ab4f1d238cd9c1c393ee00db175cba, 4335e387786479889e6db691fe06d345e52ea536 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | 46757a3e7d50dac923888e7fbe68377736f13c70 ≤ v < e9e52437120fb5f802152877ba20c4b406c9fa9e, 46757a3e7d50dac923888e7fbe68377736f13c70 ≤ v < 29ab2df278ab4f1d238cd9c1c393ee00db175cba, 46757a3e7d50dac923888e7fbe68377736f13c70 ≤ v < 4335e387786479889e6db691fe06d345e52ea536, 6.14 | e9e52437120fb5f802152877ba20c4b406c9fa9e, 29ab2df278ab4f1d238cd9c1c393ee00db175cba, 4335e387786479889e6db691fe06d345e52ea536 |
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.