CVE-2026-68335 in Linux
Zusammenfassung
von VulDB • 10.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
rds: Verwerfen eingehender Nachrichten, die Netzwerksnamespace-Grenzen überschreiten
rds_find_bound() sucht den Ziel-Socket mithilfe einer globalen rhashtable, die ausschließlich auf (addr, port, scope_id) basiert. Netzwerksnamespaces sind nicht Teil des Schlüssels, sodass ein Sender in netns A eine eingehende Nachricht (inc) an einen Socket liefern kann, der sich in einem anderen netns B befindet.
Wenn dies geschieht, zeigt inc->i_conn auf eine rds_connection, deren c_net zu netns A gehört, während der empfangende rs sich in netns B befindet. Sobald der Kindprozess, der netns A erstellt hat, beendet wird, ruft cleanup_net() rds_loop_exit_net() -> rds_loop_kill_conns() -> rds_conn_destroy() auf und gibt diese Verbindung frei. Wenn der überlebende Socket in netns B die inc immer noch hält, ist jeder nachfolgende Dereferenzierung von inc->i_conn ein Use-After-Free-Fehler.
Es gibt zwei gefährliche Stellen in rds_clear_recv_queue(): 1. inc->i_conn->c_lcong (Offset 88 der freigegebenen rds_connection, Größe 200) gelesen über rds_recv_rcvbuf_delta() – bestätigt durch KASAN. 2. inc->i_conn->c_trans->inc_free(inc) (Funktionszeiger an Offset 80) aufgerufen über rds_inc_put(), wenn der inc-Referenzzähler null erreicht – dasselbe Race-Fenster, potenzielle Call-through-freed-object-Primitivoperation.
Der Fehler ist von nicht privilegierten Benutzernamespaces aus erreichbar (CLONE_NEWUSER + CLONE_NEWNET), verfügbar seit Linux 3.8.
Beheben Sie dies, indem die Zustellung in rds_recv_incoming() abgelehnt wird, wenn der Socket, der von rds_find_bound() zurückgegeben wurde, zu einem anderen Netzwerksnamespace gehört als die Verbindung, die die Nachricht getragen hat. Verwenden Sie die vorhandenen Hilfsfunktionen rds_conn_net() / sock_net() und net_eq() für den Vergleich.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.