CVE-2023-53354
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: skbuff: skb_segment, skbuff frags kullanılmadan önce zero copy fonksiyonlarını çağırın bf5c25d60861 numaralı commit ("skbuff: in skb_segment, call zerocopy functions once per nskb"), skb_segment() içerisine zero copy fonksiyonlarının çağrılmasını eklemiştir. Bu değişiklik skb_segment() üzerinde bir hataya yol açmıştır; çünkü skb_orphan_frags() fragment sayısını değiştirebilir veya tamamen yeni fragment'lar ayırabilir, bu da nrfrags ve frag değişkenlerinin eski değerleri göstermesine neden olur. Bu durum, aşağıdakine benzer bir stacktrace ile kernel panic oluşmasına sebebiyet verebilir: [ 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 durumda, skb_orphan_frags() çağrısı nr_frags değerini güncellemiş ancak skb_segment() içindeki yerel nrfrags değişkeninin güncelliğini yitirmesine neden olmuştur. Bu durum, kodun i >= nrfrags koşuluna erken ulaşmasına ve NULL olan list_skb işaretçisini kullanarak bir sonraki frag_skb'ye geçmeye çalışmasına yol açarak kernel panic oluşturmuştur. Zero copy fonksiyonlarının çağrılması işlemi, frags ve nr_frags kullanılmadan öncesine taşınmıştır.
Nasıl düzeltilir
- linux linux_kernel4.19.295, 5.4.257, 5.10.195, 5.15.132, 6.1.53, 6.4.16, 6.5.3 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| 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 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.