Home Homebrew Continua lo sviluppo del kernel exploit ipv6 uaf ora con uno...

[Scena PS5] Continua lo sviluppo del kernel exploit ipv6 uaf ora con uno script di test klog

435
2

I nuovi sviluppi per il kernel exploit ipv6 uaf sulla console PlayStation 5 hanno portato alla correzione di bug nell’ELF Loader e ad un primo script sperimentale del Klog, simile alla versione introdotta recentemente in GoldHEN su console PlayStation 4.

Il server Klog in ascolto sulla porta 9081 registra tutta una serie di informazioni importantissime in merito alle attività implicite ed esplicite eseguite dalla console PlayStation 5.

Questo tipo di record riporta tutte le informazioni sul normale funzionamento della console, giochi inclusi, come si vede dal video condiviso da @StretchEcho su twitter.

Questo potrebbe risultare utile per scoprire eventuali anomalie e comportamenti che potrebbero portare a scoprire potenziali exploit futuri, o cercare di correggere i bug che potrebbero presentarsi di volta in volta con l’esecuzione dell’exploit ipv6 uaf.

L’exploit dovrebbe supportare i seguenti firmware (altri in arrivo):

  • 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

  • Stabilità molto più elevata (80-90%).
  • Supporto 4.50 e 4.51.
  • Caricatore ELF di base WIP.
  • Supporto per la localizzazione del percorso (reindirizza le lingue non inglesi alla directory corretta).
  • Aggiunta una primitiva di lettura/scrittura stabile tramite pipe.
  • Miglioramenti visivi minori/riduzione del disordine.

Nota: Se si intende provare le ultime modifiche apportate in questa versione, scaricare l’archivio da questo collegamento.

Download: PS5 4.xx Kernel Exploit v1.01 (non include gli aggiornamenti riportati in questo articolo)

Download: Source code PS5 4.xx Kernel Exploit v1.01

Fonte: github.com

2 Commenti

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.