CVE-2026-98401
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: net: iptunnel: tünel kapsülleme çözme sırasında güncelliğini yitirmiş taşıma başlığı hatası düzeltildi Syzbot, tünel kapsülleme çözme işleminden sonra güncelliğini yitiren bir transport_header ofsetinin neden olduğu qdisc_pkt_len_segs_init() fonksiyonunda bir çökme bildirmiştir. BUG: unable to handle page fault for address: ffffed102091a42e Oops: Oops: 0000 [#1] SMP KASAN NOPTI CPU: 0 UID: 0 PID: 340 Comm: qdisc_uaf_repro Not tainted 7.2.0-rc4-00061-g248951ddc14d #256 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:__asan_load2 <IRQ> qdisc_pkt_len_segs_init (net/core/dev.c:4145) __dev_queue_xmit (net/core/dev.c:4787) br_dev_queue_push_xmit (net/bridge/br_forward.c:53) br_handle_frame_finish (net/bridge/br_input.c:229) br_handle_frame (net/bridge/br_input.c:315) __netif_receive_skb_core.constprop.0 (net/core/dev.c:6099) __netif_receive_skb_list_core (net/core/dev.c:6287) netif_receive_skb_list_internal (net/core/dev.c:6445) napi_complete_done (net/core/dev.c:6813) gro_cell_poll (net/core/gro_cells.c:74) __napi_poll (net/core/dev.c:7735) net_rx_action (net/core/dev.c:7798 net/core/dev.c:7955) handle_softirqs (kernel/softirq.c:622) do_softirq (kernel/softirq.c:523 kernel/softirq.c:510 ) __local_bh_enable_ip (kernel/softirq.c:450) tun_get_user (drivers/net/tun.c:1986 (discriminator 1)) tun_chr_write_iter (drivers/net/tun.c:2032) Sorun, commit 7fb4c1967011 ("net: pull headers in qdisc_pkt_len_segs_init()") ile qdisc taşıma başlığını okuyana kadar tamamen gizli kalmaktadır. Çökmenin gerçekleşmesi için dört koşulun aynı anda sağlanması gerekir: 1. Gelen paket kapsüllenmiş olmalı ve GSO meta verileri taşımalıdır. Paket hala dış tünel bağlamındayken, dış taşıma başlığı ofseti skb->transport_header içinde saklanır. 2. Tünel alıcısı dış başlıkları kaldırır. skb->data iç çerçeveye ilerletilir ancak skb->transport_header artık kaldırılmış olan dış L4 başlığını göstermeye devam eder; bu durum yeni verilere göre negatif bir ofset oluşmasına yol açar. 3. İç çerçeve yerel IP yığınına teslim edilmez. Bunun yerine, bir köprü veya HSR tarafından L2 seviyesinde yönlendirilir; böylece ip_rcv_core() hiçbir zaman çalışmaz ve taşıma başlığı iç L4 ofsetine sıfırlanmaz. 4. Yönlendirme yolu, qdisc_pkt_len_segs_init() fonksiyonuna giren __dev_queue_xmit() fonksiyonunu çağırır. Bu fonksiyon, GSO başlık uzunluğunu skb_transport_offset(skb) üzerinden hesaplar. Ofset negatif olduğundan, işaretsiz dönüştürme (unsigned cast) taşmaya neden olur ve pskb_may_pull(skb, hdr_len + sizeof(struct tcphdr)) işlemi skb sınırlarının ötesini okuyarak bir KASAN hatasına veya sayfa hatasına (page fault) tetikler. Sorun özellikle gro_cells aracılığıyla işlenen/birleştirilen GSO paketlerini (shinfo->gso_size != 0) gerektirir. Bu sorun, tüm tünel sürücüleri için gro_cell içerisindeki transport_header değerinin ~0U sentinel değeriyle temizlenerek düzeltilmiştir. GTP, GRO/GSO desteklemediği için hatalı GSO paketleri doğrudan GTP aşamasında düşürülmektedir.
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralık belirtilmemiş | — |
| microsoft azl3_kernel_6.6.159.1-1 | Aralık belirtilmemiş | — |
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.