Home Nintendo New Nintendo 3DS LazyPixie è il nuovo exploit per console portatile 3DS presentato durante la...

LazyPixie è il nuovo exploit per console portatile 3DS presentato durante la conferenza 36c3

196
2

Ricordate l’aggiornamento 11.12.0-44 che Nintendo ha pubblicato per le console portatili 2DS e 3DS all’inizio di Novembre? Ebbene, tale aggiornamento è servito per correggere un kernel exploit contenuto all’interno del modulo StreetPass.

L’exploit è stato rivelato durante il primo giorno della conferenza 36c3 (Chaos Communication Congress). Allo stato attuale per poter eseguire questo exploit, oltre al firmware 11.12 bisogna riuscire ad eseguire codice in un qualsiasi servizio Arm11.

Per chi non ha familiarità con l’architettura hardware e software della console portatile 3DS, ecco un breve riassunto:

  • La console portatile 3DS monta due processori principali: un Arm11 MPCORE (a 2 o 4 core), che esegue il sistema principale, i giochi, ecc.. e un Arm9TDMI, che gestisce gli accessi al dispositivo di archiviazione e le attività di sicurezza
  • Entrambi i processori eseguono lo stesso sistema operativo, Horizon OS. Il kernel è un microkernel e i driver sono implementati in userland (in “sysmodules”).
    • Ogni processo Arm11 ha una whitelist per le chiamate di sistema, un elenco di accesso al servizio e un elenco di accesso MMIO:
      • I giochi e le altre applicazioni hanno i privilegi minimi.
      • I “servizi” hanno più privilegi, compresa ovviamente la possibilità di rispondere alle richieste di servizio.
    • Arm9 esegue una versione ridotta del sistema operativo. Esiste un solo processo di userland in esecuzione su Arm9, chiamato Process9 , al quale è consentito eseguire codice in modalità supervisore!
  • Entrambi i processori comunicano tra loro attraverso i registri MMX PXI (che sono fondamentalmente due FIFO).
    • Il sysmodule Arm11 pxi (che è anche un driver) comunica con Process9 in questo modo. Inoltra tutte le richieste IPC e le risposte che riceve così come sono.

Ciò significa che spetta al kernel Arm11 esporre i buffer provenienti dai processi Arm11 dell’utente come blocchi di memoria fisica con le rispettive dimensioni; il kernel Arm11 deve garantire anche la coerenza della cache (tramite operazioni cache pulite e/o non valide).

Ciò è ottenuto dai driver Arm11 che inviano uno speciale tipo di descrittore di buffer IPC. I descrittori PXI richiedono al processo Arm11 di destinazione di impostare buffer allineati alla pagina in cui le coppie di metadati “indirizzo fisico” e “dimensione” verranno scritte dal kernel Arm11.

Questo particolare tipo di descrittore di buffer viene utilizzato solo quando si inviano comandi al sysmodule pxi (che poi li inoltra a Process9) e da Process9 su una risposta.

Ciò significa che molto probabilmente la gestione del codice del kernel è stata molto meno testata e rivista rispetto a tipi di descrittori più comuni ed è più soggetta a bug.

Da qui è successo che il codice che gestisce i descrittori del buffer PXI in una richiesta (non una risposta) presentava effettivamente criticità alla sicurezza!

Per ulteriori informazioni e il download dei file riguardanti l’exploit LazyPixie, visitare la repository a questo indirizzo.

Articolo precedente[Scena Wii] Rilasciato Swiss v0.4 r748
Articolo successivo[Scena PS Vita] Rilasciato plugin VitaGrafix v5.0.0
Sono Nato nel 1980 e da diversi anni coltivo la passione per tutto ciò che riguarda il mondo dei videogiochi, ho vissuto l'era degli home computer con il Commodore 64 e l'Amiga 500, da sempre appassionato di giochi di ruolo e di titoli di avventura.