CVE-2026-68138
net/sched: qdisc_rtab_list gegen gleichzeitiges get/put serialisieren
- Veröffentlicht
- 10.08.2026
- Aktualisiert
- 23.08.2026
- CNA zuweisen
- Linux
- Beweise beobachtet
- 19.08.2026
Primäres CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HNiedrig · nächste 30 Tage
- Perzentil
- 21,0 %
- Modelldatum
- 21.09.2026
EPSS ist eine statistische Schätzung, keine Gewissheit oder ein Maß für die Auswirkung. Kombinieren Sie es mit CVSS, KEV-Status, Belichtung und Ihrer Umgebung.
Zusammenfassung
Im Linux-Kernel wurde die folgende Schwachstelle behoben: net/sched: qdisc_rtab_list gegen gleichzeitiges get/put serialisieren qdisc_get_rtab() und qdisc_put_rtab() verändern die prozessglobale einfach verkettete Liste qdisc_rtab_list sowie einen einfachen nicht-atomaren 'int refcnt' ohne Sperre. Dies war nur sicher, weil jeder Aufrufer historisch den RTNL-Mutex hielt, der alle Rate-Table-Lookups, Einfügungen und Freigaben serialisierte. Diese Invariante gilt nicht mehr. cls_flower setzt TCF_PROTO_OPS_DOIT_UNLOCKED, sodass tc_new_tfilter() für sie rtnl_held == false beibehält und TCA_ACT_FLAGS_NO_RTNL setzt. Dieses Flag propagiert über tcf_exts_validate_ex() -> tcf_action_init() -> tcf_action_init_1() -> tcf_police_init(), das qdisc_get_rtab()/qdisc_put_rtab() aufruft, während der RTNL-Mutex NICHT gehalten wird. Zwei RTM_NEWTFILTER-Anfragen auf verschiedenen CPUs, die jeweils einen Flower-Filter mit einer Police-Action mit derselben Rate hinzufügen, konkurrieren dann um qdisc_rtab_list und um den nicht-atomaren refcnt, was zu einem Use-after-Free / Double-Free der kmalloc-2k-Struktur struct qdisc_rate_table führt. qdisc_rtab_list ist eine einzelne globale Liste (nicht pro Netns), sodass das beschädigte Objekt systemweit gemeinsam genutzt wird. BUG: KASAN: slab-use-after-free in qdisc_put_rtab+0x12f/0x160 qdisc_put_rtab+0x12f/0x160 tcf_police_init+0xda9/0x1590 tcf_action_init_1+0x460/0x6b0 tcf_action_init+0x439/0xa40 tcf_exts_validate_ex+0x42d/0x550 fl_change+0xddd/0x7da0 tc_new_tfilter+0xaa7/0x2420 rtnetlink_rcv_msg+0x95e/0xe90 das zum Cache kmalloc-2k der Größe 2048 gehört Schützen Sie qdisc_rtab_list und den Refcount mit einer dedizierten Spinlock. Die (schlafende, GFP_KERNEL) Allokation in qdisc_get_rtab() wird vor dem Erwerb der Sperre durchgeführt; wenn ein gleichzeitiger Inserter in der Zwischenzeit eine identische Tabelle hinzugefügt hat, wird die frisch allokierte unter der Sperre freigegeben, sodass kein Duplikat ausläuft. qdisc_put_rtab() dekrementiert nun den Refcount und entkoppelt unter derselben Sperre.
Quellen
3Verantwortungsvoller Umgang
Verwenden Sie Schwachstelleninformationen nur auf Systemen, die Sie besitzen oder zu deren Testen Sie berechtigt sind. Kitploit verlinkt auf öffentliche Forschungsmetadaten und speichert keinen Exploit-Code oder bösartige Payloads.