Il progetto “Nines (9S) – POC” rappresenta un esperimento avanzato sulle tecniche di iniezione di codice nella PlayStation 5, sviluppato da un gruppo di ricercatori e hacker.
Questo progetto esplora metodi innovativi per aggirare le limitazioni imposte dal sistema operativo della console, e in particolare le difficoltà nell’allocare memoria eseguibile.
buzzer-re +PS5+ DEV
"9S is an ELF injector for PS5 that uses the JIT memory space (which is executable) to manually allocate an ELF file" https://t.co/KppZZYulIn
— VicianaLab (@VicianaLab) December 3, 2024
L’idea alla base di questo progetto è di elevare i privilegi di processo attraverso il kernel della PS5, permettendo l’esecuzione di codice arbitrario.
Nella PS5, difatti non è possibile allocare memoria eseguibile tramite chiamate standard come mmap
o altre tecniche comuni.
Inoltre, approcci più tradizionali, come l’abuso dell’area di memoria JIT per scrivere shellcode, non sono accessibili a tutti i processi. Per aggirare queste limitazioni, il team ha cercato alternative più sofisticate.
L’idea centrale del progetto si basa sull’uso di primitive di lettura/scrittura (R/W) nel kernel della PlayStation 5, nella sezione .data
.
Queste primitive permettono di elevare i privilegi di un processo, ad esempio ottenendo l’accesso all’AuthorityID
. Quest’ultimo consente di eseguire il debugging di altri processi, come ad esempio il famoso ptrace
.
Con questi privilegi, diventa possibile invocare funzioni remote per caricare una libreria all’interno di un processo, creando così uno spazio adatto all’allocazione di memoria eseguibile.
Questo approccio è simile alla tecnica di Process Hollowing usata in ambiente Windows, dove un processo viene “svuotato” del suo contenuto originale per far spazio a codice arbitrario.
Una volta che la libreria è stata caricata con successo, il passo successivo è rimuovere i dati esistenti e caricare un file ELF o scrivere direttamente il shellcode nella memoria allocata.
Per attivare il codice, il team utilizza una chiamata remota alla funzione pthread_create
, che avvia l’esecuzione del shellcode nel processo target.
Esempio di iniezione su SceShellUI
Il progetto ha incluso anche l’iniezione di codice all’interno del SceShellUI, l’interfaccia della PS5, come esempio pratico dell’applicazione di queste tecniche.
Quando il codice è stato iniettato con successo, è stato possibile vedere la registrazione interna dell’interfaccia, dimostrando che il processo era stato modificato per eseguire codice non previsto.
Da sottolineare che “Nines (9S)” è un Proof of Concept (PoC), ovvero una dimostrazione di fattibilità di una determinata tecnica.
Il progetto non è ancora perfetto e ci sono molte aree in cui è possibile fare miglioramenti, ma offre un’importante base di partenza per future applicazioni e ricerche nel campo della sicurezza e dell’hacking su PlayStation 5.
I ricercatori invitano altri sviluppatori e hacker a utilizzare questo PoC come base per progetti personali, migliorando e adattando le tecniche secondo necessità.
Fonte: x.com