Zum Jahreswechsel 1999/2000 gab es dystopische Vorhersagen, von dem Ausfall von Computersystemen bis hin zu Fehlstarts von Atomwaffensystemen. Grund dafür war der als Millenium-Bug oder Y2K-Bug bekannt gewordene Fehler – Und 2038 erwartet uns mit dem Y2K38-Bug ein verwandtes Problem.
Was ist der Milleniums-Bug?
Heutzutage wird Speicherplatz immer billiger und Festplatten immer größer. Doch das war nicht immer so, in den 60ern und 70ern wurde um jedes einzelne Bit gekämpft. Wurde ein Datum gespeichert, so konnte man sehr einfach zwei Speicherstellen sparen – durch das Weglassen der Hunderter- und Tausenderziffern einer Jahreszahl. Das Jahr 1960 wurde somit als “60” gespeichert und bei der Interpretation automatisch davon ausgegangen, dass es sich um das 20. Jahrhundert handelt. Es wurde nicht berücksichtigt, dass die Programme eine über die Jahrtausendwende gehende Lebenszeit besitzen könnten. Zum Jahreswechsel 1999/2000 sprang die Jahreszahl nun von “99”, was als 1999 interpretiert wurde, auf “00”, was häufig als “1900” interpretiert wurde. Die Behebung dieses Fehlers vor dem Jahreswechsel verschlang Milliarden. Wie der SPIEGEL in einem Artikel über die ausbleibende Apokalypse des Y2K-Bugs berichtete, wurde durch diesen Fehler beispielsweise Steuerforderungen falsch berechnet und ein US-Amerikaner erhielt eine Steuerforderung über die letzten 100 Jahre.
Die Ursache des Y2K38-Bugs
Das grundsätzliche Problem des Y2K38-Bugs basiert auf den Darstellungen, die Computer für Zeitangaben verwenden. Hierfür wird die Zeit ab einem fest definierten Punkt gezählt und als Binärzahl gespeichert. Verbreitet ist dafür die Unixzeit, die die Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC zählt. Für die gezählten Sekunden müssen mindestens 32 Stellen einer Binärzahl zur Verfügung stehen. Potenziell sind also 2^32 Sekunden (ca. 136 Jahre) darstellbar. Die Unixzeit verwendet jedoch von den 32 Stellen die erste als Vorzeichen und kann somit ab 1970 +- 2^31 Sekunden (ca. 68 Jahre) darstellen. Und genau das wird bei Y2K38 ein Problem.
Vor allem auf älteren Systemen wird die Unixzeit mit 32 Bit dargestellt. Werden nun die oben genannten 68 Jahre überschritten, kommt es zu einem sogenannten arithmetischen Überlauf. Dieser Überlauf ist der Y2K38-Fehler. Statt weiterhin hochzuzählen, springt die erste Stelle der 32 Zeichen langen Binärzahl von “0” auf “1”. Da diese Stelle aber angibt, ob die Zahl positiv oder negativ ist, springt das Datum schlagartig um ungefähr 136 Jahre zurück. Um 03:14:07 am 19. Januar 2038 folgt der Sprung auf 20:45:52 Uhr des 13. Dezembers 1901. Die unten gezeigte Animation stellt den Überlauf dar.
Die Auswirkungen des Y2K38-Fehlers
Betriebssysteme, die auf der Unixzeit basieren, werden häufig von Servern oder eingebetteten Systemen wie Router oder Messgeräten benutzt. Da vor allem Server meist deutlich länger als Heimcomputer betrieben werden, ist es nicht auszuschließen, dass Programme oder leistungsschwache Elektrogeräte, die mit 32 Bit rechnen, falsche Anzeigen ausgeben oder Fehlfunktionen haben. Bedenkt man, wie viele Geräte mittlerweile einen eigenen Prozessor besitzen und in unseren Alltag integriert sind, ist es sehr schwierig vorherzusehen, wie viele davon bis zum Jahr 2038 auf Anfälligkeit für den Y2K38-Fehler überprüft worden sind. Als Unternehmen sollte man entsprechend langfristig Budget einplanen, um den Fehler frühzeitig zu finden.
Um den Y2K38-Bug zu beheben, reicht es nicht einfach ein neues Gerät mit 64 Stellen zur Zeitrechnung zu benutzen und die alte Software oder Firmware aufzuspielen. Es ist möglich, dass die Verwendung von maximal 32 Stellen fest in die Software geschrieben wurde und keinen Gebrauch von zusätzlich verfügbaren Stellen macht. Deswegen muss die Software, bevor sie auf ein Gerät mit 64-Bit-Architektur gespielt wird, daraufhin überprüft und gegebenenfalls angepasst werden – Ein erheblicher Aufwand. Besonders für Systeme, die fest verbaut sind und nicht einfach angepasst werden können, gestaltet sich die Fehlerbehebung als schwierig.
Fazit
Es ist praktisch unmöglich, genau vorherzusagen, inwiefern der Y2K38-Fehler Systeme betreffen wird. Selbst wenn ein System in 32 Bit rechnet, folgt daraus nicht automatisch, dass die Funktionalität eingeschränkt wird. Es ist auch denkbar, dass es nur zu Anzeigefehlern kommt, die aber keine Auswirkungen auf die weitere Funktion der Software haben. Glücklicherweise hat man im Gegensatz zu Zero-Day-Exploits Vorlaufzeit und es ist exakt bekannt, zu welchem Zeitpunkt der Fehler auftreten wird. Wird der Fehler als ernst zu nehmendes Problem behandelt und die eigenen Systeme entsprechend überprüft, so können die Auswirkungen deutlich verringert werden.