Home Homebrew Rilasciato BD-JB-Relapse v2.0.0: jailbreak PS5 offline via Blu-ray, ISO automatica e supporto...

Rilasciato BD-JB-Relapse v2.0.0: jailbreak PS5 offline via Blu-ray, ISO automatica e supporto firmware 13.42

295
0

Il developer zecoxao, in collaborazione con Claude ed EchoStretch ha da poco reso disponibile BD-JB-Relapse, una nuova versione per BD-J (Blu-ray Disc Java) dell’exploit del kernel PS5 Relapse, caricata tramite BD-JB5.

La novità più interessante di questa versione riguarda l’introduzione di un’immagine ISO avviabile con Relapse.jar già integrato, eliminando la necessità di trasferire manualmente il payload attraverso la rete. Una volta preparato il disco, sarà sufficiente inserirlo nella PS5 e avviarlo per dare inizio alla procedura.

BD-JB-Relapse nasce come porting dell’exploit kernel Relapse in ambiente BD-J. A differenza dell’implementazione originale basata su WebKit, questa variante sfrutta la macchina virtuale Java presente nel lettore Blu-ray della PS5.

Il funzionamento si basa inizialmente su BD-JB5, il sandbox escape realizzato da Gezine, che permette di uscire dall’ambiente isolato del lettore disc. Una volta superata questa protezione, viene caricato Relapse.jar, che contiene l’exploit necessario per ottenere l’accesso al kernel.

Relapse sfrutta una vulnerabilità di tipo use-after-free nella syscall aio_multi_wait (numero 663), attraverso la quale è possibile ottenere capacità di lettura e scrittura sulla memoria del kernel.

Dopo l’escalation dei privilegi, con l’ottenimento dei permessi root (uid 0), viene avviato elfldr, il loader che rimane in ascolto sulla porta TCP 9021 per ricevere ed eseguire payload ELF.

Il risultato è un ambiente jailbreak con accesso kernel R/W, che permette di avviare homebrew e altri payload compatibili senza dover passare dal browser della console.

Il cambiamento più significativo introdotto da BD-JB-Relapse riguarda proprio la distribuzione del payload. Nelle precedenti procedure era necessario utilizzare BD-JB5 e trasferire manualmente il file Relapse.jar attraverso RemoteJarLoader, sfruttando la porta 9025.

Con il nuovo aggiornamento viene invece distribuita un’immagine BD-JB-Relapse-2.0.0.iso, basata su BD-JB5 2.0 di Gezine e contenente già il file Relapse.jar.

In questo modo l’intera procedura può essere avviata direttamente dal disco, senza dover configurare un trasferimento di rete o utilizzare strumenti aggiuntivi per caricare il JAR.

Rimane comunque disponibile il file Relapse.jar separato, pensato per chi preferisce continuare a utilizzare il metodo tradizionale attraverso RemoteJarLoader. In entrambi i casi, una volta completato l’exploit, elfldr sarà disponibile sulla porta 9021.

Firmware PS5 compatibili

Il progetto dichiara il supporto fino al firmware 13.42, che rappresenta attualmente il riferimento principale per lo sviluppo e i test.

Le tabelle degli offset presenti nel codice coprono diverse versioni del software di sistema, dalla 7.00 alla 13.60, ma questo non significa che tutte siano state validate allo stesso modo.

I firmware 14.00 e successivi non sono supportati. È quindi importante verificare attentamente la versione installata sulla propria console prima di procedere.

Problemi conosciuti e stato dello sviluppo

BD-JB-Relapse viene ancora indicato come un progetto in fase di sviluppo (Work in Progress), nonostante le funzionalità principali siano già operative.

Tra i problemi affrontati durante lo sviluppo figurava un possibile kernel panic quando si chiudeva l’applicazione dopo aver eseguito l’exploit.

Un intervento di 0xXOR ha introdotto una correzione specifica, che dovrebbe aver risolto gran parte dei casi segnalati, anche se non è stata ancora verificata in maniera estesa su tutte le versioni firmware.

Alcuni OID sysctl rimangono inoltre modificati fino al successivo riavvio della console. Si tratta di un comportamento previsto e considerato non critico.

Note sull’implementazione (porting BD-J)

Il porting dell’exploit originale WebKit/JavaScript alla macchina virtuale BD-J ha richiesto alcune soluzioni per aggirare diversi vincoli della piattaforma presenti sui firmware più recenti:

  • Sezione .text di libkernel con sola esecuzione. Le pagine di codice non possono essere lette, quindi la scansione degli stub e la ricerca dei gadget ROP risultano impossibili. Le syscall vengono raggiunte attraverso i wrapper esportati da libkernel.
  • La vulnerabilità UAF richiede mode = 0, ma i wrapper rifiutano questo valore. sceKernelAioWaitRequests verifica gli argomenti e rifiuta mode = 0 (EINVAL), ma è proprio questa modalità ad attivare la vulnerabilità waiter UAF. Gli stub delle syscall originali non sono esportati, ma sono fisicamente presenti all’interno di libkernel_sys. Il porting li individua durante l’esecuzione calcolando offset fissi a partire da un riferimento individuato tramite dlsym, richiamandoli direttamente con mode = 0.
  • Assenza di una syscall generica syscall() e di JIT scrivibile prima dell’escalation. pipe2 viene ricostruita utilizzando pipe() e fcntl, mentre l’indirizzo sorgente KASLR viene ottenuto tramite connect() e getsockname, anziché utilizzare le API per l’elenco delle interfacce, non raggiungibili.
  • Ripristino pulito delle risorse. Dopo aver avviato il server dei payload, l’exploit restituisce a ogni pipe coinvolta il proprio buffer e la propria dimensione, salvati prima dell’operazione di incrocio, e le svuota. Ogni campo viene verificato attraverso la finestra di accesso lenta, in modo che la successiva chiamata a pipe_free_kmem() possa liberare correttamente l’allocazione originale all’uscita del processo. Gli OID sysctl compromessi non possono chiudere la finestra utilizzata per ripararli e vengono quindi lasciati intenzionalmente modificati fino al successivo avvio della console.

Utilizzo

Ogni release mette a disposizione due file:

  • BD-JB-Relapse-<version>.iso — Disco BD-RE avviabile basato su BD-JB5 2.0, con Relapse.jar integrato come payload.jar. È possibile masterizzarlo su un supporto BD-RE oppure renderlo disponibile attraverso il metodo normalmente utilizzato per avviare un disco BD-J, quindi inserirlo nel lettore della console. BD-JB5 esce dalla sandbox BD-J e il suo InternalJarLoader esegue automaticamente il JAR integrato in /disc/payload.jar, senza necessità di trasferimenti tramite rete. È il metodo più semplice per avviare Relapse.
  • Relapse.jar — payload autonomo, destinato alla procedura classica: caricamento tramite RemoteJarLoader di BD-JB5 (jar_client.py, porta 9025).

In entrambi i casi, una volta avviato Relapse, il loader ELF rimane in ascolto sulla porta 9021, pronto a ricevere i payload. I progressi vengono comunicati attraverso il logger UDP della console (RemoteLogger di BD-JB5, porta 18194); è necessario avviare prima il relativo log_client.py.

Problemi conosciuti

  • In precedenza, la chiusura dell’applicazione dopo l’esecuzione dell’exploit poteva provocare il riavvio della console. Le pipe incrociate venivano infatti liberate con pipe_buffer.buffer ancora impostato sull’indirizzo della struttura struct pipe dell’altra pipe. Di conseguenza, pipe_free_kmem() liberava un oggetto UMA come se fosse il buffer della pipe. La procedura di ripristino ora restituisce a entrambe le pipe i rispettivi buffer e dimensioni originali, azzera i valori count, in e out e verifica ogni campo attraverso una rilettura prima di procedere. Questa correzione è stata verificata sul firmware 12.60 nella versione upstream, ma non è ancora stata convalidata su questo porting con firmware 13.42. Se la chiusura dovesse ancora provocare un kernel panic, riavviare la console e ripetere la procedura.
  • I tre OID sysctl compromessi rimangono modificati fino al riavvio. In particolare, kern.smp.cpus potrebbe restituire un indirizzo del kernel anziché il numero di CPU. Finora non è stato osservato alcun problema nella catena di esecuzione successiva al jailbreak.
  • La finestra di scrittura sysctl non può riparare le pipe e ripristinare contemporaneamente i propri OID nella stessa operazione: la primitiva veloce sovrascrive il campo della pipe che deve riparare, mentre il ripristino degli OID distrugge la finestra di accesso lenta. La riparazione delle pipe ha la priorità, poiché i residui lasciati da questa operazione sono la causa dei kernel panic durante la chiusura.

Changelog

Il workflow di rilascio ora genera anche un’immagine disco BD-RE avviabile basata su Gezine/BD-JB5 2.0, con Relapse.jar integrato direttamente nel disco come payload:

  • Imposta InitXlet.UseInternalJar di BD-JB5 su true, in modo che InternalJarLoader esegua automaticamente /disc/payload.jar dopo l’uscita dalla sandbox, senza attendere il caricamento tramite RemoteJarLoader sulla rete. Relapse.jar viene inserito nella directory principale del disco con il nome payload.jar.
  • Compila il loader BD-JB5 utilizzando gli stub pubblici di bdj-sdk (enhanced-stubs.zip e sony-stubs.jar), con l’opzione -XDignore.symbol.file=true per gli import sun.launcher e jdk.internal, senza richiedere JAR proprietari del firmware. 00000.jar viene firmato con bdsigner, mentre l’immagine UDF viene generata con makefs (compilato automaticamente nella CI dal sottomodulo makefs_termux).
  • Pubblica entrambi i file: Relapse.jar e BD-JB-Relapse-<tag>.iso.

Download: BD JB Relapse v2.0.0.iso

Download: Relapse.jar

Download: Source code BD JB Relapse v2.0.0

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.

Ultimo aggiornamento 2026-11-03 / Link di affiliazione / Immagini da Amazon Product Advertising API

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.