CVE-2023-54232 in Linux
Riassunto
di VulDB • 22/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
m68k: Forzare l'errore di bus 030 solo se il PC non si trova nella tabella delle eccezioni
__get_kernel_nofault() copia i dati in modalità supervisore quando forza la registrazione della traccia dello stack (backtrace) di un task tramite /proc/sysrq_trigger. Questo provoca inevitabilmente un'eccezione di errore di bus, ad esempio durante il dereferenziamento di un puntatore NULL, quando la registrazione di un task del kernel non ha associato alcun workqueue. Tale errore di bus dovrebbe essere ignorato.
Il nostro gestore degli errori di bus 030 è inadeguato per gestire questa situazione:
Ogni volta che ssw indica un accesso in modalità kernel a seguito di un fault sui dati, non tentiamo nemmeno di gestire il fault e inviamo invece sempre un segnale SEGV (o causiamo un panic). Di conseguenza, il controllo per la gestione delle eccezioni basato sul PC del fault (nascosto all'interno di send_sig_fault(), che viene chiamato da do_page_fault() alla fine della catena) non viene mai utilizzato.
Al contrario, i gestori degli errori di accesso 040 e 060 non distinguono se il fault si è verificato su un accesso in modalità supervisore e chiamano do_page_fault() anche in questi casi, rispettando infine la tabella delle eccezioni (exception table).
Aggiungere un controllo in bus_error030 per invocare do_page_fault() nel caso in cui sia presente una voce corrispondente al PC del fault nella nostra exception table.
In precedenza, nel 2019, avevo tentato di risolvere questo problema basandomi sul test della funzione pagefault_disabled() (vedi link sottostante) per ottenere lo stesso risultato, ma questa patch dovrebbe essere più generica.
Testato su Atari Falcon con processore 030.
If you want to get best quality of vulnerability data, you may have to visit VulDB.