Home Apple Scovato un possibile nuovo exploit nel webKit per console PlayStation 4 e...

Scovato un possibile nuovo exploit nel webKit per console PlayStation 4 e PlayStation 5

152
0

Il developer notzecoxao sempre sul pezzo ha condiviso una dettagliata analisi di un possibile exploit nel webKit per console PlayStation 4 e PlayStation 5.

I dettagli sono stati descritti dal team di sicurezza Google Project Zero, la vulnerabilità CVE-2022-22620: Use-after-free è presente sul browser Safari di Apple, mentre lo stesso motore di rendering viene utilizzato anche all’interno del browser della console PlayStation 4.

La vulnerabilità presente nell’API della cronologia consente l’accesso (e la modifica) a una pila di pagine visitate nel frame corrente e archiviate come file SerializedScriptValue.

Questa API espone un getter per state e un metodo replaceState che consente di sovrascrivere la voce della cronologia “più recente”.

Il bug si presenta perché FrameLoader::loadInSameDocument prende state come argomento (stateObject), ma non aumenta il conteggio dei riferimenti.

Solo un oggetto HistoryItem contiene un riferimento a stateObject, mentre loadInSameDocument può attivare un callback nel JavaScript dell’utente tramite l’evento onblur.

Il callback dell’utente può chiamare replaceState per sostituire lo state di HistoryItem con un nuovo oggetto, eliminando quindi l’unico riferimento a stateObject.

Quando il callback ritorna, loadInSameDocument utilizzerà ancora questo oggetto free’d nella sua chiamata a statePopped, portando ad un use-after-free.

Quando il callback ritorna, loadInSameDocumentutilizzerà ancora questo oggetto free’d nella sua chiamata a statePopped, portando all’uso dopo-libero.

Quando viene chiamato loadInSameDocument, cambia lo stato attivo sull’elemento su cui scorre. Se impostiamo lo stato attivo su un elemento diverso prima dell’esecuzione di loadInSameDocument, l’evento blur verrà attivato su quell’elemento.

Quindi possiamo liberare stateObject chiamando replaceState nel gestore di eventi onblur.

Analisi della patch

La patch modifica l’argomento stateObject in loadInSameDocument da un puntatore non elaborato, SerializedScriptValue*, a un puntatore con conteggio dei riferimenti, RefPtr<SerializedScriptValue>, in modo che loadInSameDocument ora incrementi il conteggio dei riferimenti sull’oggetto.

Considerazioni su come questa vulnerabilità potrebbe essere stata trovata (fuzzing, controllo del codice, analisi delle varianti, ecc..)

Sembra ragionevole che la vulnerabilità possa essere stata trovata osservando i commit e vedendo la correzione iniziale del 2013 ripristinata nel 2016, controllo del codice o fuzzing.

Il fuzzing sembra leggermente meno probabile a causa della necessità di supportare la “navigazione” che molti fuzzer cercano esplicitamente di escludere.

(Storico/presente/futuro) contesto del bug

Questo bug è stato effettivamente segnalato e corretto inizialmente nel 2013. Nel 2016 la correzione è stata regredita durante (sembra) il refactoring.

Sempre secondo notzecoxao questo bug sarebbe presente sul firmware 8.XX della console PlayStation 4, mentre la correzione risalirebbe a febbraio di quest’anno.

Fonte: twitter.com

Articolo precedente[Scena Switch] Rilasciato nx-hbmenu v3.5.1
Articolo successivo[Scena PS4] Realizzata una prima reimplementazione parziale dell’exploit BD-JB
Sono Nato nel 1980 e da diversi anni coltivo la passione per tutto ciò che riguarda il mondo dei videogiochi, ho vissuto l'era degli home computer con il Commodore 64 e l'Amiga 500, da sempre appassionato di giochi di ruolo e di titoli di avventura.