Trucha Bug: Unterschied zwischen den Versionen
ICON (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
ICON (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 19: | Zeile 19: | ||
{{Navbox IOS}} | {{Navbox IOS}} | ||
{{WiiTopicon}} |
Version vom 28. April 2017, 00:56 Uhr
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, die digitale Signatur von Software so zu fälschen, dass es so aussieht, als käme diese offiziell direkt von Nintendo. Der Bug wurde zum ersten Mal im Februar 2008 mit dem Wii-Systemmenü 3.2 im neuen IOS37 behoben und dann im 23. Oktober Update in allen IOS.
Erklärung
Zuerst entschlüsselt IOS bei der Installation eines Titels die Signatur und vergleicht die SHA1 des Payloads mit einem anderen Hash in der Signatur - das erste Problem hierbei ist, dass der Payload-Hash ein binärer SHA1-Hash ist und kein ASCII-String und deshalb ein NULL-Byte ("\0") enthalten kann. Das weitaus größere Problem ist jedoch, dass zum Vergleichen der Hashes die C-Funktion strncmp, statt memcmp benutzt wird, welche Strings vergleicht und beim ersten NULL-Byte stoppt:
„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.“
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 00 anfängt - die strncmp-Funktion bricht ab und die Signatur ist valide.
Fix
Zum ersten Mal wurde der Bug im IOS37 behoben, welches mit dem Wii-Systemmenü 3.2 veröffentlicht wurde. Später wurde der Trucha Bug in allen IOS im 23. Oktober 2008 Update behoben - außer im IOS16.
IOS16
Das IOS16 (0000000100000010) war ursprünglich auf der Wii Backup Disc vorhanden und wurde von jemanden, in dessen Wii eine solche Disc vergessen wurde, unerlaubt veröffentlicht. Als Nintendo den Trucha Bug in jedem IOS gefixt hat, haben sie nicht daran gedacht, den Trucha Bug auch im IOS16 zu beheben, da dieses ja nie veröffentlicht werden sollte.
Nach diesem Update war das IOS16 das letzte IOS mit dem Trucha Bug und wurde unerlaubt genutzt, um andere IOS und das Systemmenü auf eine Version ohne den gefixten Trucha Bug zu downgraden, um Raubkopien abzuspielen. Mit dem Wii-Systemmenü 4.0 wurde das IOS16 gestubbt und somit der Trucha Bug endgültig in allen IOS behoben.