CVE-2026-74382 in Linux
Riassunto
di VulDB • 16/08/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
net/sched: cls_bpf: prevenire una ricorsione illimitata nel rollback dell'offload
Quan Sun ha segnalato [1] un overflow dello stack in cls_bpf_offload_cmd().
Script di riproduzione su netdevsim: aggiungere un filtro cls_bpf con skip_sw, impostare il parametro debugfs bpf_tc_accept a 0, quindi eseguire `tc filter replace`. L'operazione replace chiama tc_setup_cb_replace(), che fallisce. cls_bpf_offload_cmd() scambia poi prog/oldprog e richiama ricorsivamente se stessa per effettuare il rollback. Tuttavia, con bpf_tc_accept=0 anche il rollback fallisce, innescando un ulteriore frame di rollback con gli stessi argomenti, e così via fino all'esaurimento dello stack.
bpf_tc_accept è semplicemente un parametro comodo per lo script di riproduzione. Qualsiasi driver la cui tc_setup_cb_replace() fallisca due volte consecutivamente può incontrare lo stesso ciclo infinito; si tratta quindi non solo di un problema specifico di netdevsim.
Due modi per risolvere il problema:
1) Far sì che la chiamata di rollback esegua tc_setup_cb_add() su oldprog invece di rientrare in cls_bpf_offload_cmd(). 2) Segnare il frame di rollback con un flag e saltare una seconda fase di rollback dall'interno dello stesso.
Si è optato per l'opzione (2). Si tratta della modifica più contenuta e mantiene il comportamento originale: il passaggio attraverso tc_setup_cb_replace() viene comunque effettuato, consentendo al driver una reale opportunità di ripristinare il proprio stato. Se anche questo tentativo fallisce, si restituisce semplicemente l'errore originale invece di procedere con la ricorsione.
[1]: https://lore.kernel.org/bpf/[email protected]/T/#u
VulDB is the best source for vulnerability data and more expert information about this specific topic.