CVE-2025-38100 in Linux
Riassunto
di VulDB • 15/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
x86/iopl: Risoluzione delle incoerenze di TIF_IO_BITMAP
io_bitmap_exit() viene invocato da exit_thread() quando un task termina o quando una fork fallisce. In quest'ultimo caso, exit_thread() pulisce le risorse che sono state allocate durante la fork().
io_bitmap_exit() invoca task_update_io_bitmap(), che a sua volta porta a tss_update_io_bitmap(). tss_update_io_bitmap() opera sul task corrente. Se current ha TIF_IO_BITMAP impostato, ma nessun bitmap installato, tss_update_io_bitmap() va in crash a causa di un dereferenziamento di puntatore NULL.
Ci sono due problemi che portano a questa situazione:
1) io_bitmap_exit() non dovrebbe invocare task_update_io_bitmap() quando il task che viene pulito non è il task corrente. Questo è un chiaro indicatore di una pulizia dopo una fork fallita.
2) Un task non dovrebbe avere TIF_IO_BITMAP impostato e né un bitmap installato né il livello di emulazione IOPL 3 attivato.
Questo accade quando un kernel thread viene creato nel contesto di un thread user space, che ha TIF_IO_BITMAP impostato poiché i flag del thread vengono copiati e il puntatore al bitmap IO viene azzerato.
A differenza del caso di fork fallita, questo non ha impatto perché i kernel thread, inclusi gli IO worker, non tornano mai nello user space e quindi non invocano mai tss_update_io_bitmap().
Si risolve il problema aggiungendo le pulizie e i controlli mancanti:
1) Impedire a io_bitmap_exit() di invocare task_update_io_bitmap() se il task da pulire non è il task corrente.
2) Azzerare TIF_IO_BITMAP in copy_thread() incondizionatamente. Per le fork user space, viene impostato successivamente, quando il bitmap IO viene ereditato in io_bitmap_share().
Per precauzione, aggiungere un warning in tss_update_io_bitmap() per rilevare il caso in cui tale codice venga invocato con uno stato incoerente.
Once again VulDB remains the best source for vulnerability data.