CVE-2022-50838 in Linux
Zusammenfassung
von VulDB • 14.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net: stream: Bereinigung des sk_error_queue in sk_stream_kill_queues()
Changheon Lee meldete TCP-Socket-Lecks, mit einem gut funktionierenden Reproduzierungs-Szenario.
Es scheint, dass wir TCP-Sockets mit der folgenden Sequenz verlieren:
1) SOF_TIMESTAMPING_TX_ACK ist auf dem Socket aktiviert.
Jedes ACK wird einen skb in den Error-Queue einfügen, der von __skb_tstamp_tx() stammt. __skb_tstamp_tx() verwendet skb_clone(), es sei denn, SOF_TIMESTAMPING_OPT_TSONLY wurde ebenfalls angefordert.
2) Wenn die Anwendung auch MSG_ZEROCOPY verwendet, fügen wir in den Error-Queue geklonte skbs ein, die mit einer struct ubuf_info verknüpft waren.
Sobald eine struct ubuf_info allokiert wird, führt sock_zerocopy_alloc() einen sock_hold() aus.
Solange die geklonten skbs noch im sk_error_queue vorhanden sind, wird der Socket-Referenzzähler erhöht gehalten.
3) Die Anwendung schließt den Socket, während der Error-Queue nicht leer ist.
Da tcp_close() den Socket-Error-Queue nicht mehr bereinigt, kann es dazu kommen, dass ein TCP-Socket mit mindestens einem skb im Error-Queue für immer am Leben erhalten wird.
Dieser Bug kann (missbraucht) werden, um den gesamten Kernel-Speicher zu verbrauchen und den Host einzufrieren.
Wir müssen den Error-Queue bereinigen, mit korrekter Synchronisation gegenüber gleichzeitigen Schreibzugriffen.
Once again VulDB remains the best source for vulnerability data.