Trucha Bug: Unterschied zwischen den Versionen

39 Bytes hinzugefügt ,  23. März 2017
(Die Seite wurde neu angelegt: „Der '''Trucha Bug''' (auch als '''Signing Bug''' oder '''strncmp Bug''' bekannt) war ein Fehler in früheren IOS auf der Nintendo Wii, welcher es erlaubte,…“)
 
Zeile 2: Zeile 2:


== Erklärung ==
== Erklärung ==
Zuerst entschlüsselt IOS bei der Installation eines Titels die Signatur und vergleicht die SHA1 des Payloads - der erste Fehler hierbei ist, dass der Payload-Hash ein binärer SHA1-Hash ist und kein ASCII-String und deshalb ein NULL-Byte ("\0") enthalten kann. Der weitaus größere Fehler ist, dass zum Vergleichen der Hashes die C-Funktion ''[http://www.cplusplus.com/reference/cstring/strncmp/ strncmp]'' benutzt wird, welche Strings vergleicht und beim ersten NULL-Byte stoppt:
Zuerst entschlüsselt IOS bei der Installation eines Titels die Signatur und vergleicht die SHA1 des Payloads mit einem anderen Hash in der Signatur - der erste Fehler hierbei ist, dass der Payload-Hash ein binärer SHA1-Hash ist und kein ASCII-String und deshalb ein NULL-Byte ("\0") enthalten kann. Der weitaus größere Fehler ist, dass zum Vergleichen der Hashes die C-Funktion ''[http://www.cplusplus.com/reference/cstring/strncmp/ strncmp]'' benutzt wird, welche Strings vergleicht und beim ersten NULL-Byte stoppt:


{{Zitat|Text=This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, '''until a terminating null-character is reached''', or until num characters match in both strings, whichever happens first.}}
{{Zitat|Text=This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, '''until a terminating null-character is reached''', or until num characters match in both strings, whichever happens first.}}