Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PS5-UMTX-Jailbreak — Un exploit del kernel basato su WebKit e jailbreak per PS5 | Kitploit
Strumenti/GitHubGitHub/ps5dev/ps5-umtx-jailbreak
Escalation di PrivilegiExploitPost-ExploitBinary Exploitation
GitHubps5dev/ps5-umtx-jailbreak

PS5-UMTX-Jailbreak

Un exploit del kernel basato su WebKit e jailbreak per PS5

Vedi Repository
247391 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

PS5 UMTX Jailbreak


Sommario

Questo repository contiene un exploit WebKit ROP della vulnerabilità UMTX race use-after-free (CVE-2024-43102) segnalata da Synacktiv. In pratica è un porting della strategia di exploit di fail0verflow e di flatz. Abusa della UAF per ottenere una mappatura di lettura/scrittura nello stack di un thread del kernel e sfrutta letture e scritture su pipe per stabilire una primitiva di lettura/scrittura arbitraria nel kernel (non proprio ideale). Questa lettura/scrittura viene poi migliorata in una che sfrutta una coppia di socket ipv6 e una coppia di pipe per una lettura/scrittura stabile che può essere passata ai payload nello stesso modo reso possibile dal precedente exploit del kernel PS5 via IPV6.

La pagina stessa è una versione ridotta e modificata di PS5 Exploit Host di idlesauce, dato che aveva già fatto il lavoro di integrare psfree nello stile di codice che usavo in precedenza. Questo host è anche la mia scelta personale per eseguire le cose, perché è molto fluido e integra payload utili; spero venga aggiornato per supportare questo exploit nel prossimo futuro <3.

Alla fine verrà avviato un payload loader in ascolto di ELF di payload sulla porta 9021. Consiglio il PS5 Payload Dev SDK, dato che dovrebbe essere pienamente compatibile con questo loader quando verranno aggiunti gli offset del kernel.

Questa vulnerabilità interessa i firmware dalla 1.00 alla 7.61, tuttavia i FW >= 3.00 sembrano avere mitigazioni aggiuntive che richiedono di adattare l'exploit per funzionare. Dato che sono interessato principalmente ai firmware inferiori, questo exploit non supporta ancora FW >= 3.00. Inoltre, la vulnerabilità WebKit che concateniamo è stata corretta nella 6.00, quindi per questi sistemi sarà necessario un altro exploit WebKit che raggiunga lettura/scrittura in userland. Ripeto, non essendo concentrato sui firmware più recenti, per ora questo aspetto è lasciato incompleto.

Note importanti

  • 3.00+ ha un'affidabilità inferiore e potrebbe richiedere più tempo per l'esecuzione; se rimani bloccato su "triggering race" per un po', chiudi il browser e riprova.
  • 5.00+ il loader ELF attualmente non funziona, perché non possiamo più invocare correttamente dlsym; il payload SDK richiede modifiche.

I seguenti firmware sono attualmente supportati:

  • 1.xx [1.00, 1.01, 1.02, 1.05, 1.10, 1.11, 1.12, 1.13, 1.14]
  • 2.xx [2.00, 2.20, 2.25, 2.26, 2.30, 2.50, 2.70]
  • 3.xx [3.00, 3.20]
  • 4.xx [4.00, 4.02, 4.03, 4.50, 4.51]
  • 5.xx [5.00, 5.02, 5.10, 5.50]

Attualmente incluso

  • Ottiene lettura/scrittura arbitraria nel kernel
  • Abilita il menu delle impostazioni di debug (nota: dovrai uscire completamente dalle impostazioni e rientrare per vederlo).
  • Ottiene i privilegi di root ed esce dalla sandbox/jail.
  • Esegue il loader ELF di John Tornblom sulla porta 9021 per l'esecuzione dei payload (su FW < 5.00)

Limitazioni

  • Questo exploit ottiene lettura/scrittura, ma non esecuzione di codice. Questo perché al momento non possiamo dumpare il codice del kernel per i gadget, poiché le pagine .text del kernel sono marcate come eXecute Only Memory (XOM). Tentare di leggere i puntatori .text del kernel causerà un panic!
  • Come sopra + l'hypervisor (HV) che impone la protezione in scrittura del kernel, questo exploit non può installare patch o hook nello spazio del kernel.
  • È presente e applicata la Control Flow Integrity (CFI) fine-grained basata su Clang.
  • Supervisor Mode Access Prevention/Execution (SMAP/SMEP) non può essere disabilitata, a causa dell'HV.
  • FW >= 6.00 richiede un nuovo exploit WebKit e quindi non è supportato.

Come usare

  1. Configura fakedns tramite dns.conf per far puntare manuals.playstation.net all'indirizzo IP del tuo PC
  2. Esegui il fakedns: python fakedns.py -c dns.conf
  3. Esegui il server HTTPS: python host.py
  4. Vai nelle impostazioni di rete avanzate della PS5 e imposta il DNS primario sull'indirizzo IP del tuo PC, lasciando il secondario a 0.0.0.0
    1. A volte il manuale continua a non caricarsi ed è necessario un riavvio; non so perché, è davvero strano
  5. Vai al manuale utente nelle impostazioni e accetta il prompt del certificato non attendibile, esegui
  6. Opzionale: decommenta il codice di dump dei dati .data del kernel ed esegui lo script del server di dump (nota: indirizzo/porta devono essere sostituiti in exploit.js).

Lavori futuri

  • Aggiornare la strategia dell'exploit per FW >= 3.xx per tenere conto delle mitigazioni
  • Aggiungere offset per più firmware (inferiori)
  • Aggiungere exploit WebKit per FW >= 6.00.

Usare il loader ELF

Per usare il loader ELF, esegui l'exploit fino al completamento. Al termine avvierà un server sulla porta :9021. Collegati e invia il tuo ELF alla PS5 via TCP e lo eseguirà. Questo loader dovrebbe continuare ad accettare ed eseguire payload anche dopo aver chiuso il browser.

Note sulla strategia dell'exploit

Double free iniziale

La strategia di questo exploit deriva in gran parte da fail0verflow e flatz. Vedi il writeup di chris@accessvector per maggiori informazioni sulla vulnerabilità. Una volta sfruttata, ci dà essenzialmente una double free. Possiamo usarla per sovrapporre il vmobject di uno stack del kernel con quello di una mappatura mmap, ottenendo una finestra sullo stack di un thread del kernel. Questa capacità molto potente ci consente di leggere/scrivere puntatori arbitrari del kernel nello stack, sconfiggendo l'ASLR e permettendo di creare primitive. Il thread di cui abbiamo accesso allo stack lo chiameremo thread vittima.

Ottenere lettura/scrittura arbitraria

Creando una pipe e riempiendo il buffer della pipe sul thread principale, poi provando a scriverci usando il thread vittima, il thread vittima si bloccherà in attesa che si liberi spazio nel buffer. Durante questo periodo, possiamo usare la nostra finestra sullo stack del kernel per modificare i puntatori iovec in puntatori del kernel e impostare i flag per farli trattare come indirizzi del kernel. Leggendo quindi la pipe sul thread principale, possiamo ottenere lettura arbitraria del kernel.

Allo stesso modo, facendo leggere la pipe al thread vittima, si bloccherà in attesa di dati in ingresso. Possiamo quindi, di nuovo, sovrascrivere i puntatori iovec e trasformarli in puntatori del kernel, e scrivere dati sul thread principale per ottenere scrittura arbitraria del kernel.

Migliorare la lettura/scrittura arbitraria

A questo punto abbiamo una lettura/scrittura arbitraria senza vincoli reali, ma siamo legati all'uso del multithreading e del blocco per farla funzionare, il che non è ideale. Usiamo quindi la R/W per iterare la tabella FD del processo e sovrapporre i pktopts di due socket IPV6. Possiamo poi creare un'altra lettura/scrittura arbitraria tramite il sockopt IPV6_PKTINFO. Anche questa primitiva di lettura/scrittura non è ideale, però, perché è limitata in dimensione e contenuti a causa dell'opzione socket sottostante. Manteniamo questo passaggio soprattutto per emulare lo scenario dell'exploit IPV6, su cui sono stati costruiti la maggior parte dei payload e simili.

Possiamo ottenere una lettura/scrittura migliore tramite le pipe. Iterando di nuovo la tabella FD del processo e modificando gli oggetti buffer della pipemap, possiamo stabilire lettura/scrittura. La coppia di socket IPV6 viene usata come meccanismo per controllare il buffer della pipemap.

Correggere/aggirare la corruzione

Se lasciamo le cose come stanno e proviamo a chiudere il browser, il sistema andrà in crash. Questo perché la pulizia del processo proverà a liberare lo stack del kernel che è già stato liberato. Per evitarlo, facciamo due cose:

  1. Lasciare intenzionalmente un leak del refcount sul FD shm che usiamo per la double free iniziale, così che non venga liberato all'uscita del processo
  2. Azzerare il td_kstack del thread vittima nella lista dei thread del processo.

Note sulla stabilità

Sui FW < 3.00, questo exploit è molto stabile. L'unico punto critico di fallimento è non riuscire a sovrapporre i vmobjects. Sui firmware più recenti, questa sovrapposizione è più difficile da ottenere a causa di presunte mitigazioni a livello di page/heap allocator.

Crediti / Ringraziamenti

  • fail0verflow
  • flatz
  • ChendoChap
  • SlidyBat
  • abc/psfree
  • idlesauce
  • Znullptr
  • zecoxao
  • SocracticBliss
  • John Tornblom

Discord

Chi è interessato a contribuire alla ricerca/sviluppo su PS5 può unirsi a un discord che ho configurato qui.

Scarica lo strumento