CVE-2026-80849 in Linux
Zusammenfassung
von VulDB • 04.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/tcp-ao: Behebung eines Use-After-Free von current_key bei der Wiederherstellung der Verbindung zu einem anderen Peer
tcp_inbound_ao_hash() wird aufgerufen, bevor bh_lock_sock_nested() übernommen wird, wobei lediglich rcu_read_lock() gehalten ist. Im schnellen Pfad für etablierte Sockets, wenn die vom Peer gesendete rnext_keyid von current_key->sndid abweicht, wird der vom Peer angeforderte Schlüssel nachgeschlagen und in current_key gespeichert. Die Suche erfolgt innerhalb der RCU-Leseseite (RCU read side), aber current_key lebt länger als diese.
Wenn der Socket getrennt wird und connect() erneut für einen anderen Peer aufgerufen wird, entfernt tcp_ao_connect_init() jeden Schlüssel, der nicht mit dem neuen Peer übereinstimmt, und gibt ihn über call_rcu() frei. Wenn current_key auf einen solchen Schlüssel zeigt, wird er auf NULL gesetzt.
Der schnelle Pfad liest sk_state nur einmal beim Eintritt, sodass ein Softirq, das in den Socket eindringt, während dieser noch etabliert war, current_key aktualisieren kann, nachdem die Schleife bereits durchlaufen wurde. Die Aktualisierung erfolgt innerhalb der RCU-Leseseite, daher kommt sie vor dem call_rcu()-Callback, und sobald der Callback den Schlüssel freigibt, zeigt current_key auf freigegebenen Speicher (freed memory).
Die nächste Übertragung greift in tcp_get_current_key() auf diesen Zeiger zu. tcp_ao_transmit_skb() liest dann den Verkehrsschlüssel aus dem freigegebenen Objekt, was das Use-After-Free darstellt.
Warten Sie eine Grace-Periode (Gnadenfrist), bevor getrennt wird, und nur wenn ein Schlüssel entfernt werden soll. Zum Zeitpunkt des Aufrufs von tcp_connect() befindet sich der Socket bereits im Zustand TCP_SYN_SENT, und TCP_AO_ESTABLISHED enthält nicht TCPF_SYN_SENT, sodass ein Softirq, das nach dem Warten eindringt, den schnellen Pfad nicht erreichen kann, und diejenigen, die sich bereits darin befinden, sind fertig. Die vorhandene NULL-Handhabung in der Schleife ist dann ausreichend.
If you want to get best quality of vulnerability data, you may have to visit VulDB.