L’ultima implementazione del PoC LibHijacker sembra aver motivato lo sviluppo dell’exploit nel kernel “ipv6 uaf” sulla console PlayStation 5. Questo ha reso possibile l’installazione di file PKG e fPKG sulla console, anche se attualmente non è possibile eseguirli.

I due progetti si distinguono tra loro. Il PoC originale sviluppato da astrelsky impiega Redis come parte del suo processo.
New update from @specterdev
Cex To Dexhttps://t.co/FdKXIdCg7y— Echo Stretch (@StretchEcho) August 26, 2023
Redis è un sistema di memorizzazione e caching dei dati in memoria, e in questo caso specifico viene utilizzato per creare un processo “daemon” separato dallo stack utilizzato sulla console PS5.
Questo processo “daemon” viene generato tramite il server Redis in esecuzione sulla console e viene dedicato all’esecuzione dell’applicazione homebrew.
L’uso di Redis in questo contesto permette di creare un ambiente isolato e separato per l’esecuzione dell’applicazione homebrew, prevenendo qualsiasi interferenza con altri processi o stack di sistema.
L’implementazione sperimentale del WebKit ROP per un exploit nel kernel della console PS5, invece, si basa su IPV6 Use-After-Free (UAF) identificato da TheFlow e segnalato su HackerOne.
La strategia dell’exploit è in gran parte derivata dal PoC BSD/PS4 di TheFlow, ma con alcune modifiche per adattarsi alla complicata struttura della memoria della PS5.
Questo exploit crea una primitiva di lettura arbitraria e scrittura (semi-arbitraria). Tuttavia, le capacità di questo exploit sono limitate e quindi è principalmente indirizzato a sviluppatori interessati a sperimentare l’ingegneria inversa su parti specifiche del sistema.
Grazie agli ultimi miglioramenti in termini di stabilità, l’affidabilità dell’exploit è ora attorno all’80%. L’exploit dovrebbe supportare i seguenti firmware:
- 3.00
- 3.10
- 3.20
- 3.21
- 4.00 (da fare)
- 4.02
- 4.03
- 4.50
- 4.51
Attualmente incluso
- Permette la lettura/scrittura arbitraria e può eseguire un server RPC di base per letture/scritture (o un server di dump per letture di grandi dimensioni) (è necessario modificare il proprio indirizzo/porta nel file di exploit alle righe
673-677). - Abilita il menu delle impostazioni di debug (nota: dovrai uscire completamente dalle impostazioni e rientrare per vederlo).
- Ottiene i privilegi di root.
Limitazioni
- Questo exploit ottiene la lettura/scrittura, ma non l’esecuzione del codice. Questo perché al momento non è possibile eseguire il dump del codice del kernel per i gadget, poiché le pagine
.textdel kernel sono contrassegnate come eXecute Only Memory (XOM). Il tentativo di leggere i puntatori.textdel kernel andrà in panic. - Come per quanto sopra + l’hypervisor (HV) che impone la protezione da scrittura del kernel, anche questo exploit non può installare patch o hook nello spazio del kernel, il che significa che per il momento nessun codice correlato all’homebrew.
- L’integrità del flusso di controllo (CFI) a grana fine basata su Clang è presente e applicata.
- La prevenzione/esecuzione dell’accesso in modalità supervisore (SMAP/SMEP) non può essere disabilitata a causa dell’alta tensione.
- La primitiva di scrittura è alquanto vincolata, poiché i byte 0x10-0x14 devono essere zero (o un’interfaccia di rete valida).
- Tuttavia, a causa del lavoro più recente che utilizza le pipe, ora è possibile la lettura/scrittura completamente arbitraria.
Come usare
- Configurare fakedns tramite
dns.confper puntaremanuals.playstation.netall’indirizzo IP del tuo PC. - Eseguire fake dns:
python fakedns.py -c dns.conf - Eseguire il server HTTPS:
python host.py - Accedere alle impostazioni di rete avanzate della console PS5 e impostare il DNS primario sull’indirizzo IP del tuo PC e lasciare il secondario su
0.0.0.0.- A volte il manuale non si carica ancora ed è necessario un riavvio, incerto sul motivo per cui è davvero strano.
- Vai al manuale dell’utente nelle impostazioni e accettare la richiesta del certificato non attendibile.
- Facoltativo: Eseguire gli script del server rpc/dump (nota: indirizzo/porta deve essere sostituito in formato binario in
exploit.js).
Prossimamente
Riparare i socket per uscire dal browser in modo pulito (priorità top).Scrivere alcune patch di dati (seconda priorità).Abilitare le impostazioni di debug.Patch cred per uid0.Jailbreak con sovrascrittura di cr_prison.Migliorare l’affidabilità UAF.Migliorare l’affidabilità del socket della vittima (terza priorità).Utilizzare un obiettivo di perdita migliore/più coerente rispetto a kqueue(non più necessario).- Fare in modo che il caricatore ELF supporti le rilocazioni.
- Aggiungere il supporto per ulteriori spostamenti e possibilmente un collegamento dinamico completo?
Utilizzo dell’ELF Loader
Per utilizzare l’ELF Loader, l’utente deve eseguire l’exploit fino al completamento. Una volta completato, verrà avviato un server sulla porta :9020.
L’utente deve connettersi e inviare l’ELF alla PS5 tramite quella porta, dopodiché verrà eseguito. A meno che l’ELF non causi un crash del browser, è possibile continuare ad eseguire ELF in modo continuativo.
Fasi dell’exploit
Questo exploit funziona in 5 fasi e per la maggior parte segue la stessa strategia di exploit del poc di theflow.
- Attivare l’UAF iniziale su
ip6_pktoptse fare in modo che due socket puntino agli stessipktopts/ overlap (master socket <-> overlap spray socket). - Liberare i
pktoptssul socket principale e simularlo con uno sprayip6_rthdrcontenente una overlaptclassetichettata. - Passaggio di Infoleak. Utilizzare
pktopts/rthdroverlap per perdere una kqueue dallo slab 0x200 epktoptsdallo slab 0x100. - Fase di lettura/scrittura arbitraria. Falsare nuovamente i
pktoptse trovare il socket di overlap per utilizzareIPV6_RTHDRcome primitiva di lettura/scrittura. - Fase di pulizia + patch. Aumentare il refcount sui socket danneggiati per l’uscita dal browser corretta + dati patch per abilitare il menu di debug e patchare ucreds per uid0.
- Eseguire il server di caricamento ELF che accetterà e caricherà/eseguirà ELF. Attualmente WIP, al momento non supporta i trasferimenti.
Note di stabilità
La stabilità per questo exploit è tra l’80%~90% e presenta due potenziali punti di errore. In ordine di probabilità decrescente osservata:
- Lo Stage 1 non riesce a recuperare l’UAF, causando un arresto anomalo immediato o una corruzione latente che provoca un arresto anomalo..
- Lo Stage 4 non riesce a trovare un socket della vittima.
Appunti di ricerca
Sembra che, in base a vari test e dump con la primitiva di lettura, la PS5 sia tornata a utilizzare una dimensione di pagina di.0x1000rispetto ai0x4000della PS4- Tuttavia, dopo ulteriori indagini, la dimensione della pagina è effettivamente ancora
0x4000. Ciò nonostante, a causa di alcune modifiche apparentemente prive di senso all’allocatore, è possibile assegnare porzioni diverse all’interno della stessa pagina virtuale.
- Tuttavia, dopo ulteriori indagini, la dimensione della pagina è effettivamente ancora
- Inoltre, sembra che su PS5 le pagine adiacenti appartengano raramente alla stessa “slab”, poiché si ottengono dati molto diversi dalle pagine vicine. Il layout della memoria sembra più disperso.
- Spesso, quando la PS5 va in modalità panic (almeno nel contesto di WebKit), si verifica un output audio terribile a causa del danneggiamento del buffer audio in qualche modo.
- In alcuni casi, questa corruzione audio persiste anche dopo il successivo avvio, senza una causa chiara.
- Analogamente a quanto accadeva su PS4, sulla PS5 è necessario premere manualmente il pulsante di accensione sulla console due volte per riavviarla dopo un panico.
- È normale che la PS5 impieghi un tempo notevolmente lungo per riavviarsi in caso di panico se non è connessa a Internet (purtroppo). L’avvio dovrebbe richiedere da 3 a 4 minuti.
Download: Source code PS5 4.03/4.50/4.51 Kernel Exploit
Fonte: twitter.com

![[Scena DS] Rilasciato GimliDS v1.5h: Emulazione C64 più precisa su Nintendo DS e DSi](https://www.biteyourconsole.net/wp-content/uploads/GimliDS--238x178.webp)
![[Scena Switch] Rilasciato MissionControl v0.14.1 con supporto per il nuovo firmware 21.1.0 della console Switch](https://www.biteyourconsole.net/wp-content/uploads/MotionController.jpg)

![[Scena DS] Rilasciato GimliDS v1.5h: Emulazione C64 più precisa su Nintendo DS e DSi](https://www.biteyourconsole.net/wp-content/uploads/GimliDS--100x75.webp)
![[Scena PS Vita] Rilasciato Fran Bow v2.07](https://www.biteyourconsole.net/wp-content/uploads/FranBow.jpg)
![[Scena PS3] Rilasciato webMAN “Vanilla” v1.42](https://www.biteyourconsole.net/wp-content/uploads/mygamesss.jpg)
![[Scena DS] Rilasciato StellaDS Phoenix Edition v6.4](https://www.biteyourconsole.net/wp-content/uploads/StellaDSOne-100x75.webp)