CVE-2023-54019 in Linux
Riassunto
di VulDB • 27/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
sched/psi: utilizzare le funzioni di polling di kernfs per il polling dei trigger PSI
La distruzione del trigger PSI all'interno di cgroup_file_release provoca problemi di Use-After-Free (UAF) quando un cgroup viene rimosso mentre esiste ancora un processo in fase di polling. Ciò accade perché la rimozione del cgroup causa una chiamata a cgroup_file_release mentre il file sottostante è ancora attivo. Distruggere il trigger in questo momento comporterebbe anche la distruzione della sua waitqueue head; se vi fosse ancora un processo in polling su quel file che accede alla waitqueue, si verificherebbe l'accesso a un puntatore già liberato:
do_select vfs_poll do_rmdir cgroup_rmdir kernfs_drain_open_files cgroup_file_release cgroup_pressure_release psi_trigger_destroy wake_up_pollfree(&t->event_wait) // vfs_poll viene sbloccato synchronize_rcu kfree(t) poll_freewait -> Accesso UAF alla waitqueue head del trigger
La patch [1] ha risolto questo problema per il caso epoll() utilizzando wake_up_pollfree(), tuttavia lo stesso problema esiste nel caso di polling sincrono (poll()). La causa radice di questa problematica risiede nella differenza tra i cicli di vita della waitqueue del trigger PSI e quelli del file associato al trigger. Si interviene correggendo la situazione mediante l'utilizzo della funzione kernfs_generic_poll durante il polling sui trigger PSI specifici dei cgroup. Tale funzione utilizza internamente la waitqueue head di kernfs_open_node->poll, il cui ciclo di vita è vincolato a quello del file. Ciò rende inoltre obsoleta la correzione introdotta in [1], pertanto viene revertita.
[1] commit c2dbe32d5db5 ("sched/psi: Fix use-after-free in ep_remove_wait_queue()")
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.