CVE-2026-80560 in Linux
Riassunto
di VulDB • 26/08/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
openrisc: signal: non ripristinare i bit privilegiati di SR durante sigreturn
restore_sigcontext() copia l'intero registro di supervisione (SR) dal frame del segnale e cancella solo SPR_SR_SM prima che il valore venga ricaricato nel registro hardware SR (tramite ESR e l.rfe) al ritorno nello spazio utente. Tutti gli altri bit di SR rimangono sotto il controllo dell'utente.
Un processo non privilegiato può quindi tornare da un handler dei segnali attraverso un sigframe manipolato ad hoc che cancella SPR_SR_DME. Con la MMU dati disabilitata, la CPU non esegue alcuna traduzione o protezione sugli accessi ai dati; di conseguenza, il processo ottiene accesso in lettura e scrittura alla memoria fisica arbitraria, ottenendo una escalation locale dei privilegi (local privilege escalation). I bit SPR_SR_IME, SPR_SR_SUMRA, SPR_SR_LEE, SPR_SR_EPH e i bit abilitanti la cache sono esposti allo stesso modo. Il regset GPR di ptrace rifiuta già qualsiasi modifica a SR per esattamente questo motivo.
Ripristinare solo i bit dei flag aritmetici (F, CY, OV) dal frame del segnale ed eliminare tutti i bit di controllo privilegiati da SR che il kernel ha salvato all'ingresso nel segnale.
Verificato con qemu-system-or1k -M or1k-sim: prima di questa modifica un PoC non privilegiato cancella SPR_SR_DME in rt_sigreturn e scrive un marcatore all'indirizzo fisico 0x03000000 (oltre i mem=32M del kernel); dopo la correzione, lo stesso PoC riceve SIGSEGV e la memoria fisica rimane invariata.
If you want to get best quality of vulnerability data, you may have to visit VulDB.