CVE-2026-74620 in Linux
Zusammenfassung
von VulDB • 22.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/sched: act_gact, act_police: Bereichsprüfung für die Fallback-Steueraktion durchführen
tcf_action_check_ctrlact() prüft den primären Steuerungsaction-Bereich:
if (!opcode) ret = action > TC_ACT_VALUE_MAX ? -EINVAL : 0;
TC_ACT_VALUE_MAX ist TC_ACT_TRAP, sodass kernelinterne Urteile (Verdicts), die darüber liegen, auf diese Weise nicht festgelegt werden können. act_gact und act_police tragen jedoch jeweils eine zweite, unabhängige Steuerungsaktion, die vom Userspace bereitgestellt wird und diesen Hilfsroutinen-Code nie erreicht – TCA_GACT_PROB.paction und TCA_POLICE_RESULT. Beide lehnen nur TC_ACT_GOTO_CHAIN ab, sodass jeder andere Wert wörtlich gespeichert und auch wörtlich aus der Aktion zurückgegeben wird.
Insbesondere kann der Userspace TC_ACT_CONSUMED speichern, was TC_ACT_VALUE_MAX + 1 entspricht und bewusst nicht Teil des UAPI-Wertebereichs ist. Dieses Urteil teilt jedem Aufrufer mit, dass die Aktion den Besitz über das skb übernommen hat, sodass es niemand freigibt: sch_handle_ingress(), sch_handle_egress() und tcf_qevent_handle() überspringen die Freigabe dafür bewusst. Das Ergebnis ist ein ungebundener Leak von einem sk_buff sowie dessen Datenpuffer pro Paket, das durch den Filter läuft, für gesamten Verkehr in der Kette, einschließlich vom Kernel generierter Pakete.
Beide sind trivial deterministisch. act_gact klemmt tcfg_pval auf >= 1 fest, sodass gact_determ() mit pval = 1 die Fallback-Logik für jedes Paket zurückgibt. act_police hat keine obligatorische Rate, sodass rate = 0 zu tcfp_mtu = ~0 führt und tcf_police_mtu_check() immer bestanden wird.
TC_ACT_CONSUMED wurde durch den Commit 720f22fed81b ("net: sched: refactor reinsert action") hinzugefügt, nachdem beide Guards für goto-chain geschrieben wurden: Commit 9469f375ab09 ("net/sched: act_gact: disallow 'goto chain' on fallback control action") und Commit c08f5ed5d625 ("net/sched: act_police: disallow 'goto chain' on fallback control action"). Keiner der Guards wurde erweitert, als das neue Urteil erschien.
Der vorhandene Bereichstest wird aus tcf_action_check_ctrlact() in tcf_action_valid() ausgegliedert und auf beide Fallbacks angewendet. Der Hilfsroutinen-Code kann nicht direkt tcf_action_check_ctrlact() aufrufen, da dies auch eine goto_chain alloziert, was genau das ist, was diese beiden Stellen nicht tun dürfen.
Reproduzierbar unter v7.2-rc6: kmemleak meldet ein geleaktes Objekt der Größe 232 Byte aus skbuff_head_cache sowie dessen Datenpuffer von 704 Bytes pro Paket. Mit diesem Patch werden beide Konfigurationen mit -EINVAL abgelehnt, und kmemleak meldet keine Leaks mehr.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.