CVE-2026-31607

Kritik

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: usbip: usbip_pack_ret_submit() fonksiyonunda number_of_packets değerini doğrula Bir USB/IP istemcisi bir RET_SUBMIT yanıtı aldığında, usbip_pack_ret_submit() ağ PDU'sundan gelen urb->number_of_packets değerinin üzerine koşulsuz olarak yazar. Bu değer daha sonra usbip_recv_iso() ve usbip_pad_iso() fonksiyonlarında, boyutu URB tahsis zamanında CMD_SUBMIT'ten gelen *orijinal* number_of_packets değerine göre sabitlenmiş olan esnek bir dizi olan urb->iso_frame_desc[] üzerinde yineleme yapmak için döngü sınırı olarak kullanılır. Kötü niyetli bir USB/IP sunucusu, yanıttaki number_of_packets değerini orijinal olarak gönderilenden daha büyük bir değere ayarlayabilir; bu durum, usbip_recv_iso() fonksiyonu tahsis edilen bölgenin ötesindeki urb->iso_frame_desc[i] konumuna yazdığında bir heap out-of-bounds write hatasına neden olur. KASAN bunu kernel 7.0.0-rc5 ile onaylamıştır: BUG: KASAN: slab-out-of-bounds in usbip_recv_iso+0x46a/0x640 Write of size 4 at addr ffff888106351d40 by task vhci_rx/69 Hatalı adres, tahsis edilen 320 baytlık bölgenin [ffff888106351c00, ffff888106351d40) 0 bayt sağında yer almaktadır. Sunucu tarafı (stub_rx.c) ve gadget tarafı (vudc_rx.c), c6688ef9f297 ("usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input") ve b78d830f0049 ("usbip: fix vudc_rx: harden CMD_SUBMIT path to handle malicious input") commitlerinden beri CMD_SUBMIT yolundaki number_of_packets değerini zaten doğrulamaktadır. Sunucu tarafı, o noktada henüz bir URB mevcut olmadığı için USBIP_MAX_ISO_PACKETS değerine karşı doğrulama yapar. İstemci tarafında ise orijinal URB mevcuttur, dolayısıyla daha sıkı bir sınır kullanılabilir: yanıt, orijinal number_of_packets değerini aşmamalıdır. Bu durum, usbip_recv_xbuff() fonksiyonunda yanıt değerini orijinal tahsis boyutuyla karşılaştıran actual_length değerinin transfer_buffer_length değerine karşı mevcut doğrulamasının bir benzeridir. Kelvin Mbogo'nun serisi ("usb: usbip: fix integer overflow in usbip_recv_iso()", v2) alma yönündeki fonksiyonların kendilerini güçlendirmektedir; bu yama, hatalı değeri kaynağında —üzerine yazılmadan önce usbip_pack_ret_submit() içinde— yakalayarak ve küresel USBIP_MAX_ISO_PACKETS limiti yerine URB başına özel daha sıkı tahsis sınırını kullanarak bu çalışmayı tamamlar. Bu sorun, usbip_pack_ret_submit() fonksiyonunda üzerine yazma işleminden önce rpdu->number_of_packets değerinin urb->number_of_packets değerine karşı kontrol edilmesiyle düzeltilmiştir. İhlal durumunda, usbip_recv_iso() ve usbip_pad_iso() fonksiyonlarının güvenli bir şekilde erken dönmesi için değer sıfıra sabitlenir.

ÖnemKritik
CVSS9.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 Nis 2026
İlk görülme24 Nis 2026

Nasıl düzeltilir

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel2.6.39 ≤ v < 6.6.136, 6.7 ≤ v < 6.12.83, 6.13 ≤ v < 6.18.24, 6.19 ≤ v < 6.19.14, 7.0 ≤ v < 7.0.16.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1

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.

CVE-2026-31607 · Linux Kernel · Dark Radar