Home Homebrew Rilasciato PS5 IPV6 Kernel Exploit v1.02

[Scena PS5] Rilasciato PS5 IPV6 Kernel Exploit v1.02

156
0

Il nuovo SDK open source della console PlayStation 5 ha spinto fuori dal guscio un aggiornamento del kernel exploit webkit-based “ipv6 uaf”.

Tra le altre cose, l’aggiornamento alla versione 1.02 unisce le modifiche attuate dal developer ChendoChap rendendo compatibili anche i firmware 3.00, 3.20, 3.21, 4.02 e 4.51 (3.10 e 4.00 sono solo parzialmente supportati).

Sono state apportate anche diverse correzioni nel loader ELF da dove potevano verificarsi letture incomplete, mentre sono stati aggiunti alcuni argomenti del punto di ingresso al loader ELF per la lettura/scrittura del kernel.

Dopo l’exploit vengono ripuliti tutti gli fd, in questo modo i processi figlio non tedono più ad ereditare inutilmente un mucchio di risorse.

L’exploit dovrebbe supportare i seguenti firmware:

  • 3.00 (parzialmente).
  • 3.10 (parzialmente).
  • 3.20.
  • 3.21.
  • 4.00 (potenzialmente parzialmente).
  • 4.02 (potenzialmente parzialmente).
  • 4.03.
  • 4.50.
  • 4.51.

Attualmente incluso

  • Ottieni lettura/scrittura arbitraria e può eseguire un server RPC di base per letture/scritture (o un server dump per letture di grandi dimensioni) (devi modificare il proprio indirizzo/porta nel file exploit alle righe 673-677).
  • Abilita il menu delle impostazioni di debug (nota: dovrai uscire completamente dalle impostazioni e tornare indietro 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 .text del kernel sono contrassegnate come eXecute Only Memory (XOM). Il tentativo di leggere i puntatori .text del kernel andrà in panic.
  • Come per quanto sopra + l’hypervisor (HV) che applica 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).

Come usare

  1. Configurare fakedns tramite dns.conf per puntare manuals.playstation.net all’indirizzo IP del tuo PC.
  2. Eseguire fake dns: python fakedns.py -c dns.conf
  3. Eseguire il server HTTPS: python host.py
  4. 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.
    1. A volte il manuale non si carica ancora ed è necessario un riavvio, incerto sul motivo per cui è davvero strano.
  5. Vai al manuale dell’utente nelle impostazioni e accettare la richiesta del certificato non attendibile.
  6. 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à).
  • Utilizza un obiettivo di perdita migliore/più coerente di kqueue. (non più necessario)
  • Effettuare trasferimenti di supporto del caricatore ELF.

Utilizzo ELF Loader

Per utilizzare ELF Loader, eseguire l’exploit fino al completamento. Al termine, verrà eseguito un server sulla porta :9020. Collegare e inviare il file ELF alla console PS5 su quella stessa porta che lo eseguirà.

Supponendo che il file ELF non arresti in modo anomalo il browser, può continuare ad iniettare gli ELF per sempre.

Fasi dell’exploit

Questo exploit funziona in 5 fasi e per la maggior parte segue la stessa strategia di exploit del poc di theflow.

  1. Attiva l’UAF iniziale su ip6_pktopts e fa in modo che due socket puntino agli stessi pktopts / overlap (master socket <-> overlap spray socket).
  2. Libera i pktopts sul socket principale e lo simula con uno spray ip6_rthdr contenente una overlap tclass etichettata.
  3. Passa a Infoleak. Utilizza pktopts/rthdr overlap per perdere una kqueue dallo slab 0x200 e pktopts dallo slab 0x100.
  4. Fase di lettura/scrittura arbitraria. Falsa nuovamente i pktopts e trova il socket di overlap per utilizzare IPV6_RTHDR come primitiva di lettura/scrittura.
  5. Fase di pulizia + patch. Aumenta il refcount sui socket danneggiati per l’uscita dal browser corretta + dati patch per abilitare il menu di debug e patcha ucreds per uid0.
  6. Esegue il server ELF Loader che accetterà e caricherà/eseguirà file ELF. Attualmente WIP, al momento non supporta i trasferimenti.

Note di stabilità

La stabilità per questo exploit è di circa il 30% 80-90% e presenta due potenziali punti di errore. In ordine di probabilità discendente osservata:

  1. La fase 1 non riesce a recuperare l’UAF, causando un arresto anomalo immediato o un danneggiamento latente che causa l’arresto anomalo.
  2. La fase 4 non riesce a trovare una presa per la vittima.

Appunti di ricerca

  • Sulla base di vari test e dumping con la primitiva di lettura, sembra che la PS5 sia tornata alla dimensione della pagina 0x1000 rispetto allo 0x4000 della PS4.
    • Dopo ulteriori ricerche, la dimensione della pagina è effettivamente ancora 0x4000, tuttavia, a causa di alcune folli modifiche all’allocatore, è possibile allocare lastre diverse nella stessa pagina virtuale.
  • Sembra anche su PS5 che le pagine adiacenti appartengano raramente alla stessa lastra, poiché otterrai dati molto diversi nelle pagine adiacenti. Il layout della memoria sembra più disperso.
  • Spesso quando la PS5 va in panic (almeno nel contesto del webkit), ci sarà un output audio terribile poiché il buffer audio viene danneggiato in qualche modo.
  • A volte questo danneggiamento dell’audio persiste fino all’avvio successivo, senza sapere perché.
  • Simile a PS4, PS5 richiederà la pressione manuale del pulsante di accensione sulla console due volte per riavviarsi dopo un panic.
  • È normale che la PS5 impieghi un tempo assurdo per riavviarsi dal panico se è isolata da Internet (purtroppo). Aspettati che l’avvio richieda 3-4 minuti.

Changelog

  • Aggiunto il supporto per i firmware 3.00, 3.20, 3.21, 4.02 e 4.51 (3.10 e 4.00 sono parzialmente supportati) (grazie ChendoChap).
  • Ora pulisce gli fd dopo lo sfruttamento in modo che i processi figlio non ereditino un mucchio di risorse inutilmente.
  • Corretti vari bug nel caricatore ELF in cui potevano verificarsi letture incomplete.
  • Aggiunti alcuni argomenti del punto di ingresso al loader ELF per la lettura/scrittura del kernel.

Download: PS5 IPV6 Kernel Exploit v1.02

Download: Source code PS5 IPV6 Kernel Exploit v1.02

Fonte: twitter.com

Articolo precedente[Scena PS5] Rilasciato PS5 SDK v0.1 beta
Articolo successivo[Scena Wii] Rilasciato emulatore Not64 Build 20221029
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.