ReSwitched-Team macht Projekte öffentlich

Das ReSwitched-Team hat sich heute nach einigen Monaten Abwesenheit zurückgemeldet. So macht man die eigenen Projekte öffentlich und präsentiert ROhan, einen Work-In-Progress Exploit für Code-Ausführung im Userland.

So hat man das Exploit-Toolkit "PegaSwitch 3.0" für die Firmware 2.0.0 bis 3.0.0 und ein Open-Source Homebrew-SDK mit dem Namen "libtransistor" veröffentlicht. Dazu gesellt sich "Mephisto", ein hoch-performanter Emulator für Switch-Binarys. Unter "SwIPC" können Interessierte auch IPC-Spezifikationen finden.

Das Highlight ist aber definitiv ROhan. Dabei handelt es sich um einen Exploit für Code-Ausführung im Userland nur für die Firmware 3.0.0. Dazu wird u.a. ein Fehler im Service-Manager ("sm") des SwitchOS ausgenutzt, welcher mit der Firmware 3.0.1 behoben wurde. Das ist aber noch nicht alles: es wird auch ein kompromittiertes Sysmodul benötigt, mit dem ein Man-In-The-Middle auf die spl:-Services ausgeführt werden kann, welcher die Frage nach dem Debug-Mode immer mit "ja" beantwortet (IsDebugMode). Das wird eigentlich dazu benutzt, das Testen zu vereinfachen, kann aber hier dazu genutzt werden, die Signaturen-Checks zu überspringen.

Dem SwitchOS wird also vorgespielt, dass eine Binary im Entwicklermodus geladen wird, was die Signaturen (ob diese Binary von Nintendo stammt) nicht prüft.

Ein kompromittiertes Systemmodul wird benötigt, da der ReplyAndReceive-Syscall (der einen Service imitiert), im Internetbrowser nicht existiert – also übernimmt man kurzerhand einfach ein anderes Modul. Auf 3.0.0 enthält das sdb-Systemmodul, welches auch mit dieser Firmware eingeführt wurde, einige Fehler, was es zu einem attraktiven Angriffsziel macht.

Allerdings fehlt noch eine ROP-/JOP-Kette mit der arbiträre/"fremde" Funktionen aufgerufen werden können – das einzige, fehlende Stück zur Userland Code-Ausführung.

Das alles ist natürlich primär für Entwickler interessant, aber für Nutzer ist es interessant zu wissen, dass es vorangeht. Das Einzige, was wir euch mitgeben können, ist, dass ihr auf keinen Fall eure Switch auf 3.0.1+ aktualisieren solltet. Wer gezielt auf 3.0.0 aktualisieren möchte, kann dies bspw. mit Pokkén Tournament DX tun.

UPDATE: ROhan ausführlicher beschrieben.