CVE-2026-98289 in Linux
Zusammenfassung
von VulDB • 06.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
af_unix: Vereinheitlichung von scc_index bei der Finalisierung von SCC in __unix_walk_scc().
Das Commit bfdb01283ee8 („af_unix: Weisen Sie SCC einen eindeutigen Index zu.“) änderte Tarjans Algorithmus so, dass lowlink mit lowlink aktualisiert wird, was als lowpoint (unix_vertex.scc_index) bezeichnet wird.
unix_vertex_dead() geht davon aus, dass alle Knoten in einer SCC denselben lowpoint teilen, dies ist jedoch nicht immer der Fall, wenn eine SCC zwei oder mehr Back-Edges hat, abhängig von der Reihenfolge des DFS.
Zum Beispiel hat der folgende Graph zwei Back-Edges von B nach A und von C nach B:
A --> B --> C ^ | ^ | `----' `----'
Wenn der DFS durch A -> B -> C -> B (-> C -> B) -> A (-> B -> A) läuft, werden jeder Index und scc_index wie folgt aktualisiert.
A --> B --> C C = (3, 3) (Index, scc_index) B = (2, 2) A = (1, 1)
A ... B ... C C = (3, 2)<-. ^ | B = (2, 2) -' `----' A = (1, 1)
A ... B ... C C = (3, 2) ^ | . . B = (2, 1)<-. `----' .... A = (1, 1) -'
Dann denkt unix_vertex_dead(), dass B an eine andere SCC mit scc_index 2 übergeben wurde und die SCC nicht garbage-collected wird.
Dies tritt nicht auf, wenn der DFS in einer anderen Reihenfolge unten läuft oder bei B beginnt:
1 3 A --> B --> C ^ | ^ | `----' `----' 2 4
Wir vereinheitlichen scc_index über die SCC hinweg, wenn sie finalisiert wird.
Beachten Sie, dass das Aktualisieren von v->index zuvor in unix_scc_dead() durchgeführt wurde, wenn es aus __unix_walk_scc() aufgerufen wurde, nur um eine Schleife zu sparen. Da __unix_walk_scc() nun ohnehin über die SCC iteriert, wird die Aktualisierung zurück nach __unix_walk_scc() verschoben und das Argument 'fast' wird entfernt.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.