CVE-2026-68138
net/sched: qdisc_rtab_list gegen gleichzeitiges get/put serialisieren
- Veröffentlicht
- 10.08.2026
- Aktualisiert
- 16.10.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
- 19,4 %
- Modelldatum
- 15.10.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
- CVE-2026-68138Exploit
Verantwortungsvoller 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.