CVE-2023-53354
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: skbuff: skb_segment, skbuff frags istifadə edilməzdən əvvəl sıfır surətli kopyalama (zero copy) funksiyalarını çağırın bf5c25d60861 ("skbuff: in skb_segment, call zerocopy functions once per nskb") commit-i skb_segment() daxilində sıfır surətli kopyalama funksiyalarının çağırılmasını əlavə etdi. Bu dəyişiklik skb_segment()-də bir xətaya səbəb oldu, çünki skb_orphan_frags() fragmentlərin sayını dəyişdirə və ya tamamilə yeni fragmentlər ayırıla bilər ki, bu da nrfrags və frag dəyişənlərinin köhnə dəyərlərə işarə etməsinə gətirib çıxarır. Bu, aşağıdakı stacktrace ilə nəticələnən kernel panikasına səbəb ola bilər: [ 193.894380] BUG: kernel NULL pointer dereference, address: 00000000000000bc [ 193.895273] CPU: 13 PID: 18164 Comm: vh-net-17428 Kdump: loaded Tainted: G O 5.15.123+ #26 [ 193.903919] RIP: 0010:skb_segment+0xb0e/0x12f0 [ 194.021892] Call Trace: [ 194.027422] <TASK> [ 194.072861] tcp_gso_segment+0x107/0x540 [ 194.082031] inet_gso_segment+0x15c/0x3d0 [ 194.090783] skb_mac_gso_segment+0x9f/0x110 [ 194.095016] __skb_gso_segment+0xc1/0x190 [ 194.103131] netem_enqueue+0x290/0xb10 [sch_netem] [ 194.107071] dev_qdisc_enqueue+0x16/0x70 [ 194.110884] __dev_queue_xmit+0x63b/0xb30 [ 194.121670] bond_start_xmit+0x159/0x380 [bonding] [ 194.128506] dev_hard_start_xmit+0xc3/0x1e0 [ 194.131787] __dev_queue_xmit+0x8a0/0xb30 [ 194.138225] macvlan_start_xmit+0x4f/0x100 [macvlan] [ 194.141477] dev_hard_start_xmit+0xc3/0x1e0 [ 194.144622] sch_direct_xmit+0xe3/0x280 [ 194.147748] __dev_queue_xmit+0x54a/0xb30 [ 194.154131] tap_get_user+0x2a8/0x9c0 [tap] [ 194.157358] tap_sendmsg+0x52/0x8e0 [tap] [ 194.167049] handle_tx_zerocopy+0x14e/0x4c0 [vhost_net] [ 194.173631] handle_tx+0xcd/0xe0 [vhost_net] [ 194.176959] vhost_worker+0x76/0xb0 [vhost] [ 194.183667] kthread+0x118/0x140 [ 194.190358] ret_from_fork+0x1f/0x30 [ 194.193670] </TASK> Bu halda skb_orphan_frags() çağırışı nr_frags dəyərini yeniləmiş, lakin skb_segment() daxilindəki nrfrags lokal dəyişəni köhnəlmiş vəziyyətdə saxlamışdır. Nəticədə kod vaxtından əvvəl i >= nrfrags şərtinə çatmış və list_skb göstəricisini (pointer) istifadə edərək növbəti frag_skb-yə keçməyə çalışmışdır; lakin həmin göstərici NULL olduğu üçün kernel panikası baş vermişdir. Sıfır surətli kopyalama funksiyalarının çağırılışı frags və nr_frags istifadə edilməzdən əvvələ keçirilmişdir.
Necə düzəltmək olar
- linux linux_kernel4.19.295, 5.4.257, 5.10.195, 5.15.132, 6.1.53, 6.4.16, 6.5.3 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.16 ≤ v < 4.19.295, 4.20 ≤ v < 5.4.257, 5.5 ≤ v < 5.10.195, 5.11 ≤ v < 5.15.132, 5.16 ≤ v < 6.1.53, 6.2 ≤ v < 6.4.16, 6.5 ≤ v < 6.5.3 | 4.19.295, 5.4.257, 5.10.195, 5.15.132, 6.1.53, 6.4.16, 6.5.3 |
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.