CVE-2026-23016
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılıb: inet: frags: fraglist conntrack istinadlarını silin Jakub sızan skb-lərin/conntrack istinadlarının sazlanmasını daha aşkar etmək üçün nf_conntrack_cleanup_net_list() funksiyasına xəbərdarlıq əlavə etdi. syzbot bunun tetikləndiyini bildirir və mən də bunu ip_defrag.sh özünütesti vasitəsilə təkrar edə bilirəm: conntrack cleanup blocked for 60s WARNING: net/netfilter/nf_conntrack_core.c:2512 [..] Conntrack təmizlənməsi ilişib qalır, çünki bəzi skb-lər hələ də frag_list vasitəsilə nf_conn istinadlarına malikdir. net.core.skb_defer_max=0 tənzimləməsi donmanı aradan qaldırır. Eric Dumazet qeyd edir ki, skb_release_head_state() fraglist-i izləmir. ip_defrag.sh bu problemi yalnız 6471658dc66c ("udp: use skb_attempt_defer_free()") commit-indən sonra təkrar edə bilir, lakin gördüyüm qədərilə, PMTU kəşfi söndürüldükdə bu problem TCP ilə də baş verə bilər. UDP üçün müvafiq problem yolu belədir: 1. netns fraqmentləşdirilmiş paketlər göndərir 2. nf_defrag_v6_hook onları birləşdirir (çıxış hook-unda) 3. Birləşdirilmiş skb izlənilir (skb nf_conn istinadına sahib olur) 4. ip6_output yenidən fraqmentləşdirir 5. Yenidən fraqmentləşdirilmiş paketlər də nf_conn istinadına sahib olur (ip6_fragment funksiyası ip6_copy_metadata()-nı çağırır) 6. Giriş yolunda nf_defrag_v6_hook defraqmentasiyanı ötürür: fraqmentlərdə artıq skb->nf_conn qoşulub 7. skb-lər ipv6_frag_rcv() vasitəsilə birləşdirilir 8. skb_consume_udp -> skb_attempt_defer_free() -> skb sonda pcpu freelist-ə düşür, lakin hələ də nf_conn istinadı saxlayır. Mümkün həllər: 1 defrag mühərrikinin nf_conn yazısını silməsinə icazə vermək VƏ YA 2 kick_defer_list_purge()-ı ixrac etmək və onu conntrack netns çıxış callback-indən çağırmaq VƏ YA 3 skb_attempt_defer_free()-a skb_has_frag_list() yoxlamasını əlavə etmək 2 və 3 variantları həmçinin ip_defrag.sh donmasını həll edir, lakin eyni çatışmazlığa malikdir: Soketə növbəyə alınmış belə birləşdirilmiş skb-lər, istifadəçi sahəsi paketi istehlak edənə qədər conntrack modulunun silinməsinə mane ola bilər. Həm TCP, həm də UDP stekləri skb-ni soket növbəsinə yerləşdirməzdən əvvəl nf_reset_ct()-ni çağırsalar da, həmin funksiya frag_list skb-ləri üzərində dövr etmir. Buna görə də, defrag növbəsinə yerləşdirildikdə nf_conn yazılarını silin. Birinci (ofset 0) skb-nin nf_conn yazısını saxlayın ki, birləşdirilmiş skb TX yolu üçün nf_conn yazısını qorusun. Qeyd edin ki, düzəliş teqi yanlışdır; o, 'ip_defrag.sh təkrar olunan problemini' gətirən commit-ə işarə edir: bu yamayı hər bir stabil nüvəyə tətbiq etməyə ehtiyac yoxdur.
Necə düzəltmək olar
- linux linux_kernel6.18.6 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 6.18.1 ≤ v < 6.18.6, 6.18, 6.19 | 6.18.6 |
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.