CVE-2026-52943
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: net: skbuff: pskb_carve köməkçi funksiyalarında çatışmayan zerocopy istinadı düzəldildi pskb_carve_inside_header() və pskb_carve_inside_nonlinear() funksiyalarının hər ikisi köhnə skb_shared_info başlığını memcpy() vasitəsilə yeni buferə kopyalayır ki, bura MSG_ZEROCOPY skb-ləri üçün destructor_arg göstəricisi (uarg) daxildir. Heç bir funksiya yeni shinfo üçün net_zcopy_get() çağırmır və bu da uçota alınmamış sahib yaradır: destructor_arg təyin edilmiş hər bir skb_shared_info azad edilərkən bir dəfə skb_zcopy_clear() çağıracaq, lakin yeni kopiya üçün müvafiq net_zcopy_get() heç vaxt çağırılmayıb. Təkrarlanan çağırışlar uarg->refcnt dəyərini vaxtından əvvəl sıfıra endirir və TX skb-lər hələ də aktiv destructor_arg göstəricilərini saxlayarkən ubuf_info_msgzc-ni azad edir. KASAN azad edilmiş ubuf_info_msgzc üzərində use-after-free xətasını bildirir: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 Gec giriş edən skb, pskb_carve_inside_nonlinear() tərəfindən refcount artımı olmadan kopyalanmış shinfo->destructor_arg vasitəsilə hələ də eyni uarg-yə istinad edirdi. Bunun etibarlı şəkildə istismar oluna biləcəyi təsdiqlənmişdir: işlək bir proof-of-concept standart kernel konfiqurasiyasında imtiyazsız lokal istifadəçidən tam root imtiyazlarının yüksəldilməsini təmin edir. Düzəliş, eyni memcpy/klonlanmış struktura malik olan pskb_expand_head() modelini izləyir. pskb_carve_inside_header() üçün net_zcopy_get() funksiyası skb_orphan_frags() uğurlu olduqdan sonra yerləşdirilir, beləliklə orphan xəta yolu üçün təmizləməyə ehtiyac qalmır. pskb_carve_inside_nonlinear() üçün isə net_zcopy_get() bütün uğursuzluq nöqtələrindən sonra və düz skb_release_data()-dan əvvəl yerləşdirilir, buna görə də heç bir xəta yolunda təmizləməyə ehtiyac yoxdur — bu, pskb_expand_head() ilə daha yaxın uyğunlaşdırılır və balanslaşdırıcı net_zcopy_put() ehtiyacını aradan qaldırır.
Necə düzəltmək olar
- linux linux_kernel5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12 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 | 4.7 ≤ v < 5.10.259, 5.11 ≤ v < 5.15.210, 5.16 ≤ v < 6.1.176, 6.2 ≤ v < 6.6.143, 6.7 ≤ v < 6.12.93, 6.13 ≤ v < 6.18.35, 6.19 ≤ v < 7.0.12, 7.1 | 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35, 7.0.12 |
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.