CVE-2026-98954
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net: __virtio_net_hdr_to_skb() funksiyasında GSO paketləri həmişə analiz edilsin 9e8db5913264 nömrəli commit ("net: avoid false positives in untrusted gso validation"), bəzi çağırıcılar (məsələn, tun_get_user(), tun_xdp_one(), virtnet_receive_done() və raw_verify_header()) skb->network_header və skb->dev dəyişənlərini başlatmazdan əvvəl virtio_net_hdr_*_to_skb() funksiyasını çağırdığı üçün, __virtio_net_hdr_to_skb() daxilində VIRTIO_NET_HDR_F_NEEDS_CSUM olmayan GSO paketlərinin axın analizi (flow-dissection) önünə '&& skb->network_header' yoxlamasını əlavə etmişdir. __alloc_skb() və __build_skb_around() funksiyaları skb->network_header dəyişənini 0 ilə başladır (~0U ilə başladılan mac_header və transport_header-dən fərqli olaraq), buna görə də həmin dörd çağırıcıda skb->network_header hər zaman 0 olmuş və __virtio_net_hdr_to_skb() funksiyasındakı axın analizindən yan keçilmişdir. Daha ümumi şəkildə, skb->network_header bir boolean bayrağı deyil, skb->head-dən olan ofsetdir (skb_headroom(skb) 0 olduqda 0 da etibarlı ofset sayılır). 'if (gso_type && skb->network_header)' budağı ötürüləndə, ehtiyat variant olan 'else if (gso_type)' paketi analiz etmədən, ip_proto və ya n_proto-nu təsdiqləmədən və skb->transport_header-i təyin etmədən yalnız nh_min_len + thlen (TCPv4 üçün 40 bayt) hissəsini çəkirdi. Əgər paketin şəbəkə başlığı (network header) yanlış formatlıdırsa, o rədd edilmir və növbəti skb_probe_transport_header() çağırışı da uğursuz olur ki, bu da skb->transport_header-in ~0U (0xffff) olaraq qalmasına səbəb olur. Eynilə, əgər IPv4 paketi IP seçimləri (ihl > 5) və ya IPv6 paketi genişləndirmə başlıqları (extension headers) daşıyırsa, yalnız nh_min_len + thlen hissəsinin çəkilməsi TCP başlığının skb->head-dən kənarda qalmasına səbəb ola bilər. Hər iki halda, skb_gso_transport_seglen() funksiyasındakı tcp_hdrlen(skb) sərhədlərdən kənar oxuma (out-of-bounds read) həyata keçirir: BUG: KASAN: slab-out-of-bounds in skb_gso_transport_seglen Read of size 2 by task poc/133 skb_gso_transport_seglen (net/core/gso.c:155) skb_gso_validate_mac_len (net/core/gso.c:270) tbf_enqueue (net/sched/sch_tbf.c:260) dev_qdisc_enqueue (net/core/dev.c:4227) __dev_queue_xmit (net/core/dev.c:4884) Bundan əlavə, virtio_net_hdr_match_proto() yoxlamasının axın analizindən əvvəl yalnız 'if (!skb->protocol)' daxilində aparılması, skb->protocol çağırıcı tərəfindən əvvəlcədən təyin edildikdə təsdiqləmənin ötürülməsinə və xarici L2 protokolu ETH_P_8021Q və ya ETH_P_8021AD olan VLAN teqlərinə malik freymlərin rədd edilməsinə səbəb olurdu. Bu problem aşağıdakılarla düzəldilir: 1. tun_get_user(), tun_xdp_one(), virtnet_receive_done() və raw_verify_header() funksiyalarında virtio_net_hdr_*_to_skb() çağırılmadan əvvəl skb->dev və skb->network_header (həmçinin IFF_TUN üçün skb->protocol) başladılır. tun_get_user() funksiyasında, IFF_TUN halında artıq olan skb_reset_mac_header(skb) silinir, çünki __virtio_net_hdr_to_skb() mac_header-i şərtsiz olaraq sıfırlayır. 2. __virtio_net_hdr_to_skb() funksiyasından '&& skb->network_header' və təsdiqlənməmiş 'else if (gso_type)' ehtiyat variantı çıxarılır, beləliklə VIRTIO_NET_HDR_F_NEEDS_CSUM olmayan bütün GSO paketləri axın analizindən keçirilir, onların transport başlığı xətti məlumatlara (linear data) daxil edilir və skb->transport_header təyin olunur. 3. virtio_net_hdr_match_proto() yoxlaması skb_flow_dissect_flow_keys_basic() funksiyasından sonraya köçürülür və keys.basic.n_proto dəyəri hdr_gso_type-a qarşı təsdiqlənir.
Necə düzəltmək olar
Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| microsoft azl3_kernel_6.6.159.1-1 | Aralıq göstərilməyib | — |
| microsoft azl3_kernel_6.6.157.1-1 | Aralıq göstərilməyib | — |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.