CVE-2026-64102
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: RDMA/siw: İşaretli alım matematiğinden önce MPA FPDU uzunluk alt taşmasının reddedilmesi Kötü niyetli bir bağlı siw eşi, MPA uzunluk alanının (c_hdr->mpa_len, 16 bit big-endian, eş tarafından kontrol edilen) bildirilen opcode için sabit DDP/RDMAP başlığından daha küçük olduğu bir iWARP FPDU gönderebilir. Soft-iWARP, iwarp_pktinfo[opcode].hdr_len değerine dayanarak siw_get_hdr() içinde tüm başlığı ayrıştırır ancak mpa_len değerini hiçbir zaman bu başlık uzunluğu ile karşılaştırmaz. Ardından siw_tcp_rx_data() şunları türetir: srx->fpdu_part_rem = be16_to_cpu(mpa_len) - fpdu_part_rcvd + MPA_HDR_SIZE; Burada fpdu_part_rcvd, bu noktada iwarp_pktinfo[opcode].hdr_len değerine eşittir. Etiketli bir WRITE işlemi için (hdr_len 16, MPA_HDR_SIZE 2), ağ üzerindeki en küçük 0 mpa_len değeri fpdu_part_rem = -14 sonucunu verir ve hdr_len - MPA_HDR_SIZE değerinin altındaki herhangi bir mpa_len, negatif bir int olarak alt taşmaya neden olur. İşaretli değer daha sonra siw_proc_write()/siw_proc_rresp() fonksiyonuna şu şekilde aktarılır: bytes = min(srx->fpdu_part_rem, srx->skb_new); Bu değer siw_check_mem() fonksiyonuna bir int len olarak iletilir (len negatif olduğunda geçerli bir taban için addr + len > mem->va + mem->len aralık kontrolü sağlanır) ve siw_rx_data() -> siw_rx_kva() / siw_rx_umem() -> skb_copy_bits() fonksiyonlarına işaretli bir kopyalama uzunluğu olarak ulaşır. skb_copy_bits() içindeki başlık kopyalama dalı bunu size_t türüne yükselterek çok gigabaytlık bir okuma işlemi gerçekleştirir. Gerçek kernel TCP alım yolunu süren bir KUnit düzeneği altında KASAN -- döngüsel bir AF_INET soket çifti, kernel_sendmsg aracılığıyla yazılan hatalı FPDU, softirq içinde tetiklenen sk_data_ready, siw_tcp_rx_data'ya yönlendirilen tcp_read_sock -- şunları raporlar: BUG: KASAN: use-after-free in skb_copy_bits+0x284/0x480 Read of size 4294967295 at addr ffff888... Call Trace: skb_copy_bits siw_rx_kva siw_rx_data siw_check_mem siw_proc_write siw_tcp_rx_data __tcp_read_sock siw_qp_llp_data_ready tcp_data_ready tcp_data_queue Eş başlığının tamamen toplandığı en erken noktaya eksik olan değişmez eklenmiştir. iwarp_pktinfo[*].hdr_len - MPA_HDR_SIZE, siw vericisinin her opcode için minimum mpa_len olarak kullandığı değerle (drivers/infiniband/sw/siw/siw_qp.c:33) tam olarak aynıdır, dolayısıyla bu durum protokol sözleşmesine uygundur. Aralık dışı FPDU'lar bağlantıyı TERM_ERROR_LAYER_LLP / LLP_ETYPE_MPA / LLP_ECODE_FPDU_START ile sonlandırır; bu da RFC 5044 Bölüm 8 hata kodu 3 ("Marker ve ULPDU Uzunluk alanları bir FPDU başlangıcı konusunda hemfikir değil") olup, bu tutarsızlık için doğru çerçeveleme hatası sınıfıdır.
Nasıl düzeltilir
- linux linux_kernel5.10.258, 5.15.209, 6.1.175, 6.6.142, 6.12.92, 6.18.34, 7.0.11 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 | 5.3 ≤ v < 5.10.258, 5.11 ≤ v < 5.15.209, 5.16 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.142, 6.7 ≤ v < 6.12.92, 6.13 ≤ v < 6.18.34, 6.19 ≤ v < 7.0.11, 7.1 | 5.10.258, 5.15.209, 6.1.175, 6.6.142, 6.12.92, 6.18.34, 7.0.11 |
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.