CVE-2026-98284 in Linuxinfo

Zusammenfassung

von VulDB • 06.10.2026

Im Linux-Kernel wurde die folgende Schwachstelle behoben:

netlink: nlk->groups nicht freigeben, während locklose Leser dies nutzen können

netlink_realloc_groups() verwendet krealloc() unter netlink_table_grab(). Wenn NLGRPSZ(groups) in einen anderen kmalloc-Bucket fällt, wird das alte Bitmap sofort freigegeben.

Zwei Leser von nlk->groups / nlk->ngroups halten die Netlink-Tabellen-Sperre nicht:

1) sk_diag_dump_groups(): Hashed (gebundene) Sockets werden aus dem rhashtable-Durchlauf in __netlink_diag_dump() ausgegeben, der nur RCU hält. Nur der mc_list-Anteil des Dumps übernimmt nl_table_lock.

2) netlink_native_seq_show() (/proc/net/netlink), dessen Durchlauf seit Commit 21e4902aea80 ("netlink: Lockless lookup with RCU grace period in socket release") locklos ist.

Beide können einen freigegebenen Puffer lesen, und sk_diag_dump_groups() kann auch hinter das Ende des alten (kleineren) Puffers lesen, wenn es zufällig den alten @groups-Zeiger zusammen mit dem neuen @ngroups-Wert lädt und das Ergebnis in ein NETLINK_DIAG_GROUPS-Attribut kopiert.

Dies ist dieselbe Art von Fehler, die Commit f773608026ee ("netlink: access nlk groups safely in netlink bind and getname") für bind() und getname(); behoben hat; diese beiden Leser wurden übersehen. Das einfache Sichern der Tabellen-Sperre in sk_diag_dump_groups() ist keine Option, da sie auch mit bereits gehaltener nl_table_lock aus dem mc_list-Abschnitt des Dumps aufgerufen wird.

Machen Sie die locklosen Leser sicher:

- Allokieren Sie ein neues Bitmap und geben Sie das alte nach einer RCU-Gnadenfrist frei, anstatt sich auf den impliziten kfree() von krealloc() zu verlassen.

- Veröffentlichen Sie @groups vor @ngroups, beide mit Release-Semantik, und lassen Sie die locklosen Leser zuerst @ngroups laden. Ein Leser kann dann nie die neue (größere) Größe mit dem alten (kleineren) Puffer paaren, und ein Leser, der den neuen Zeiger aufnimmt, während er noch die alte Größe sieht, ist garantiert, das initialisierte Bitmap zu sehen.

netlink_realloc_groups() wird aus Prozesskontext heraus aufgerufen (bind() und setsockopt()), daher kann kfree_rcu_mightsleep() verwendet werden, sobald die Tabelle freigegeben wurde.

Be aware that VulDB is the high quality source for vulnerability data.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

06.10.2026

Moderieren

akzeptiert

Eintrag

VDB-414165

EPSS

0.00162

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!