UltraC0re è un nuovo exploit userland per PlayStation 5 sviluppato da matem6, che si inserisce nel contesto della ricerca avanzata sulla sicurezza della console.

Il progetto rappresenta un’evoluzione di Luac0re di Gezine e si basa sull’utilizzo di un salvataggio modificato di Jak X: Combat Racing, versione PS2 Classic, per innescare una catena di esecuzione del codice all’interno dell’emulatore PS2 integrato su PS5.
https://t.co/rjyWkwKae5 pic.twitter.com/hfjugLQUVd
— BrutalSam (@BrutalSam_) June 13, 2026
L’idea alla base è quella di sfruttare una vulnerabilità presente nei salvataggi del gioco per ottenere inizialmente il controllo del flusso di esecuzione all’interno dell’ambiente PS2 emulato.
Da lì, UltraC0re tenta un passaggio più profondo, puntando a una fuga dall’emulatore stesso per arrivare all’esecuzione di codice nel contesto nativo del sistema.
Questo passaggio è la parte più rilevante del progetto, perché non si limita al gioco ma interagisce con il layer di emulazione, in particolare con componenti legati al JIT.
Una volta ottenuto questo livello di accesso, il sistema di exploit mette a disposizione primitive avanzate che permettono interazioni molto profonde con la memoria del processo, aprendo la strada a tecniche più sofisticate di ricerca e test.
All’interno della catena viene anche integrato un loader remoto basato su Lua, pensato per facilitare il caricamento di payload esterni e sperimentali. Tra questi rientrano strumenti usati nella scena come proof-of-concept per tentativi di escalation successivi.
Dal punto di vista tecnico, il funzionamento si divide tra una componente legata al gioco stesso, dove la vulnerabilità del salvataggio consente la prima fase di controllo, e una componente più generale che agisce sull’emulatore PS2.
Ciò rende possibile una certa portabilità del metodo su altri titoli PS2 Classic che utilizzano lo stesso ambiente di emulazione. Questo è uno degli aspetti più interessanti del progetto, perché non resta confinato a un solo gioco.
Il tutto richiede comunque un contesto molto specifico: una versione compatibile del gioco, la possibilità di gestire salvataggi firmati per il proprio account e una conoscenza tecnica non banale, visto che non si tratta di una procedura immediata o pensata per utenti generici.
Anche la fase finale della catena, quella legata all’esecuzione più profonda, viene descritta come sperimentale e non garantita, con risultati variabili a seconda del sistema e delle condizioni.
Come funziona
La catena di exploit è divisa in due parti: una fase iniziale specifica per il gioco Jak X e una fase generica che invece prende di mira direttamente l’emulatore PS2, rendendo quest’ultima indipendente dal titolo utilizzato.
Parte A — Ingresso (specifico per Jak X)
Tutto parte da una vulnerabilità nel sistema di salvataggi del gioco. In Jak X, il salvataggio PS2 viene memorizzato in una VMC (memory card virtuale).
Il campo del nome del profilo è vulnerabile a un overflow che finisce per sovrascrivere un puntatore adiacente, poi dereferenziato dal gioco.
Inserendo un nome appositamente costruito, è possibile prendere il controllo del program counter all’interno dell’emulazione PS2 e ottenere l’esecuzione di codice MIPS (r5900) nel contesto del gioco emulato, in modo simile alla prima fase di mast1c0re.
Questa vulnerabilità è specifica di Jak X ed è stata individuata da CelesteBlue. L’exploit viene inserito direttamente nel contenuto del salvataggio (offset 0x71CAF0), con ricalcolo di CRC32 ed ECC tramite script dedicati.
Da questo punto in poi, tutto il codice gira all’interno dell’ambiente PS2 emulato e serve come base per attaccare l’emulatore stesso, non più il gioco.
Parte B — Escape dall’emulatore → JIT compiler (generico)
Una volta ottenuto il controllo nell’ambiente PS2, l’obiettivo diventa uscire dal sandbox dell’emulatore e arrivare al processo nativo.
Sfruttando i registri dell’adattatore di rete emulato SMAP/DEV9 (comandi SCMD/NCMD), viene generata una condizione di out-of-bounds che corrompe il buffer gNStatusBuffer e successivamente la tabella di dispatch delle operazioni I/O nel processo nativo.
Questo permette di dirottare un puntatore di funzione e ottenere il controllo del RIP nel processo eboot.bin, con capacità di esecuzione nativa x86-64 (fase simile a mast1c0re stage 2).
A questo livello vengono sbloccate primitive avanzate: lettura e scrittura arbitraria della memoria, bypass dell’ASLR su eboot, libc e kernel, syscall dirette e possibilità di memoria eseguibile tramite le API JIT del sistema.
Il controllo viene poi trasferito a un interprete Lua integrato nel framework UltraC0re, che diventa il livello principale di esecuzione dell’exploit.
Attraversamento verso il compilatore JIT (processo 0x40)
Il processo eboot non può creare socket di rete a causa di restrizioni di sicurezza del kernel (blocchi sulle famiglie AF_INET/AF_INET6).
Per aggirare questa limitazione, viene sfruttato il processo più privilegiato del compilatore JIT (ps2-emu-compiler, livello 0x40), che invece ha capacità di rete.
I due processi comunicano attraverso un canale condiviso (ps2_bridge_comm_rw). Utilizzando un comando chiamato 0x215, viene ottenuta una scrittura out-of-bounds nella heap del compilatore, che viene sfruttata in due fasi contro un oggetto VU0 residente nella memoria del compilatore.
Nella prima fase, il comando 0x215 viene usato per posizionare una vtable falsa e uno stack falsificato sull’oggetto.
Nella seconda fase, lo stesso comando con un flag specifico forza una chiamata virtuale (method70) attraverso la vtable manipolata, portando all’esecuzione di codice nativo direttamente nel processo 0x40.
Controllo del processo 0x40 e ottenimento socket
A questo punto, lo stack viene dirottato in una catena ROP controllata che si trasforma in un loop persistente. Il lato Lua dell’exploit funge da sistema produttore/consumatore, inviando chiamate e syscall attraverso il bridge e ricevendo i risultati in risposta.
Questo crea una primitiva di chiamata remota verso il processo privilegiato, senza necessità di ulteriori compilazioni.
Da qui è possibile creare un socket di rete con i privilegi del compilatore JIT e trasferirlo al processo eboot tramite SCM_RIGHTS (passaggio di file descriptor).
Il risultato è che l’eboot può finalmente eseguire operazioni di rete native, come bind, listen e accept, permettendo l’esecuzione di payload Lua inviati da remoto.
Perché la Parte B è portabile (punto chiave)
La prima parte dell’exploit è strettamente legata a Jak X e deve essere adattata per ogni gioco che presenta vulnerabilità simili. La seconda parte, invece, agisce direttamente sull’emulatore PS2 e non sul gioco stesso.
Questo è fondamentale: l’emulatore, insieme al suo bridge e al compilatore JIT, è incluso nei pacchetti dei PS2 Classic e non dipende dal firmware PS5.
Di conseguenza, rimane invariato tra aggiornamenti di sistema e può essere riutilizzato su altri titoli che utilizzano lo stesso emulatore, richiedendo solo un adattamento degli offset.
Questo approccio rappresenta una differenza importante rispetto a Luac0re originale, che si basava su un emulatore più vecchio presente solo in alcuni titoli specifici, mentre qui il percorso verso il processo 0x40 è potenzialmente riutilizzabile su più giochi.
Payload — esecuzione dei jailbreak PS5 di Luac0re
Il file lua/jitcompat.lua reimplementa le API jit/ di Luac0re utilizzando il motore basato sul comando 0x215, con l’obiettivo di consentire l’esecuzione di payload nativi progettati per Luac0re senza modificare la logica dell’exploit.
Finora è stato testato soltanto poops. In un’esecuzione riuscita, il payload sembra essere arrivato fino alla catena completa di jailbreak da userland a kernel, avviando anche il loader ELF sulla console (porta 9021).
Questo risultato non è garantito. L’exploit kernel utilizzato è infatti specifico per determinate versioni del firmware e ha una natura probabilistica, quindi potrebbero essere necessari diversi tentativi oppure potrebbe non funzionare affatto su alcune build.
Per adattare un payload di Luac0re sono richieste soltanto due modifiche:
- Aggiornare un unico offset,
GADGET_OFFSET(il gadgetcall rbx; retpresente nell’eboot), riallineandolo alla versione di Jak X (0x19869). - Ricompilare il payload in modalità
position-independent, poiché lo shellcode viene caricato a un indirizzo determinato a runtime e deve quindi utilizzare indirizzamenti relativi al registro RIP (-fpic).
Non è necessario modificare l’algoritmo dell’exploit.
I sorgenti degli shellcode e gli strumenti di compilazione si trovano nella cartella src/payloads/, mentre i payload già compilati sono disponibili in payloads/ e possono essere inviati tramite il loader remoto in ascolto sulla porta 8888.
Esecuzione
- Scaricare il salvataggio modificato e rifirmare il save per il proprio account PSN, quindi importarlo sulla console. Per la procedura di firma del salvataggio, seguire la guida disponibile qui: SETUP.md – Guida al resign dei salvataggi.
- Avviare Jak X: Combat Racing, caricare il salvataggio e accedere alla modalità Adventure.
- Quando inizia la sequenza introduttiva, premere
per saltarla e raggiungere più rapidamente il punto di attivazione. A quel punto l’exploit viene eseguito e compare la finestra del loader remoto, in ascolto sulla porta 8888.
Nota: Il framework Lua è già integrato nel salvataggio distribuito, quindi non è necessario installare o copiare altri file sulla console prima dell’avvio.
Changelog
Un punto di accesso per l’esecuzione di codice in modalità userland tramite Jak X: Combat Racing sfruttando l’emulatore PS2 integrato nella PS5, basato sul progetto Luac0re di Gezine.
Attraverso un salvataggio appositamente modificato, l’exploit raggiunge l’esecuzione di codice nativo all’interno dell’emulatore e avvia un loader Lua remoto sulla porta 8888, in grado di eseguire payload compatibili con i jailbreak PS5 di Luac0re (come poops).
Contenuto di questa release
SCUS-97429— Salvataggio modificato di Jak X (versione NTSC, SCUS-97429) con il framework UltraC0re integrato.poops.lua— Payload per l’exploit del kernel PS5 da inviare tramite il loader remoto.
Requisiti
- Jak X: Combat Racing (versione NTSC, SCUS-97429 / CUSA07842) installato sulla PS5.
- Uno strumento per rifirmare i salvataggi PS5 associandoli al proprio account, ad esempio Garlic Save Manager.
Note
- Finora è stato testato solamente il payload poops.
- Il progetto è basato sul lavoro di Gezine e sul framework Luac0re.
- I crediti completi sono disponibili nel file README del progetto.
Download: CUSA07842_sdimg_SCUS-97429.zip
Download: poops.lua
Download: SCUS-97429
Download: SCUS-97429.bin
Download: Source code UltraC0re v1.0.1
Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale. Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.🔥 Prodotti in promozione e articoli più venduti: PS5
Vedi altri prodotti PS5
Ultimo aggiornamento 2026-07-15 / Link di affiliazione / Immagini da Amazon Product Advertising API
![[Scena DS] GimliDS si aggiorna alla versione 1.7: Migliorati salvataggi su SD, memoria, compatibilità Turrican e gestione EasyFlash](https://www.biteyourconsole.net/wp-content/uploads/GimliDS1900-238x178.webp)


![[Scena DS] GimliDS si aggiorna alla versione 1.7: Migliorati salvataggi su SD, memoria, compatibilità Turrican e gestione EasyFlash](https://www.biteyourconsole.net/wp-content/uploads/GimliDS1900-100x75.webp)

