Trucha Bug: Unterschied zwischen den Versionen

K
Zeile 7: Zeile 7:


=== Fakesigning ===
=== Fakesigning ===
Das heißt, wenn strncmp auf ein NULL-Byte trifft, vergleicht es nicht mehr weiter, '''selbst wenn mehr Daten hinter dem NULL-Byte existieren'''. Hier kann einfach auf Bruteforcing zurückgegriffen werden: Einige Bytes der Daten werden geändert, bis der SHA-1-Hash mit <code>00</code> anfängt. Auch muss die Signatur genullt werden, da diese dann entschlüsselt null ergibt (da <code>Signatur hoch Public-Key-Exponent modulo Public-Key-Modulo</code> gleich <code>0</code> ergibt, eine Eigenschaft von RSA). Die strncmp-Funktion schließt das Vergleichen vorzeitig ab und die Signatur ist valide. Wenn dieser Fehler in boot1 ausgenutzt wird, lässt sich der boot2 modifizieren - der HackMii Installer nutzt dies, um [[BootMii]] dort zu installieren. Fakesigning erlaubt es letztendlich, unsignierte IOS und Systemmenüs zu installieren, sowieso unsignierte Spiele zu starten.
Das heißt, wenn strncmp auf ein NULL-Byte trifft, vergleicht es nicht mehr weiter, '''selbst wenn mehr Daten hinter dem NULL-Byte existieren'''. Hier kann einfach auf Bruteforcing zurückgegriffen werden: Einige Bytes der Daten werden geändert, bis der SHA-1-Hash mit <code>00</code> anfängt. Auch muss die Signatur genullt werden, da diese dann entschlüsselt null ergibt (da <code>0 hoch Public-Key-Exponent modulo Public-Key-Modulo</code> gleich <code>0</code> ergibt, eine Eigenschaft von RSA). Die strncmp-Funktion schließt das Vergleichen vorzeitig ab und die Signatur ist valide. Wenn dieser Fehler in boot1 ausgenutzt wird, lässt sich der boot2 modifizieren - der HackMii Installer nutzt dies, um [[BootMii]] dort zu installieren. Fakesigning erlaubt es letztendlich, unsignierte IOS und Systemmenüs zu installieren, sowieso unsignierte Spiele zu starten.


== Fix ==
== Fix ==