CVE-2026-45905
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: xfrm: icmp_route_lookup tərs yolunda ip_rt_bug yarış vəziyyətinin düzəldilməsi icmp_route_lookup() funksiyası, XFRM (IPsec) siyasətləri üçün xüsusi emal tətbiq etməklə, ICMP xəta mesajlarını göndərmək üçün uyğun marşrutu tapmaq məqsədilə çoxsaylı marşrut axtarışları həyata keçirir. Axtarış ardıcıllığı belədir: 1. İlk öncə, ICMP cavabı üçün çıxış marşrutunu axtarın (dst = orijinal src) 2. Siyasət yoxlaması üçün xfrm_lookup() funksiyasından keçirin 3. Əgər bloklanıbsa (-EPERM) və ya dst lokal deyilsə, "tərs yola" daxil olun 4. Tərs yolda, orijinal paketin axınını tərs çevirən (saddr<->daddr dəyişdirilmiş) fl4_dec-i əldə etmək üçün xfrm_decode_session_reverse() çağırın 5. Əgər fl4_dec.saddr lokaldırsa (biz orijinal təyinat nöqtəsiyik), çıxış marşrutunun axtarışı üçün __ip_route_output_key()-dən istifadə edin 6. Əgər fl4_dec.saddr lokal DEYİLSƏ (biz yönləndirmə düyünüyük), tərs paketin giriş yolunu simulyasiya etmək üçün ip_route_input()-dən istifadə edin 7. Sonda, rt2-ni XFRM_LOOKUP_ICMP bayrağı ilə xfrm_lookup() vasitəsilə keçirin Səhv 6-cı addımda baş verir: ip_route_input() funksiyası təyinat nöqtəsi kimi fl4_dec.daddr (orijinal paketin mənbəyi) ilə çağırılır. Əgər bu ünvan ilkin yoxlama ilə ip_route_input() çağırışı arasında lokal hala gələrsə (məsələn, eyni vaxtda baş verən "ip addr add" səbəbindən), ip_route_input() dst.output hissəsi ip_rt_bug olaraq təyin edilmiş LOCAL marşrutu qaytarır. Bu marşrut daha sonra ICMP çıxışı üçün istifadə edilir və bu da dst_output()-un ip_rt_bug()-ı çağırmasına səbəb olur ki, nəticədə WARN_ON tetiklənir: ------------[ cut here ]------------ WARNING: net/ipv4/route.c:1275 at ip_rt_bug+0x21/0x30, CPU#1 Call Trace: <TASK> ip_push_pending_frames+0x202/0x240 icmp_push_reply+0x30d/0x430 __icmp_send+0x1149/0x24f0 ip_options_compile+0xa2/0xd0 ip_rcv_finish_core+0x829/0x1950 ip_rcv+0x2d7/0x420 __netif_receive_skb_one_core+0x185/0x1f0 netif_receive_skb+0x90/0x450 tun_get_user+0x3413/0x3fb0 tun_chr_write_iter+0xe4/0x220 ... Bunu ip_route_input()-dan sonra rt2->rt_type yoxlayaraq düzəldin. Əgər o RTN_LOCAL-dırsa, marşrut çıxış üçün istifadə edilə bilməz, buna görə də onu xəta kimi qəbul edin. Reproduser, yarış pəncərəsini genişləndirmək üçün kernel modifikasiyası tələb edir, bu da onu özünütest (selftest) kimi istifadə üçün uyğun etmir. O, burada mövcuddur: https://gist.github.com/mrpre/eae853b72ac6a750f5d45d64ddac1e81
Necə düzəltmək olar
- linux linux_kernel6.1.165, 6.6.128, 6.12.75, 6.18.14, 6.19.4 və ya daha yeni versiya
- git.kernel.org/stable/c/1c9ef28f643cce34a6a6c36c8f4d6d60a60db7e1
- git.kernel.org/stable/c/2c1f59005da9dd4b07b26984fd719e36557dc57c
- git.kernel.org/stable/c/423ce12d10b426709489d6b84fdaa6d2f31c5652
- git.kernel.org/stable/c/81b84de32bb27ae1ae2eb9acf0420e9d0d14bf00
- git.kernel.org/stable/c/9a95ec9144eeff1fc6fbcc21b677e322c6f1430b
- git.kernel.org/stable/c/b04061f89ffc6168e7ec3c71d0086ec3c3797228
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.25 ≤ v < 6.1.165, 6.2 ≤ v < 6.6.128, 6.7 ≤ v < 6.12.75, 6.13 ≤ v < 6.18.14, 6.19 ≤ v < 6.19.4 | 6.1.165, 6.6.128, 6.12.75, 6.18.14, 6.19.4 |
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.