Home Homebrew PS5_kldload: il loader kernel che apre nuove possibilità di ricerca sulla PlayStation...

PS5_kldload: il loader kernel che apre nuove possibilità di ricerca sulla PlayStation 5 fino al firmware 5.50

184
0

Il 2026 si sta rivelando un anno particolarmente vivace per la scena homebrew e per la ricerca legata al sistema della console PlayStation 5, con nuovi strumenti, aggiornamenti e scoperte tecniche che continuano ad ampliare le possibilità offerte dall’hardware Sony.

Tra i progetti più interessanti emersi di recente spicca PS5_kldload, un tool open-source sviluppato dal ricercatore buzzer-re che introduce sulla console Sony un concetto familiare a chi conosce il mondo dei sistemi Unix: il caricamento dinamico dei moduli kernel, proprio come avviene con il comando kldload nei sistemi basati su FreeBSD.

Questo progetto rappresenta un passo importante per chi studia l’architettura della PS5 o sviluppa strumenti avanzati per la scena homebrew.

L’idea alla base è relativamente semplice: permettere l’esecuzione di codice direttamente nel kernel della console caricandolo come se fosse un vero modulo del sistema operativo.

In questo modo i ricercatori possono sperimentare con payload a basso livello, analizzare il comportamento del kernel e sviluppare strumenti di debug molto più avanzati rispetto ai classici payload utente.

Il funzionamento di PS5_kldload si basa sulle primitive di lettura e scrittura del kernel che diventano disponibili una volta eseguito un jailbreak.

In presenza di exploit che consentono l’accesso in lettura e scrittura alla memoria del kernel, come quelli utilizzati da strumenti della scena homebrew come GoldHEN o exploit di rete come PPPwn, il loader è in grado di allocare pagine di memoria nel kernel, inserirvi codice personalizzato ed eseguirlo come thread del kernel.

In pratica il tool richiede al sistema operativo l’allocazione di nuove pagine di memoria con permessi di lettura, scrittura ed esecuzione, scrive al loro interno il payload inviato dall’utente e avvia quel codice come un vero kthread.

Questo approccio consente l’esecuzione di codice kernel reale, permettendo ad esempio di stampare messaggi di debug direttamente dal kernel, analizzare strutture interne del sistema o leggere registri della CPU come CR0 e CR3.

Per comprendere perché questo metodo funzioni solo su alcune versioni del firmware, bisogna guardare più da vicino al sistema di sicurezza della console.

A differenza della PlayStation 4, dove in passato era possibile modificare direttamente il kernel in esecuzione per forzare l’allocazione di memoria eseguibile nella funzione kmem_alloc, la PS5 introduce ulteriori livelli di protezione grazie alla presenza dell’hypervisor.

Questo componente gestisce le risorse della console a un livello più basso del sistema operativo e impedisce molte delle tecniche che erano state utilizzate sulla generazione precedente.

Tra le protezioni più importanti troviamo la tecnologia XOM (Execute-Only Memory), che impedisce la lettura e la modifica diretta della sezione .text del kernel, e la tecnologia GMET (Guest Mode Execute Trap) sviluppata da AMD.

GMET è progettata per controllare quali pagine di memoria possono essere eseguite dal sistema operativo che gira come guest sotto l’hypervisor.

Quando GMET è configurato correttamente, il sistema operativo non può semplicemente richiedere nuove pagine eseguibili né eseguire codice al di fuori delle regioni autorizzate.

In altre parole, anche con accesso al kernel diventa molto più difficile eseguire codice arbitrario, perché l’hypervisor blocca la creazione di nuove aree di memoria con permessi di esecuzione.

Il motivo per cui PS5_kldload funziona è legato al fatto che nelle prime versioni del firmware della PS5 questa protezione non era ancora configurata completamente. Fino al firmware 5.50, il kernel può ancora richiedere pagine di memoria eseguibili, consentendo al loader di allocare memoria RWX, scrivere al suo interno codice personalizzato e avviarlo come thread del kernel.

In questo scenario il tool riesce a eseguire moduli kernel reali e a offrire agli sviluppatori un ambiente di sperimentazione molto potente.

La situazione cambia però con il firmware 6.50. A partire da questa versione Sony ha configurato correttamente GMET nell’hypervisor della console.

Con questa modifica il sistema blocca le richieste di nuove pagine eseguibili provenienti dal kernel, impedendo di fatto il meccanismo utilizzato da PS5_kldload. Senza la possibilità di allocare memoria con permessi di esecuzione, il loader non può più avviare payload kernel attraverso questo metodo.

Per questo motivo il supporto reale del progetto si ferma attualmente ai firmware fino alla versione 5.50. I firmware più recenti, inclusi 6.x, 7.x e successivi, richiederanno probabilmente nuove tecniche di exploit o approcci differenti per ottenere nuovamente l’esecuzione di codice a livello kernel.

Nonostante questa limitazione, PS5_kldload rimane uno degli strumenti più interessanti per la ricerca sulla PS5.

Permette di studiare il comportamento del kernel in modo molto più approfondito, facilitando lo sviluppo di strumenti di debugging, l’analisi delle strutture interne del sistema e potenzialmente anche futuri porting o esperimenti legati a sistemi alternativi.

Guida alla compilazione e utilizzo

Prima di iniziare, assicurarsi di avere installato l’ultima versione dell’SDK necessario per la compilazione. Successivamente clonare la repository includendo tutte le dipendenze, utilizzando il comando: git clone https://github.com/buzzer-re/PS5_kldload.git

Una volta scaricato il progetto, aprire il Makefile e modificare l’indirizzo IP inserendo quello della console. Dopo aver configurato correttamente l’IP, compilare ed eseguire lo strumento con il seguente comando: make clean && make && make test

Il programma inizierà ad ascoltare sulla porta 9022 e sarà in grado di caricare ed eseguire payload kernel direttamente in modalità kernel.

Esempio di payload

I payload kernel possono essere scritti in modo simile a quelli sviluppati in passato per PlayStation 4. Per facilitare lo sviluppo è possibile utilizzare l’SDK ps5-kld-sdk, che fornisce le librerie e le funzioni necessarie per interagire con il kernel.

Di seguito è riportato un semplice esempio Hello World.

C

#include <ps5kld/kernel.h>
#include <ps5kld/intrin.h>
#include <ps5kld/dmap.h>
#include <ps5kld/machine/idt.h>

int module_start(kproc_args* args)
{
    kprintf("Hello from kernel SDK, running on fw: %x\n", args->fwver);
    kprintf("Kernel base: %#02lx\n", args->kdata_base);

    uint8_t idt[10];
    __sidt((uint64_t*)idt);

    IDTR* idtr = (IDTR*) idt;

    kprintf("CR3: %x\nCR0: %x\nIDT base: %#02lx\n",
        __readcr3(),
        __readcr0(),
        idtr->base
    );


    return 0;
}

Questo esempio stampa alcune informazioni utili direttamente nei log del kernel, tra cui:

  • La versione del firmware in esecuzione.
  • L’indirizzo base del kernel.
  • I registri CR3 e CR0.
  • La posizione della IDT (Interrupt Descriptor Table).

Invio del payload alla console

Una volta compilato il file binario, è possibile inviarlo alla console tramite il comando: socat -t 99999999 - TCP:PS5_IP:9022 < hello_world.bin

Sostituire PS5_IP con l’indirizzo IP della console. Dopo l’invio, sarà possibile controllare i log del kernel (klogs) per verificare che il payload sia stato eseguito correttamente e per visualizzare i messaggi stampati dal codice.

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-04-12 / 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.