Home Homebrew Eseguito il backport dell’exploit ipv6 uaf ora compatibile anche con firmware...

[Scena PS5] Eseguito il backport dell’exploit ipv6 uaf ora compatibile anche con firmware più vecchi e compresi tra la versione 3.00 e 4.02

469
0

Il developer ChendoChap punta al backport dell’exploit ipv6 uaf che ora si renderebbe compatibile anche con firmware più vecchi e compresi tra la versione 3.00 e 4.02 della console PlayStation 5.

Per noi cambia poco o niente, sarebbero poche le persone in grado di eseguire l’exploit su firmware così datati, l’exploit potrebbe comunque risultare eventualmente utile nella ricerca e nello sviluppo di altre vulnerabilità.

Da precisare che le modifiche apportate da ChendoChap non sono state ancora unite nella repository ufficiale, probabilmente perchè mancano ancora alcuni offset che lo renderebbero parzialmente vulnerabile su alcuni firmware.

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.

Download: Source code PS5 3.xx-4.xx Kernel Exploit

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.