Home Homebrew Rilasciato PS5 IPV6 Kernel Exploit v1.03

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

598
0

Sono passati poco più di 4 mesi dall’ultimo aggiornamento del kernel exploit della console PlayStation 5 “ipv6 uaf”. L’implementazione sperimentale sfrutta una strategia di exploit utilizzata in principio dal PoC BSD/PS4 di TheFlow.


L’aggiornamento porta il funzionamento corretto dei trasferimenti relativi nel caricatore ELF dell’ultima catena di exploit basata sul webkit per PS5. Anche gli script delle build e simili sono stati aggiornati in PS5SDK.

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.
    • Aggiungere il supporto per più rilocazioni e possibilmente un collegamento dinamico completo?

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 trasferimenti relativi.
  • Corretti vari bug minori/errori di battitura (grazie a John Tornblom).

Download: PS5 IPV6 Kernel Exploit v1.03

Download: Source code PS5 IPV6 Kernel Exploit v1.03

Fonte: twitter.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.