CVE-2024-35969
Təsvir
Linux kernelində aşağıdakı zəiflik həll edilmişdir: ipv6: ipv6_get_ifaddr və ipv6_del_addr arasında yarış vəziyyətinin düzəldilməsi ipv6_get_ifaddr inet6_addr_lst üzərində RCU kilidi altında gəzinti etsə də, bu, hlist_for_each_entry_rcu-nun siyahıdan çıxarılmış elementi qaytara bilməsi deməkdir. RCU sayəsində belə elementin yaddaşı özü azad edilmir, lakin yaddaşın faktiki məzmununun düzgün olmasına heç nə zəmanət vermir. Xüsusilə, istinad sayğacı sıfır ola bilər. Bu, ipv6_del_addr paralel olaraq çağırıldıqda baş verə bilər. ipv6_del_addr qeydi inet6_addr_lst-dən çıxarır (hlist_del_init_rcu(&ifp->addr_lst)) və bütün istinadları azaldır (__in6_ifa_put(ifp) + in6_ifa_put(ifp)). Kifayət qədər pis zamanlama ilə bu baş verə bilər: 1. ipv6_get_ifaddr daxilində hlist_for_each_entry_rcu bir qeyd qaytarır. 2. Sonra verilmiş qeyd üçün bütün ipv6_del_addr icra olunur. İstinad sayğacı sıfıra düşür və kfree_rcu planlaşdırılır. 3. ipv6_get_ifaddr davam edir və istinad sayğacını artırmağa çalışır (in6_ifa_hold). 4. rcu kilidi açılır və qeyd azad edilir. 5. Azad edilmiş qeyd qaytarılır. Belə halda istinad sayğacının artırılmasının qarşısı alınır. in6_ifa_hold_safe adı mövcud fib6_info_hold_safe adını təqlid etmək üçün seçilmişdir. [ 41.506330] refcount_t: addition on 0; use-after-free. [ 41.506760] WARNING: CPU: 0 PID: 595 at lib/refcount.c:25 refcount_warn_saturate+0xa5/0x130 [ 41.507413] Modules linked in: veth bridge stp llc [ 41.507821] CPU: 0 PID: 595 Comm: python3 Not tainted 6.9.0-rc2.main-00208-g49563be82afa #14 [ 41.508479] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) [ 41.509163] RIP: 0010:refcount_warn_saturate+0xa5/0x130 [ 41.509586] Code: ad ff 90 0f 0b 90 90 c3 cc cc cc cc 80 3d c0 30 ad 01 00 75 a0 c6 05 b7 30 ad 01 01 90 48 c7 c7 38 cc 7a 8c e8 cc 18 ad ff 90 <0f> 0b 90 90 c3 cc cc cc cc 80 3d 98 30 ad 01 00 0f 85 75 ff ff ff [ 41.510956] RSP: 0018:ffffbda3c026baf0 EFLAGS: 00010282 [ 41.511368] RAX: 0000000000000000 RBX: ffff9e9c46914800 RCX: 0000000000000000 [ 41.511910] RDX: ffff9e9c7ec29c00 RSI: ffff9e9c7ec1c900 RDI: ffff9e9c7ec1c900 [ 41.512445] RBP: ffff9e9c43660c9c R08: 0000000000009ffb R09: 00000000ffffdfff [ 41.512998] R10: 00000000ffffdfff R11: ffffffff8ca58a40 R12: ffff9e9c4339a000 [ 41.513534] R13: 0000000000000001 R14: ffff9e9c438a0000 R15: ffffbda3c026bb48 [ 41.514086] FS: 00007fbc4cda1740(0000) GS:ffff9e9c7ec00000(0000) knlGS:0000000000000000 [ 41.514726] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 41.515176] CR2: 000056233b337d88 CR3: 000000000376e006 CR4: 0000000000370ef0 [ 41.515713] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 41.516252] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 41.516799] Call Trace: [ 41.517037] <TASK> [ 41.517249] ? __warn+0x7b/0x120 [ 41.517535] ? refcount_warn_saturate+0xa5/0x130 [ 41.517923] ? report_bug+0x164/0x190 [ 41.518240] ? handle_bug+0x3d/0x70 [ 41.518541] ? exc_invalid_op+0x17/0x70 [ 41.520972] ? asm_exc_invalid_op+0x1a/0x20 [ 41.521325] ? refcount_warn_saturate+0xa5/0x130 [ 41.521708] ipv6_get_ifaddr+0xda/0xe0 [ 41.522035] inet6_rtm_getaddr+0x342/0x3f0 [ 41.522376] ? __pfx_inet6_rtm_getaddr+0x10/0x10 [ 41.522758] rtnetlink_rcv_msg+0x334/0x3d0 [ 41.523102] ? netlink_unicast+0x30f/0x390 [ 41.523445] ? __pfx_rtnetlink_rcv_msg+0x10/0x10 [ 41.523832] netlink_rcv_skb+0x53/0x100 [ 41.524157] netlink_unicast+0x23b/0x390 [ 41.524484] netlink_sendmsg+0x1f2/0x440 [ 41.524826] __sys_sendto+0x1d8/0x1f0 [ 41.525145] __x64_sys_sendto+0x1f/0x30 [ 41.525467] do_syscall_64+0xa5/0x1b0 [ 41.525794] entry_SYSCALL_64_after_hwframe+0x72/0x7a [ 41.526213] RIP: 0033:0x7fbc4cfcea9a [ 41.526528] Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 7e c3 0f 1f 44 00 00 41 54 48 83 ec 30 44 89 [ 41.527942] RSP: 002b:00007f ---truncated---
Necə düzəltmək olar
- linux linux_kernel4.19.313, 5.4.275, 5.10.216, 5.15.156, 6.1.87, 6.6.28, 6.8.7 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 | 2.6.35 ≤ v < 4.19.313, 4.20 ≤ v < 5.4.275, 5.5 ≤ v < 5.10.216, 5.11 ≤ v < 5.15.156, 5.16 ≤ v < 6.1.87, 6.2 ≤ v < 6.6.28, 6.7 ≤ v < 6.8.7, 6.9 | 4.19.313, 5.4.275, 5.10.216, 5.15.156, 6.1.87, 6.6.28, 6.8.7 |
| debian debian_linux | 10.0 | — |
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.