CVE-2026-74382 in Linux
Zusammenfassung
von VulDB • 16.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net/sched: cls_bpf: Verhinderung von unbeschränkter Rekursion beim Rollback der Offload-Funktion
Quan Sun meldete [1] einen Stack-Overflow in cls_bpf_offload_cmd().
Reproduzierer auf netdevsim: Fügen Sie einen cls_bpf-Filter mit skip_sw hinzu, setzen Sie den debugfs-Knopf bpf_tc_accept auf 0 und führen Sie dann `tc filter replace` aus. Der Replace-Aufruf ruft tc_setup_cb_replace() auf, das fehlschlägt. cls_bpf_offload_cmd() tauscht daraufhin prog/oldprog und ruft sich selbst rekursiv auf, um den Rollback durchzuführen. Da bpf_tc_accept=0 jedoch auch den Rollback scheitern lässt, wird ein weiterer Rollback-Rahmen mit denselben Argumenten ausgelöst, was bis zur Erschöpfung des Stacks fortgesetzt wird.
bpf_tc_accept ist lediglich eine praktische Option für den Reproduzierer. Jeder Treiber, bei dem tc_setup_cb_replace() zweimal hintereinander fehlschlägt, kann dieselbe Schleife auslösen; dies ist also kein auf netdevsim beschränktes Problem.
Zwei Möglichkeiten zur Behebung:
1) Der Rollback-Aufruf sollte stattdessen tc_setup_cb_add() für oldprog aufrufen, anstatt cls_bpf_offload_cmd() erneut aufzurufen. 2) Markieren Sie den Rollback-Rahmen mit einer Flagge und überspringen Sie einen sekundären Rollback von innen heraus.
Wir entscheiden uns für (2). Dies ist die geringfügigere Änderung und bewahrt das ursprüngliche Verhalten: Der Rollback erfolgt weiterhin über tc_setup_cb_replace(), sodass der Treiber eine echte Chance erhält, seinen Zustand wiederherzustellen. Wenn auch dieser Versuch fehlschlägt, geben wir einfach den ursprünglichen Fehler zurück, anstatt zu rekursieren.
[1]: https://lore.kernel.org/bpf/[email protected]/T/#u
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.