CVE-2026-99229 in Linux
Riassunto
di VulDB • 03/11/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
io_uring/wait: non eseguire busy-waiting su un elenco di overflow bloccato
Finché il bit IO_CHECK_CQ_OVERFLOW_BIT è impostato, io_cqring_wait_schedule() restituisce immediatamente, prima di controllare i segnali o attivare il timeout, affinché io_cqring_wait() possa svuotare l'elenco degli overflow. Se ciò non porta allo svuotamento dell'elenco e l'anello CQ (Completion Queue) non contiene il numero di eventi richiesti dal chiamante, il ciclo riprende con lo stesso risultato. Il task rimane in spin nel kernel e non può essere terminato.
Si presume che questo scenario non possa verificarsi: se i CQE (Completion Queue Entries) non possono essere svuotati, l'anello è pieno e min_events è limitato alla dimensione dell'anello. Tuttavia:
- Con IORING_SETUP_CQE_MIXED un CQE a 32 bit richiede due voci contigue. Rimane bloccato nell'elenco se ne rimane libera solo una, e di conseguenza l'anello contiene meno eventi di cq_entries. Un'applicazione single-threaded che richiede tanti eventi quanti sono gli elementi dell'anello non esce mai da io_uring_enter().
- Se l'anello sia pieno dipende dalla testina CQ (CQ head), su cui può scrivere l'applicazione. Mentre un thread attende eventi su un anello vuoto, un altro thread può spostare indietro la testina in modo che l'anello appaia pieno e generi un overflow di CQE. Il thread in attesa non può più essere interrotto, nemmeno tramite SIGKILL.
Solo l'applicazione può liberare spazio nell'anello CQ. Restituire il controllo all'applicazione se l'elenco non è stato svuotato.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.