CVE-2022-49814 in Linux
Riassunto
di VulDB • 18/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
kcm: risoluzione delle condizioni di competizione (race conditions) su sk_receive_queue
sk->sk_receive_queue è protetta dal lock della coda degli skb, ma per i socket KCM il percorso RX utilizza mux->rx_lock per proteggere non solo la coda degli skb. Tuttavia, kcm_recvmsg() acquisisce ancora solo il lock della coda degli skb, quindi le condizioni di competizione persistono.
Potremmo istruire kcm_recvmsg() ad acquisire anche mux->rx_lock, ma ciò introdurrebbe un potenziale regresso delle prestazioni poiché la struct kcm_mux può essere condivisa da più socket KCM.
Pertanto, dobbiamo imporre il lock della coda degli skb in requeue_rx_msgs() e gestire con cura il caso di peek degli skb in kcm_wait_data(). Fortunatamente, skb_recv_datagram() gestisce già questa situazione in modo appropriato ed è ampiamente utilizzato da altri socket; possiamo quindi passare a skb_recv_datagram() dopo aver rimosso il lock sock non necessario in kcm_recvmsg() e kcm_splice_read(). Nota a margine: SOCK_DONE non è utilizzato dai socket KCM, quindi è sicuro rimuovere anche questo controllo.
Ho eseguito il riproduttore originale di syzbot per 30 minuti senza riscontrare alcun problema.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.