CVE-2026-23016
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: inet: frags: fraglist conntrack referanslarını düşür Jakub, sızan skb'lerin/conntrack referanslarının hata ayıklamasını daha belirgin hale getirmek için nf_conntrack_cleanup_net_list() fonksiyonuna bir uyarı ekledi. syzbot bunun tetiklendiğini raporlamaktadır ve ben de bunu ip_defrag.sh selftest aracılığıyla yeniden üretebiliyorum: conntrack cleanup blocked for 60s WARNING: net/netfilter/nf_conntrack_core.c:2512 [..] Conntrack temizleme işlemleri, bazı skb'lerin frag_list üzerinden hala nf_conn referanslarını tutması nedeniyle takılmaktadır. net.core.skb_defer_max=0 yapılması donmayı gidermektedir. Eric Dumazet, skb_release_head_state() fonksiyonunun fraglist'i takip etmediğine dikkat çekmektedir. ip_defrag.sh bu problemi yalnızca 6471658dc66c ("udp: use skb_attempt_defer_free()") commit'inden beri yeniden üretebilmektedir ancak gördüğüm kadarıyla, pmtu keşfi kapalıysa bu sorun TCP ile de meydana gelebilir. UDP için ilgili sorun yolu şöyledir: 1. netns parçalanmış paketler yayınlar 2. nf_defrag_v6_hook bunları yeniden birleştirir (output hook içinde) 3. Yeniden birleştirilen skb izlenir (skb, nf_conn referansına sahiptir) 4. ip6_output tekrar parçalar 5. Tekrar parçalanan paketler de nf_conn referansına sahiptir (ip6_fragment, ip6_copy_metadata() fonksiyonunu çağırır) 6. Giriş yolunda, nf_defrag_v6_hook parçaları birleştirmeyi atlar: parçalara zaten skb->nf_conn eklenmiştir 7. skb'ler ipv6_frag_rcv() aracılığıyla yeniden birleştirilir 8. skb_consume_udp -> skb_attempt_defer_free() -> skb, pcpu freelist'e girer ancak hala nf_conn referansına sahiptir. Olası çözümler: 1 defrag motorunun nf_conn girişini düşürmesini sağlamak VEYA 2 kick_defer_list_purge() fonksiyonunu dışa aktarmak ve onu conntrack netns çıkış geri çağırma fonksiyonundan çağırmak VEYA 3 skb_attempt_defer_free() fonksiyonuna skb_has_frag_list() kontrolü eklemek 2 ve 3 seçenekleri de ip_defrag.sh donmasını çözer ancak aynı dezavantajı paylaşırlar: Sokete kuyruklanan bu tür yeniden birleştirilmiş skb'ler, kullanıcı alanı paketi tüketene kadar conntrack modülünün kaldırılmasını engelleyebilir. Hem tcp hem de udp yığını, skb'yi soket kuyruğuna yerleştirmeden önce nf_reset_ct() fonksiyonunu çağırsa da, bu fonksiyon frag_list skb'lerini yinelemez. Bu nedenle, defrag kuyruğuna yerleştirildiklerinde nf_conn girişlerini düşürün. İlk (ofset 0) skb'nin nf_conn girişini koruyun, böylece yeniden birleştirilen skb, TX yolu adına nf_conn girişini muhafaza eder. Fixes etiketinin yanlış olduğuna; 'ip_defrag.sh yeniden üretilebilir sorunu'nu başlatan commit'e işaret ettiğine dikkat edin: bu yamayı her kararlı çekirdeğe (stable kernel) backport etmeye gerek yoktur.
Nasıl düzeltilir
- linux linux_kernel6.18.6 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 | 6.18.1 ≤ v < 6.18.6, 6.18, 6.19 | 6.18.6 |
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.