CVE-2024-35884

Kritik

Açıklama

Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: udp: tünele düşen tünel dışı GSO skb'lerin kabul edilmemesi rx-udp-gro-forwarding etkinleştirildiğinde, UDP paketleri iletilirken GRO işlemine tabi tutulabilir. Bu tür paketlerin bir tünele düşmesi çeşitli sorunlara yol açabilir ve udp_gro_receive, eşleşen bir soket arayarak bunun gerçekleşmediğinden emin olur. Bu işlem udp4/6_gro_lookup_skb içerisinde ancak yalnızca mevcut netns içinde gerçekleştirilir. Uç noktanın başka bir netns içinde olduğu tünellenmiş paketlerde bu durum bir sorundur. Bu gibi durumlarda paketler UDP düzeyinde GRO işlemine tabi tutulur ve bu da daha sonra çeşitli sorunlara yol açar. Aynı durum rx-gro-list ile de meydana gelebilir. Bu durumun, UDP düzeyinde GRO işlemine tabi tutulan geneve paketlerinde gerçekleştiği görülmüştür. Böyle bir durumda gso_size ayarlanır; daha sonra paket geneve rx yolundan geçer, geneve başlığı çıkarılır, ofsetler ayarlanır ve frag_list skb'leri geneve açısından düzenlenmez. Bu skb'ler skb_fragment aşamasına geldiğinde hatalı çalışacaktır. GRO işlemine tabi tutulan skb'lerin görünümüne bağlı olarak, bozuk paketlerden kernel çökmelerine kadar farklı sonuçlar ortaya çıkabilir. Örneklerden biri, frag_list işlenirken skb_segment sırasında tetiklenen bir BUG_ON[1] hatasıdır. gso_size yanlış olduğundan (geneve başlığı çıkarıldığı için), skb_segment aslında bir sonraki paket olmasına rağmen frag_list içinde "geneve başlık boyutu" kadar veri olduğunu düşünür. BUG_ON'un kendisinin sorunla bir ilgisi yoktur; bu sadece potansiyel sorunlardan biridir. udp_gro_receive içerisinde eşleşen bir soket aramak risklidir: arama tüm netns'lere genişletilebilir (performanstan bahsetmiyorum) ancak bu paketlerin arada değiştirilmesini engelleyen hiçbir şey yoktur ve yine de eşleşen bir soket bulamayabiliriz. Mevcut mantığın çoğu durumu kapsaması gerektiği için orada kalması uygundur, ancak aynı zamanda çok erken GRO işlemine tabi tutulan tünel paketlerini de yönettiğimizden emin olmamız gerekir. Bu, udp_unexpected_gso içerisindeki kontrollerin genişletilmesiyle sağlanmıştır: SKB_GSO_UDP_TUNNEL/_CSUM bitlerinden yoksun olan ve bir tünele düşen GSO paketleri segmente edilmelidir. [1] kernel BUG at net/core/skbuff.c:4408! RIP: 0010:skb_segment+0xd2a/0xf70 __udp_gso_segment+0xaa/0x560

ÖnemKritik
CVSS9.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın19 May 2024
İlk görülme19 May 2024

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel5.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel5.6 ≤ v < 5.10.215, 5.11 ≤ v < 5.15.154, 5.16 ≤ v < 6.1.85, 6.2 ≤ v < 6.6.26, 6.7 ≤ v < 6.8.5, 6.95.10.215, 5.15.154, 6.1.85, 6.6.26, 6.8.5
debian debian_linux10.0—

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-2024-35884 · Linux Kernel · Dark Radar