Was ist Sighax?

Auf der 33C3 wurde Sighax gezeigt und am 20. Mai 2017 veröffentlicht. Dabei handelt es sich um einen Bootrom-Exploit für den 3DS. Da es immer noch viele Missverständnisse gibt, was Sighax eigentlich genau ist und wo der Unterschied zu arm9loaderhax ist, hat SciresM mal aufgeklärt.

Sighax ist ein Exploit, der einen Fehler in der ARM9-Bootrom ausnutzt, um invalide Signaturen für fremde Firmware als valide erscheinen zu lassen. Das heißt, dass der 3DS dann eine modifizierte Firmware bootet, die nicht von Nintendo stammt, aber die Konsole selbst “denkt”, dass dies so wäre. Normalerweise wird eine modifizierte Firmware abgelehnt, wenn der Header der Firmware-Partition im NAND geändert wird. Sighax erlaubt es jedoch, jeden modifizierten Firmware-Header valide zu machen und so kann eigener Code von den Firmware-Partitionen im NAND ausgeführt werden.

Für eher nicht so technisch-begabte: Eine Signatur ist ein “Beweis der Echtheit”, welche normalerweise nur Nintendo generieren kann. Eine valide Signatur heißt demzufolge, dass dieser Inhalt von Nintendo stammt/stammen sollte.

Wieso hat die Veröffentlichung so lange gedauert?
Dazu musste eine “perfekte” Signatur gefunden werden, die für jede Firmware valide ist. Um zu wissen, welche Signaturen perfekt sind, muss der Code, der die Signaturen in der geschützten ARM9-Bootrom parst, angesehen werden. Das Dumpen der ARM9-Bootrom ist nur mit spezieller Hardware möglich gewesen, was sehr lange gedauert hat.

Was kann man mit Sighax tun?
Um zu verstehen, was uns mit Sighax ermöglicht wird, müssen wir zuerst verstehen, was passiert, wenn der 3DS angeschaltet wird und was arm9loaderhax tut. Es wird kompliziert, also aufmerksam lesen! Wenn der 3DS angeschaltet wird, liest die Bootrom die Firmware in den Speicher, validiert sie, sperrt sich selbst bei erfolgreicher Validierung und startet die Firmware.

Arm9loaderhax nutzt eine “Eigenart” in einer bestimmten Firmware-Revision aus. Der New3DS hat ein Stück Code, eine Art Mittelsmann, der vor der eigentlichen Firmware geladen wird – der arm9loader/kernel9loader. Dieser ist dafür zuständig, die New3DS-Firmware zu entschlüsseln. Er tut dies mit Schlüsseln, die im NAND gespeichert sind (aus der OTP-Region generiert, die danach gesperrt wird); danach wird die Firmware gestartet. Arm9loaderhax nutzt die fehlerhafte Validierung in einer bestimmten Revision vom arm9loader aus, um Kontrolle zu erlangen, bevor die Firmware gestartet wird.

Sighax ersetzt die Firmware-Partition direkt – die Bootrom lädt damit unsere Firmware, anstatt der arm9loader.

Hier eine kleine Übersicht über den Bootprozess:

  • Normaler Start: Bootrom -> Bootrom sperrt sich -> Arm9loader -> OTP sperrt sich -> Firmware
  • Mit arm9loaderhax: Bootrom -> Bootrom sperrt sich -> Arm9loader -> OTP sperrt sich -> Unser Hax
  • Mit Sighax: Bootrom -> Bootrom sperrt sich -> Unser Hax

Damit ist es viel einfacher zu verstehen, wie sich Sighax von arm9loaderhax unterscheidet. Sehr wichtig ist, dass bei beiden Hacks die originale Nintendo-Firmware nicht geladen wird – stattdessen wird unser Hack geladen. Mit arm9loaderhax erlangen wir nach dem arm9loader und OTP-Lockout Zugriff, aber noch vor der Firmware. Mit Sighax erlangen wir Zugriff, wenn der arm9loader gestartet wird – also noch vor dem OTP-Lockout.

Da Sighax so früh startet, braucht es weniger Vorbereitung für die Installation. Ihr kennt alle das nervige Prozedere: Bei der Installation von arm9loaderhax muss zuerst die OTP gedumpt werden, was nur auf 2.1 geht, da die OTP-Region dort nicht gesperrt wird. Damit lassen sich dann Berechnungen durchführen, um die “gefälschten” Schlüssel zu erstellen. Sighax braucht keinen Dump der OTP. Mit Sighax kann außerdem die geschützte ARM11-Bootrom gedumpt werden.

Für Endnutzer läuft es am Ende auf das gleiche hinaus – ein Payload wird einfach von der SD-Karte geladen und gestartet. Lediglich der Installationsprozess wird stark vereinfacht.

Dinge, die Sighax erlaubt, aber arm9loaderhax nicht:

  • Ausführen, ohne, dass die OTP-Region gesperrt wird
  • Nintendo kann die Installation nicht verhindern, außer mit einer neuen Hardware-Revision
    • Trotzdem werden entweder ein Hardmod oder ein ARM9 Kernel-Exploit benötigt
  • Einfachere Installation ohne 2.1-Downgrade
  • Dumpen der geschützten ARM11-Bootrom
  • Mit anderen Sicherheitslücken ist es vielleicht möglich, die ARM9-Bootrom zu dumpen – das wäre zwar lustig, aber sinnlos, da Sighax für die Installation schon einen Dump dieser braucht
  • Eine saubere Umgebung für Entwickler

Dinge, die Sighax NICHT erlaubt, aber die User glauben es, dass dies möglich ist:

  • Eine “echte CFW”, anstatt die “Firmware zu patchen” – Arm9loaderhax läuft, bevor die Firmware geladen wird, wie man oben lesen konnte. Eine “echte CFW” ist auch mit arm9loaderhax möglich, es hat nur noch keiner eine gemacht
  • Quasi alles, was nicht in der Liste oben steht

Dieser Beitrag ist eine Übersetzung aus dem Englischen, plus ein paar kleine Ergänzungen. Der Originalpost stammt von SciresM.