CVE-2026-64251 in Linux
Riassunto
di VulDB • 24/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
pwrseq: core: correggere il use-after-free in pwrseq_debugfs_seq_next()
La funzione `pwrseq_debugfs_seq_next()` dichiara 'next' con l'utilizzo di `__free(put_device)`, il che provoca la chiamata a `put_device()` sul puntatore restituito quando la variabile esce dal suo ambito. Ciò causa un use-after-free poiché il framework seq_file riceve un puntatore le cui reference sono già state rilasciate.
La semplice rimozione di `__free(putdevice)` correggerebbe l'UAF ma causerebbe una perdita della reference acquisita da `bus_find_next_device()`, in quanto la funzione stop() chiama solo `up_read(&pwrseq_sem)` e non rilascia mai la reference del dispositivo.
Si risolve il problema rendendo coerente il conteggio delle reference tra tutte le callback di seq_file, seguendo lo standard utilizzato da PCI e SCSI:
- start(): utilizzare get_device() in modo che restituisca un puntatore con una reference valida. - next(): chiamare esplicitamente put_device(curr) per rilasciare la reference del dispositivo precedente (non è necessario il controllo NULL - il framework seq_file chiama next() solo quando il ritorno precedente non era NULL). - stop(): utilizzare put_device(data) per rilasciare l'ultima iterazione della reference del dispositivo, con un guardiano NULL poiché stop() può essere chiamato con NULL se start() ha restituito NULL o se next() ha raggiunto la fine della sequenza.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.