Home Homebrew Aggiornato l’exploit nel kernel “ipv6 uaf” Cex To Dex

[Scena PS5] Aggiornato l’exploit nel kernel “ipv6 uaf” Cex To Dex

630
0

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.

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 .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 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

  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à).
  • 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.

  1. Attivare l’UAF iniziale su ip6_pktopts e fare in modo che due socket puntino agli stessi pktopts / overlap (master socket <-> overlap spray socket).
  2. Liberare i pktopts sul socket principale e simularlo con uno spray ip6_rthdr contenente una overlap tclass etichettata.
  3. Passaggio di Infoleak. Utilizzare pktopts/rthdr overlap per perdere una kqueue dallo slab 0x200 e pktopts dallo slab 0x100.
  4. Fase di lettura/scrittura arbitraria. Falsare nuovamente i pktopts e trovare il socket di overlap per utilizzare IPV6_RTHDR come primitiva di lettura/scrittura.
  5. 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.
  6. 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 0x1000 rispetto ai 0x4000 della 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.
  • 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

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS5

Vedi altri prodotti PS5

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.