Home News Disponibile il nuovo kernel exploit 4.05 della PlayStation 4 – ora i...

Disponibile il nuovo kernel exploit 4.05 della PlayStation 4 – ora i backup potranno essere eseguiti anche sul firmware 4.05

248
53

Il developer SpecterDev ha pubblicato il suo nuovo kernel exploit per il firmware 4.05 della PlayStation 4, sviluppato anche grazie alla documentazione resa dal team Fail0verflow.

In questo progetto è possibile trovare un’implementazione completa del kernel exploit namedobj per PlayStation 4 sul firmware 4.05.

Il bug

Il bug è essenzialmente di tipo type confusion con il campo ‘kind’ dell’oggetto ‘id_entry’ utilizzato negli oggetti denominati. Gli oggetti denominati sono oggetti che dispongono di proprietà associate (ad esempio un nome per come lo si potrebbe immaginare), che punta all’oggetto reale nell’heap. Specificando un type 0x5000 per l’oggetto, è possibile causare una type confusion.

Ora è necessario trovare un’altra area del kernel che può eccedere per corrompere l’oggetto. Fortunatamente c’è sys_mdbg_service().

Questo ci permetterà di sovrascrivere i 32 bit più bassi di un puntatore free() con sys_namedobj_delete().

Da qui noi possiamo andare a creare una situazione use-after-free che è possibile utilizzare per ottenere l’esecuzione di codice spruzzando oggetti falsi nel mucchio e corrompendo un puntatore di funzione.

Strategia

Una buona strategia per sfruttare questo bug è la seguente:

  1. Perdere un oggetto di destinazione dal mucchio del kernel che non solo dispone di puntatori di funzioni che possono essere danneggiati, ma è anche ideale per evitare che si blocchi il kernel.
  2. Creare type confusion tramite sys_namedobj_create() con il flag 0x5000 (o flag 0x4000 a causa della bit OR).
  3. Impostare un kernel ROP chain in userland. Idealmente in questa ROP chain si desidera disattivare la protezione di scrittura del kernel, eseguire le patch desiderate (come la mappatura di memoria RWX) e pivot per tornare in maniera efficace.
  4. Sovrascrivere i 32 bit più bassi nell’oggetto con sys_mdbg_service() con i 32 bit inferiori dell’indirizzo dell’oggetto target. Non possiamo sovrascrivere i 32 bit superiori, ma fortunatamente il puntatore memorizzato in precedenza era comunque un puntatore di heap, quindi i 32 bit superiori verranno impostati sul prefisso dell’indirizzo heap di FreeBSD (0xFFFFYYYYxxxxxxxx dove YYYY viene randomizzato da ASLR all’avvio).
  5. Attivare free() tramite sys_namedobj_delete().
  6. Spruzzare l’oggetto falso sull’heap con un puntatore di funzione che indica il kROP chain creato in precedenza.
  7. Trova una funzione che utilizza l’oggetto corrotto e attiva il puntatore funzione da leggere.
  8. Ora hai l’esecuzione di codice e la tua catena kROP sta funzionando in ring0! Sìì!
  9. Correggere l’oggetto free(), perché se non lo fai, appena il webkit esce, il kernel si blocca perché cercherà free() al tuo oggetto e di portare a un doppio free().
  10. Ritorno in userland con successo.

Patch incluse

Le seguenti patch vengono create di default nella catena del kernel ROP:

  • Disabilita la protezione da scrittura del kernel.
  • Permette il mapping della memoria RWX (read-write-execute).
  • Risoluzione dinamica (sys_dynlib_dlsym) consentita da qualsiasi processo.
  • Chiamata di sistema personalizzata #11 (kexec ()) per eseguire codice arbitrario in modalità kernel.
  • Consenti agli utenti non privilegiati di chiamare setuid(0) correttamente. Funziona come controllo di stato, raddoppiato come escalation di privilegi.

Note

  • Questo exploit si dimostra incredibilmente stabile intorno al 95%. L’exploit nel webKit si blocca molto raramente e lo stesso vale per il kernel.
  • Ho creato una patch in modo che il kernel venga eseguito una volta sola sul sistema, è ancora possibile creare patch aggiuntive tramite payload.
  • Viene aggiunta una syscall personalizzata (# 11) per eseguire qualsiasi memoria RWX in modalità kernel, che può essere utilizzata per eseguire payload utile per poter eseguire operazioni come jailbreaking e patch del kernel.
  • Non viene fornito alcun SDK in questa versione, tuttavia uno barebone per iniziare con una data successiva.

Download: Kernel Exploit 4.05

Se non riuscite a impostare un vostro server web sul PC potrete scegliere di visitare dal browser web della PlayStation 4 la pagina http://www.sprx.solutions/PS4/, il link ci è stato offerto dall’utente Skillsofcape su twitter.