
Un exploit sperimentale del kernel basato su webkit (Arb. R/W) per PS5 su <= 4.51FW
Questa repository contiene un'implementazione sperimentale WebKit ROP di un exploit del kernel PS5 basata sulla Use-After-Free (UAF) IPV6 di TheFlow, che è stata segnalata su HackerOne. La strategia dell'exploit è in gran parte basata sulla PoC BSD/PS4 di TheFlow con alcune modifiche per adattarsi alla fastidiosa disposizione della memoria della PS5 (per maggiori dettagli vedere la sezione Note di ricerca). Stabilisce una primitiva di lettura arbitraria / scrittura (semi-arbitraria). Questo exploit e le sue capacità hanno molte limitazioni e, come tale, è pensato principalmente per gli sviluppatori che vogliono giocarci per fare reverse engineering di alcune parti del sistema.
Con gli ultimi miglioramenti alla stabilità, l'affidabilità è di circa l'80%. Questo documento conterrà informazioni di ricerca sulla PS5 e questo exploit continuerà a essere sviluppato e migliorato nel tempo.
Chi è interessato a contribuire alla ricerca/sviluppo sulla PS5 può unirsi a un discord che ho configurato qui.
L'exploit dovrebbe ora supportare i seguenti firmware:
dns.conf per far puntare manuals.playstation.net all'indirizzo IP del tuo PCpython fakedns.py -c dns.confpython host.py0.0.0.0
Per usare il caricatore ELF, esegui l'exploit fino al completamento. Al completamento avvierà un server sulla porta :9020. Connettiti e invia il tuo ELF alla PS5 tramite quella porta e verrà eseguito. Supponendo che l'ELF non faccia crashare il browser, può continuare a eseguire ELF per sempre.
Questo exploit funziona in 5 fasi e per la maggior parte segue la stessa strategia della PoC di theflow.
ip6_pktopts e fai sì che due socket puntino allo stesso pktopts / si sovrappongano (socket master <-> socket spray in overlap)pktopts sulla socket master e fingilo con uno spray ip6_rthdr contenente un overlap tclass taggato.pktopts/rthdr per leakare una kqueue dalla slab 0x200 e pktopts dalla slab 0x100.pktopts e trova la socket in overlap per usare IPV6_RTHDR come primitiva di lettura/scrittura.La stabilità di questo exploit è circa 30% 80-90% e ha due potenziali punti di errore. In ordine di probabilità osservata decrescente:
Sembrava, sulla base di vari test e dump con la primitiva di lettura, che la PS5 fosse tornata alla dimensione di pagina 0x1000 rispetto allo 0x4000 della PS4.
Sembra anche che sulla PS5 le pagine adiacenti appartengano raramente alla stessa slab, poiché si ottengono dati molto diversi in pagine adiacenti. Il layout di memoria sembra più frammentato.
Spesso quando la PS5 va in panic (almeno nel contesto WebKit), si sente un audio terribile perché il buffer audio si corrompe in qualche modo.
A volte questa corruzione audio persiste al riavvio successivo, non so perché.
Similmente alla PS4, la PS5 richiede che il pulsante di accensione venga premuto manualmente due volte sulla console per riavviarsi dopo un panic.
È normale che la PS5 impieghi un tempo assurdo per riavviarsi dopo un panic se è isolata da internet (purtroppo). Aspettati un avvio di 3-4 minuti.