Pubblicato un nuovo aggiornamento per UDPIH (acronimo di USB Descriptor Parsing Is Hard), l’exploit sfrutta la parsing dei descrittori dell’USB Host Stack della console Wii U.
La console Wii U utilizza un chip ARM che esegue un sistema operativo embedded chiamato IOSU, composto da moduli che gestiscono i dispositivi USB tramite il modulo IOS-USB.
Quest’ultimo include lo stack UHS, responsabile del parsing dei descrittori USB di dispositivi collegati alle porte USB esterne. Ogni dispositivo USB fornisce descrittori che descrivono le sue caratteristiche, come versione USB, Vendor ID e Product ID, oltre alle configurazioni disponibili.
Durante il parsing, UHS legge il descrittore del dispositivo e quello della configurazione, caricando fino a 32 configurazioni in memoria.
Tuttavia, non verifica che il valore di lunghezza totale (wTotalLength
) dichiarato nel descrittore della configurazione corrisponda alla lunghezza effettiva dei dati, consentendo di accedere oltre i limiti del buffer.
Questo difetto consente di manipolare i puntatori dell’heap creando blocchi corrotti. Gli header dei blocchi nell’heap contengono un “magic value”, dimensione e puntatori ai blocchi adiacenti.
Manipolando questi puntatori, si può far sì che le nuove allocazioni puntino a indirizzi controllati. Usando questa tecnica, è possibile corrompere il “UHS Control Transfer Manager” (UhsCtrlXferMgr), responsabile della gestione dei trasferimenti USB.
Sovrascrivendo il gestore dei trasferimenti, si possono inserire eventi personalizzati che permettono di scrivere dati arbitrari nella memoria della console.
Questo processo culmina nell’esecuzione di codice a livello di kernel utilizzando una ROP chain basata su quelle di exploit precedenti come Mocha e Bluubomb.
La nuova release introduce il supporto per le schede Pico 2 basate su RP2350. Il kernel è stato inoltre ricompilato utilizzando l’ultima versione di devkitARM, garantendo miglioramenti in termini di compatibilità e performance.
Requisiti
- Una console Wii U.
- Uno dei seguenti dispositivi supportati:
- Raspberry Pi Pico.
- Raspberry Pi Zero (W)/A/A+/Zero 2 W/4/5.
- Steam Deck.
- Console Nintendo Switch capace di eseguire
udpih_nxpayload
Note importanti
- Non devono essere collegati altri dispositivi USB alla console.
- Utilizzare solo le porte USB frontali della console, le porte posteriori non funzionano.
- Se la console ha la modalità standby abilitata, scollegare il cavo di alimentazione e accenderla dallo stato di coldboot completo.
- Copiare l’ultima release del
recovery_menu
nella root della scheda SD formattata in FAT32. - Inserire la scheda SD nella console e accenderla.
- Collegare il dispositivo UDPIH preparato appena compare il logo “Wii U” su TV o Gamepad. Il tempismo è cruciale; se si è già nel menu, l’exploit non funzionerà.
Istruzioni
Seguire le guide di setup specifiche per il dispositivo scelto:
Avvio del recovery_menu
Note importanti per il corretto funzionamento
- Copiare l’ultima release del
recovery_menu
nella root della scheda SD formattata in FAT32. - Inserire la scheda SD nella console e accenderla.
- Appena appare il logo “Wii U” sulla TV o sul Gamepad, collegare il dispositivo UDPIH preparato. Il tempismo è importante; se si è già nel menu, l’exploit non funzionerà.
- A seconda del dispositivo, potrebbe essere necessario collegarlo prima o dopo. Potrebbero essere necessari diversi tentativi.
- Se non c’è output video o lo schermo è distorto, il tempismo è probabilmente sbagliato.
- Dopo alcuni secondi, si dovrebbe essere nel menu di recupero.
Consultare il README del recovery_menu
per ulteriori informazioni su questo menu.
Changelog
- Pico:
- Ora sono disponibili le release per le schede Pico 2 basate su RP2350.
- Linux:
- Nessuna modifica specifica per Linux.
- Common:
- Codice del kernel costruito con l’ultimo devkitARM.
Download: arm_kernel.bin.h
Download: udpih_pico.uf2
Download: udpih_pico2.uf2
Download: Source code UDPIH Release 4
Fonte: github.com