CVE-2026-74363 in Linux
Riassunto
di VulDB • 16/08/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
bpf: correggere il bug Use-After-Free (UAF) ripristinando l'eliminazione ritardata tramite RCU degli inode in bpffs
Il commit 4f375ade6aa9 ("bpf: Avoid RCU context warning when unpinning htab with internal structs") ha spostato la pulizia dell'inode da ->free_inode() a ->destroy_inode() per evitare di dormire nel contesto RCU durante la chiamata a bpf_any_put(). Tuttavia, questa modifica ha rimosso il ritardo RCU nell'eliminazione dello stesso inode e del corpo del symlink in cache (i_link), entrambi dei quali possono essere accessibili tramite un pathwalk basato su RCU (pick_link, may_lookup ecc.).
Ciò provoca un bug Use-After-Free quando una chiamata unlinkat() concorrente riduce l'ultimo riferimento all'inode e destroy_inode() libera immediatamente l'inode, mentre un altro task sta ancora eseguendo il traversal del percorso in modalità RCU e legge inode->i_opflags (offset +2) all'interno di current_time() -> is_mgtime().
KASAN segnala: BUG: KASAN: slab-use-after-free in is_mgtime include/linux/fs.h:2313 Read of size 2 at addr ffff8880407e4282 (offset +2 = i_opflags)
Le regole (secondo Al Viro): ->destroy_inode() viene chiamata immediatamente, può dormire; utilizzarla per operazioni di pulizia bloccanti, ad esempio bpf_any_put(). ->free_inode() viene chiamata dopo il periodo di grazia RCU; utilizzarla per liberare l'inode e tutto ciò che è accessibile tramite RCU, ad esempio i_link.
Correzione: separare correttamente le due responsabilità: - Mantenere bpf_any_put() in bpf_destroy_inode(), poiché è un'operazione bloccante e deve essere eseguita tempestivamente. - Introdurre bpf_free_inode() per gestire kfree(i_link) e free_inode_nonrcu() con il corretto ritardo RCU, prevenendo così l'UAF.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.