Sony potrebbe aver corretto recentemente una vulnerabilità su console PlayStation 5, stando ad un recente rapporto apparso sulla piattaforma di bug bounty HackerOne.
Ad aver rivelato la vulnerabilità il ricercatore di sicurezza m00nbsd, Sony ha valutato la gravità della vulnerabilità come medio-bassa assegnando al ricercatore un premio di tremila dollari.
SMAP bypass in the PlayStation 5: https://t.co/di96hx1H9M
— ~ (@m00nbsd) May 27, 2021
Secondo il rapporto, la vulnerabilità permetterebbe di bypassare la funzione di sicurezza SMAP (Supervisor Mode Access Prevention) utilizzata dalla CPU x86 della console PlayStation 5.
Sommario
SMAP è una funzionalità di sicurezza sulle CPU x86, che impedisce a ring0 di leggere/scrivere su pagine ring3, rendendo più difficile lo sfruttamento di intere classi di vulnerabilità.
C’è una vulnerabilità in FreeBSD 12 che permette a SMAP di essere aggirato in userland. C’è un’alta probabilità che riguardi la PS5, ma non sono riuscito ad accedere a un firmware PS5 per confermarlo.
Questa vulnerabilità riduce le proprietà di sicurezza del sistema operativo ed è un elemento costitutivo per le catene di sfruttamento.
Dettagli
Con SMAP abilitato, quando %RFLAGS.AC
viene cancellato, il kernel eseguirà un errore di pagina se tenta di accedere a una pagina contrassegnata come “user page”. Quando %RFLAGS.AC
è impostato, il kernel può accedere alle pagine utente come se SMAP non fosse abilitato.
Nel kernel di FreeBSD esistono alcune funzioni che impostano temporaneamente %RFLAGS.AC
per accedere alle pagine utente: le funzioni copyin()
e copyout()
.
Queste funzioni sono utilizzate in tutte le chiamate di sistema e sono gli unici modi in cui il kernel può copiare dati da/a userland.
Queste funzioni gestiscono gli errori con grazia, cioè se userland passa un indirizzo non mappato e il kernel tenta di copiare i dati da esso, le funzioni restituiranno semplicemente un errore senza kernel panic.
C’è un bug nella gestione degli errori di queste funzioni. Tipicamente copyin()
è implementato come segue:
copy_fault
viene registrato in pcb_onfault
all’inizio, quindi viene impostato %RFLAGS.AC
, viene eseguita la copia e %RFLAGS.AC
viene cancellato.Se la copia fallisce per qualsiasi motivo, viene sollevata un’eccezione, il gestore trap()
vede che pcb_onfault
ha un puntatore registrato e semplicemente IRET
torna al puntatore che è stato registrato.
copy_fault
non cancella %RFLAGS.AC
, il che significa che rimane impostato dopo il ritorno di copyin()
/copyout()
. Il resto della syscall verrà quindi eseguito con SMAP effettivamente disabilitato, fino a quando il kernel non ritorna nell’area utenti dove lo stato SMAP viene ripristinato alla normalità.Fix
Aggiungere un’istruzione clac
in copy_fault
per cancellare %RFLAGS.AC
:
Impatto
Userland può aprire finestre in cui il kernel viene eseguito con SMAP disabilitato. La mancanza di SMAP rende lo sfruttamento delle vulnerabilità comuni facile/banale.
Fonte: hackerone.com
Salve, volevo chiedere una cosa che non riguarda questo articolo. In pratica se faccio un upgrade ps4 a ps5 sulla mia ps5 con il mio account poi se passo il disco ps4 ad un mio amico lo puo fare anche lui? O si puo riscattare una volta sola?
Prendiamo in esempio Fifa 21, è possibile eseguire l’upgrade contattando il supporto EA al fine di convalidare l’acquisto utilizzando le informazioni legate al tuo account, in pratica il tuo amico non potrà eseguire l’upgrade, mi dispiace