CVE-2026-98271

Orta

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net: skbuff: pskb_carve() sonrası güncelliğini yitirmiş başlık ofsetleri bırakılmamalıdır pskb_carve_inside_header() ve pskb_carve_inside_nonlinear() fonksiyonları bir paketin ilk baytlarını kaldırır ve skb->head kısmını yeniden tahsis eder. İşlemden önce mevcut olan tüm başlıklar silinir ancak her iki fonksiyon da hiçbir işlem yapmayan skb_headers_offset_update(skb, 0) fonksiyonunu çağırır: skb->mac_header, skb->network_header, skb->transport_header ve skb->csum_start eski değerlerini korur ve artık orada olmayan baytları tanımlarlar. Her iki yardımcı fonksiyon da yeni başlığı eski skb_end_offset() üzerinden boyutlandırdığından, güncelliğini yitirmiş ofsetler hala yeni tahsisatın içinde kalır. Ancak bunlar skb_tail_pointer()'ı aşarak hiç başlatılmamış baytlara işaret eder. pskb_carve_inside_nonlinear() en kötü durumdur; çünkü boş bir doğrusal kısma sahip zombi bir skb bırakırken (skb->data == skb_tail_pointer(skb), skb_headlen(skb) == 0), skb_mac_header_was_set() hala doğru (true) döner ve skb->mac_header, skb->data'nın çok ilerisindedir. pskb_extract() fonksiyonunun tek kullanıcısı rds_tcp_data_recv() fonksiyonudur ve oyulan skb, tinc->ti_skb_list üzerine kuyruğa alınır. RDS gelen mesajı serbest bırakıldığında, rds_tcp_inc_free() fonksiyonu skb_queue_purge() fonksiyonunu çağırır ve bu da skb'leri SKB_DROP_REASON_QUEUE_PURGE ile serbest bırakır. Bu durum drop_monitor üzerinden görülebilir ve ardından sistem (hatalı) mac başlığına geri dönmeye çalışır: skbuff: __skb_pull(len=234) skb len=6968 data_len=6968 headroom=0 headlen=0 tailroom=0 end-tail=384 mac=(234,14) mac_len=14 net=(248,40) trans=288 shinfo(txflags=0 nr_frags=1 gso(size=1428 type=16 segs=5)) csum(0x100120 start=288 offset=16 ip_summed=3 complete_sw=0 valid=1 level=0) hash(0x7b446c6c sw=0 l4=1) proto=0x86dd pkttype=0 iif=60 kernel BUG at ./include/linux/skbuff.h:2847! Mac ve transport başlıklarını ayarlanmamış olarak işaretlemek, network başlığını sıfırlamak, skb->mac_len değerini temizlemek ve artık anlamsız olan CHECKSUM_PARTIAL değerini düşürmek (csum_start artık hiçbir şeyi tanımlamamaktadır) için skb_carve_reset_headers() eklenmiştir. Dahili ofsetler de geçersiz kılınmıştır. mac_header ve transport_header'dan farklı olarak bunların bir "ayarlanmamış" belirteci yoktur, bu nedenle geriye kalan sıfır dışındaki bir değer hala gerçek bir başlık gibi görünür. Tüm başlık durumu tek bir yerde geçersiz kılınacak şekilde skb->inner_mac_header, skb->inner_network_header, skb->inner_transport_header, skb->inner_protocol ve skb->encapsulation sıfırlanmıştır. v2: hatalı bir değişiklik günlüğü düzeltildi. Güncelliğini yitirmiş ofsetler, eskisine göre asla daha küçük olmayan yeni skb->head içerisinde kalır; sadece skb_tail_pointer()'ı aşarak yok olmuş baytlara işaret ederler. Bunu vurgulayan Xuanqiang Luo'ya teşekkürler. Ayrıca netdev AI incelemesinde önerildiği üzere dahili başlık durumu da geçersiz kılınmıştır: https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260911114922.621937-1-edumazet%40google.com

ÖnemOrta
CVSS6.1
İstismar olasılığı—
ÜrünMicrosoft Azl3 Kernel
Yayın6 Eki 2026
İlk görülme6 Eki 2026

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ünEtkilenen sürümlerDüzeltildiği sürüm
microsoft azl3_kernel_6.6.157.1-1Aralık belirtilmemiş—
microsoft azl3_kernel_6.6.159.1-1Aralı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.

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.