CVE-2026-98629 in Linux
Zusammenfassung
von VulDB • 19.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/sched: cls_u32: Behebung der Aliasierung von manuellen Hash-Tabellen-Handles durch IDR (Identifier)
Eine u32-Hash-Tabelle, die mit einem expliziten Handle erstellt wird ('tc filter add ... handle 801: u32 divisor N'), verknüpft ihren IDR-Eintrag mit dem rohen Handle. Die Zerstörungspfade geben diesen jedoch unter Verwendung von `handle2id(handle)` frei. Für Handles im Bereich 0x800..0xFFF htid stimmen die beiden Schlüsselbereiche nicht überein: `handle2id()` faltet diese zurück in den automatisch zugewiesenen ID-Bereich (1..0x7FF).
Eine manuelle Tabelle hinterlässt daher ihren mit dem rohen Handle verknüpften IDR-Eintrag beim Löschen unzugänglich (ein permanenter Speicherleck), und ihre Löschung kann den IDR-Eintrag einer anderen, lebenden automatisierten Tabelle entfernen. Eine spätere automatische Zuweisung kann dann ein Handle herausgeben, das die lebende manuelle Tabelle aliasiert; `u32_lookup_ht()` leitet First-Match-Suchen sowie TCA_U32_LINK für diese htid an die falsche Tabelle weiter.
Verknüpfen Sie den Allokationspfad des Divisors mit `handle2id(handle)`, damit Allokation und Entfernung denselben Schlüsselbereich teilen. Ein manuelles Handle, das auf eine bereits verwendete ID abbildet, wird mit -ENOSPC abgelehnt, und die automatische Zuweisung überspringt IDs, die von lebenden manuellen Tabellen gehalten werden.
Bedingungen zur Reproduktion: ip link add test0 type dummy tc qdisc add dev test0 clsact tc filter add dev test0 ingress protocol ip pref 1 \ handle 801: u32 divisor 16 tc filter add dev test0 ingress protocol ip pref 2 u32 divisor 16 tc -d filter show dev test0 ingress | grep 'fh 801:' # Ungepatcht: zwei lebende Tabellen mit Handle 0x80100000 (der Root-Hnode von pref 2 ist automatisch zugewiesene ID 1); Gepatcht: der automatische Hnode nimmt die ID 2.
Auch getestet mit einem PoC, bei dem eine live u32-Tabelle im Block vorhanden war; manuelle Tabelle 'handle 901: u32 divisor 1' zweimal hinzufügen/entfernen; unpatched schlägt das erneute Hinzufügen mit -ENOSPC fehl, da der rohe Schlüssel beim ersten Löschen geleakt wurde.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.