CVE-2022-49814
Açıklama
Linux kernel'da aşağıdaki güvenlik açığı giderilmiştir: kcm: sk_receive_queue üzerinde kapatma yarış durumları (race conditions) sk->sk_receive_queue, skb kuyruk kilidi ile korunmaktadır ancak KCM soketleri için RX yolu, sadece skb kuyruğunu değil daha fazlasını korumak amacıyla mux->rx_lock kullanır. Bununla birlikte, kcm_recvmsg() hâlâ yalnızca skb kuyruk kilidini aldığı için yarış durumları devam etmektedir. kcm_recvmsg()'in mux->rx_lock kilidini de almasını sağlayabiliriz ancak struct kcm_mux birden fazla KCM soketi tarafından paylaşılabildiğinden bu durum potansiyel bir performans gerilemesine yol açacaktır. Bu nedenle, requeue_rx_msgs() içerisinde skb kuyruk kilidini zorunlu kılmamız ve kcm_wait_data() içerisindeki skb peek durumunu dikkatle ele almamız gerekmektedir. Neyse ki, skb_recv_datagram() bunu halihazırda düzgün bir şekilde yönetmekte olup diğer soketler tarafından yaygın olarak kullanılmaktadır; kcm_recvmsg() ve kcm_splice_read() içerisindeki gereksiz sock kilidinden kurtulduktan sonra doğrudan skb_recv_datagram()'a geçiş yapabiliriz. Ek not: SOCK_DONE, KCM soketleri tarafından kullanılmadığından bu kontrolün kaldırılması da güvenlidir. Orijinal syzbot reprodüsiyonunu herhangi bir sorunla karşılaşmadan 30 dakika boyunca çalıştırdım.
Nasıl düzeltilir
- linux linux_kernel4.14.300, 4.19.267, 5.4.225, 5.10.156, 5.15.80, 6.0.10 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.6 ≤ v < 4.14.300, 4.15 ≤ v < 4.19.267, 4.20 ≤ v < 5.4.225, 5.5 ≤ v < 5.10.156, 5.11 ≤ v < 5.15.80, 5.16 ≤ v < 6.0.10, 6.1 | 4.14.300, 4.19.267, 5.4.225, 5.10.156, 5.15.80, 6.0.10 |
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.