Top 10

Die langwierigsten Softwarebugs

12.07.2021
Von 
Josh Fruhlinger ist freier Autor in Los Angeles.
Diese Softwarebugs belegen, dass Schwachstellen im Code schon mal eine Dekade – oder länger – bestehen können.
Manche Softwarebugs bleiben für Jahrzehnte unter der Oberfläche verborgen. Werden sie nicht von Forschern, sondern von Kriminellen zuerst entdeckt, hat das oft teure Folgen für Unternehmen.
Manche Softwarebugs bleiben für Jahrzehnte unter der Oberfläche verborgen. Werden sie nicht von Forschern, sondern von Kriminellen zuerst entdeckt, hat das oft teure Folgen für Unternehmen.
Foto: Evgeny Haritonov - shutterstock.com

Im Jahr 2021 wurde eine Schwachstelle in einem System aufgedeckt, das die Grundlage für moderne Computer bildet. Darüber konnte ein Angreifer das System zwingen, beliebigen Code auszuführen. Schockierenderweise war die Schwachstelle Bestandteil von Programmcode, der fast 54 Jahre alt ist. Ein Patch war nicht verfügbar und es ist auch nicht zu erwarten, dass in Kürze einer erscheinen wird.

Glücklicherweise handelte es sich bei dem System um Marvin Minskys Implementierung einer universellen Turing-Maschine aus dem Jahr 1967. Diese war - trotz ihrer enormen theoretischen Bedeutung für die Informatik - nie in einen realen Computer eingebaut worden. Im Jahrzehnt nach Minskys Entwurf kamen allerdings die ersten Versionen von Unix und DOS zum Einsatz, deren Nachkommen uns auch heute noch begleiten. Wie die folgende Top 10 zeigt, können einige IT-Systeme Fehler aufweisen, die über Jahre oder gar Jahrzehnte hinweg unter der Oberfläche lauern.

10. Nissan Telematik-Steuermodul

  • Dauer: 7 Jahre

  • Entdeckt: 2010

  • Behoben: 2017

Bereits 2011 entdeckte der Sicherheitsforscher Ralf-Philipp Weinmann eine neu eingeführte Schwachstelle im Basisband-Prozessor von Mobiltelefonen, die für einen Angriff genutzt werden könnte. So waren Hacker damit in der Lage, einen falschen Mobilfunkmast einzurichten und ein Handy dazu zu bringen, sich mit diesem zu verbinden. Anschließend könnte er dessen Netzwerkverbindung kapern. Die Schwachstelle wurde von den Handy-Anbietern relativ schnell behoben und dann ebenso schnell wieder vergessen.

Dabei gab es nur ein Problem: Mobiltelefone waren nicht die einzigen Geräte, die diese Chips verwendeten: "Im Wesentlichen befand sich derselbe Chipsatz in der Telematikeinheit des Nissan Leaf und einer Vielzahl anderer Fahrzeuge", weiß Jesse Michael, Principal Cyber Security Researcher bei Eclypsium. Mehrere Sicherheitsforscher entdeckten die Schwachstelle durch Zufall, als sie Experimente mit einem Auto vom Schrottplatz machten.

"Es handelte sich um eine Schwachstelle, die in einem anderen Marktsegment bereits seit fast sieben Jahren öffentlich bekannt war, bevor wir sie im Automobilsegment entdeckten", so Michael. Da es sich um eine ganz andere Branche mit einer eigenen komplexen Lieferkette handelte, sei niemandem klar gewesen, dass die Autos für den gleichen Exploit anfällig waren wie die Telefone: "Ein wirklich abschreckendes Beispiel für die Siloisierung der Industrie."

9. Sudo Baron Samedit

  • Dauer: 9 Jahre, 6 Monate

  • Entdeckt: Juli 2011

  • Behoben: Januar 2021

Der sudo-Befehl ist ein wichtiges und mächtiges Werkzeug für Unix-Administratoren. Aber mit großer Macht kommt große Verantwortung - es ist wichtig, Absicherungen um den Befehl herum einzurichten, damit die Benutzer nicht im System Amok laufen. Zum Beispiel können Sie sudo im Shell-Modus mit dem <code>-c</code>-Flag aufrufen, dem Sie eine Reihe von Shell-Befehlen folgen lassen können, die mit Superuser-Rechten ausgeführt werden. Dieser Modus ist potenziell anfällig für einen Buffer-Overflow-Angriff. Hierbei bringen Sonderzeichen, die in diese Befehle eingefügt werden, das System dazu, Code außerhalb des zugewiesenen Speicherpuffers zu schreiben, wodurch potenziell Zugriff auf Root-Rechte gewährt wird.

Im Allgemeinen schützt sudo vor solchen Angriffen, indem es die Sonderzeichen erkennt, bevor sie verarbeitet werden. Im Jahr 2011 wurde jedoch versehentlich eine Sicherheitslücke in sudo eingefügt, die die oben beschriebenen Angriffe ermöglichte und fast ein Jahrzehnt lang im Verborgenen lauerte. Die Schwachstelle befand sich dabei nicht im eigentlichen sudo-Befehl, sondern im Hilfsbefehl "sudoedit", der Benutzern Zugriff mit Superuser-Rechten ermöglicht, ohne dem Editor-Programm selbst volle Superuser-Rechte zu gewähren. Wie im Qualys-Blog im Januar 2021 beschrieben, ermöglicht die Schwachstelle schwerwiegende Privilege Escalation - es ist deshalb sehr wichtig, sie zu patchen. Zu den betroffenen Systemen gehören fast alle Unix-Varianten, darunter Linux, Solaris und macOS.

8. Linux GRUB2 Secure Boot

  • Dauer: 10 Jahre

  • Entdeckt: 2010

  • Behoben: Juli 2020

Als UEFI als Ersatz für BIOS eingeführt wurde, sollten bestimmte Funktionen Angriffe bekämpfen, die auf Ebene der Bootloader-Software ausgeführt werden. Der Schlüssel dazu ist eine ineinandergreifende Kette von signierten kryptografischen Zertifikaten, die jedes Bootloader-Programm als legitim verifiziert. Dieser Mechanismus ist auch als "Secure Boot" bekannt. Das Root-Zertifikat für UEFI ist von Microsoft signiert, die Linux-Distributionen setzen ihre eigenen Bootloader, jeweils mit eigenem validiertem Zertifikat, ein.

GRUB2, ein weit verbreiteter Linux-Bootloader mit UEFI-kompatiblem Zertifikat enthält eine Buffer-Overflow-Schwachstelle, die durch bösartigen Code in der Konfigurationsdatei ausgenutzt werden kann. Während GRUB2 selbst signiert ist, ist seine Konfigurationsdatei, die von lokalen Administratoren bearbeitet werden kann, nicht signiert. Zwar müsste ein Angreifer ein gewisses Maß an lokaler Kontrolle über den Zielcomputer haben, um diesen Angriff auszuführen. Gelingt er jedoch, kann der Angreifer sicherstellen, bei jedem erneuten Hochfahren des Computers die Kontrolle über diesen zu behalten.

7. Lion Wiki

  • Dauer: 11 Jahre, 11 Monate

  • Entdeckt: November 2008

  • Behoben: Oktober 2020

LionWiki ist eine minimalistische Wiki-Engine, die in PHP programmiert ist. Im Gegensatz zu vielen populären Wiki-Engines (wie der, die Wikipedia zugrunde liegt), verwendet LionWiki keine Datenbank, sondern ist vollständig file-basiert. Das ermöglicht eine ernsthafte Schwachstelle.

Im Wesentlichen wird auf die verschiedenen Dateien, die einer bestimmten LionWiki-Instanz zugrunde liegen, über Datei- und Pfadnamen in der URL der entsprechenden Seiten zugegriffen. Mit einer korrekt erstellten URL könnte man also das Dateisystem des Servers, der die LionWiki-Instanz hostet, durchqueren. Zwar gibt es Vorkehrungen, um solche Versuche zu blockieren, die können allerdings recht einfach umgangen werden, wie June Werner, Cyber Range Engineer am Infosec Institute, herausgefunden hat.

"Einige Entschärfungen der Lücke wurden erstmals im Juli 2009 eingeführt - im Januar 2012 folgten dann etwas umfangreichere Gegenmaßnahmen. Trotzdem war der Code immer noch anfällig für die gleiche Art von Angriffen. Die Schwachstelle blieb für weitere acht Jahre bestehen, bis sie im Oktober 2020 wiederentdeckt wurde. Nachdem der Fehler formell gemeldet wurde, wurde er vom Entwickler gepatcht", erzählt die Sicherheitsexpertin.

6. Domain Time II

  • Alter: 14 Jahre

  • Entdeckt: 2007

  • Behoben: April 2021

Wenn sich zwei Computer im selben Netzwerk nicht über die Uhrzeit einigen können, kann das zu ärgerlichen bis katastrophalen Folgen führen. Eine der ausgereiftesten und populärsten Lösungen für dieses Problem im Unternehmensumfeld ist eine Software namens Domain Time II - eine Closed-Source-Anwendung, die unter Windows, Linux und Solaris eingesetzt wird.

Domain Time II beherbergte über den Großteil seiner Existenz eine schwerwiegende Sicherheitslücke: In vom Benutzer einstellbaren Intervallen oder unter bestimmten Bedingungen sendet das Programm UDP-Anfragen an einen Update-Server, der von Greyware Automation Products, dem Hersteller der Software, betrieben wird. Wenn der Server mit einer URL antwortet, führt Domain Time II ein Programm mit Administrator-Rechten aus, um ein Update von dieser URL herunterzuladen und zu installieren.

Das Problem dabei? Wenn es einem böswilligen Akteur gelingt, die Anfrage vor dem Update-Server von Greyware zu beantworten, kann er seine eigene Antwort senden und Domain Time II dazu veranlassen, die Malware herunterzuladen, die der Angreifer installieren möchte. Bei einem echten Man-in-the-Middle-Angriff würde der Angreifer die Kommunikation in beide Richtungen abfangen - im Gegensatz dazu handelt es sich hier um einen so genannten Man-on-the-Side-Angriff.

In der Praxis muss der Angreifer bereits einen Computer im lokalen Netzwerk des Ziels kontrollieren, um diesen Angriff durchzuziehen. Nichtsdestotrotz hätte der Angreifer im Ernstfall die Möglichkeit, seine Attacke auf wertvollere Rechner innerhalb eines lokalen Netzwerks zu eskalieren. Diese Schwachstelle wurde vom Sicherheitsberatungsunternehmen Grimm entdeckt. Die Schwachstelle war demnach in Versionen der Software vorhanden, die mindestens bis 2007 zurückreichen.

5. Linux SCSI-Subsystem

  • Dauer: 15 Jahre

  • Entdeckt: 2006

  • Behoben: März 2021

Wenn Sie schon länger mit IT zu tun haben, erinnern Sie sich sicher an SCSI, einen Datenübertragungsstandard aus den 1980er Jahren. Dieser wird auch heute noch in einigen Fällen verwendet und Linux, das immer so flexibel und universell wie möglich sein sollte, hat immer noch ein umfangreiches SCSI-Subsystem für die Systeme, die es brauchen. Diese Module sind über das sogenannte "Automatic Module Loading" verfügbar, bei dem das Betriebssystem den benötigten Systemcode abgreift und installiert, wenn es ihn braucht. Diese Vorgehensweise ist hilfreich, wenn Sie ein SCSI-Laufwerk in Ihren Linux-Rechner einstecken und nicht nach dem benötigten unterstützenden Code suchen wollen. Aber auch für Angreifer, die Fehler in diesem Code ausnutzen wollen.

Die Cybersecurity-Spezialisten von Grimm haben eine umfangreiche Aufschlüsselung mehrerer Fehler in diesem Linux-SCSI-Code veröffentlicht, die sie im März 2021 entdeckt haben. Bei einem handelte es sich um eine Buffer-Overflow-Schwachstelle, die es normalen Benutzern ermöglichen könnte, Root-Rechte zu erlangen. Bei den anderen um Fehler, bei denen Informationen aus dem Kernel in den Userspace durchsickern könnten. Diese könnten dazu verwendet werden, privilegierte Informationen zu erhalten oder um einen DoS-Angriff zu starten. Grimm datiert die Fehler auf das Jahr 2006 zurück und merkt trocken an, sie wären "ein Indiz für einen Mangel an sicheren Programmierpraktiken, der zu der Zeit herrschte, als dieser Code entwickelt wurde."

4. SIGRed

  • Dauer: 17 Jahre

  • Entdeckt: 2003

  • Behoben: 2020

Das Domain Name System wird als Herzstück des Internets oft unterschätzt. Das DNS sorgt dafür, dass Ihr Computer weiß, welche IP-Adresse zu einer bestimmten URL gehört. Das System ist hierarchisch aufgebaut, wobei Anfragen die Pyramide hinauf und hinunter geschickt werden, um nach DNS-Servern zu suchen, die die Antwort auf die Frage "Wo ist dieser Computer?" kennen. Infolgedessen wurde DNS in alle wichtigen Betriebssysteme integriert.

Im Jahr 2020 enthüllte Microsoft eine kritische Schwachstelle in seiner eigenen Version von DNS, die seit 17 Jahren im Code lauerte. Beweise dafür, dass sie jemals wirklich ausgenutzt worden war, gab es keine. Die Schwachstelle, die von ihren Entdeckern bei Check Point "SIGRed" getauft wurde, war ein Buffer Overflow in Windows-DNS-Servern, der durch Exploit-Code, der in der Signatur eines DNS-Pakets versteckt war, ausgelöst werden konnte. Ein bösartiger Nameserver könnte solche Pakete als Antwort auf Anfragen senden, die meisten Sicherheitsvorkehrungen umgehen und potenziell Fernzugriff auf den Microsoft DNS-Server erlangen. Der Angriff könnte potenziell automatisiert werden und sich ohne Benutzereingriff verbreiten.

3. PuTTY Heap Overflow

  • Dauer: 20 Jahre, 9 Monate

  • Entdeckt: Januar 1999

  • Behoben: Oktober 2019

PuTTY ist ein kostenloses und quelloffenes Paket von Werkzeugen. Es enthält eine serielle Konsole, einen Terminalemulator und verschiedene Anwendungen für den Dateitransfer im Netzwerk. SSH und verschiedene andere Verschlüsselungsverfahren sind integriert. Ursprünglich wurde PuTTY veröffentlicht, um die Werkzeuge, die für Unix-Admins selbstverständlich waren, auf Windows und Mac OS zu bringen. Sein Anwendungsbereich hat sich inzwischen jedoch erweitert, weswegen es nun auch auf Unix-Systemen verbreitet eingesetzt wird. Obwohl PuTTY für die Absicherung von Netzwerkverbindungen entwickelt wurde, beherbergte die Software im Kern eine Sicherheitslücke. Dabei handelte es sich um eine weitere Form von Buffer-Overflow-Problem, das durch einen zu kurzen SSH-Schlüssel ausgelöst werden konnte, was zum Absturz von PuTTY oder sogar zur Ausführung von Remote Code führen konnte.

Die Schwachstelle wurde bei HackerOne als Teil des Bug-Bounty-Programms eingereicht, das vom FOSSA-Programm der Europäischen Union ins Leben gerufen wurde. Sie brachte dem Entdecker eine Belohnung von knapp 3700 Dollar und ein Dankeschön des PuTTY-Teams ein. Wie später bekannt wurde, war der Fehler bereits in den allerersten Versionen des PuTTY-Quellcodes aus dem Jahr 1999 vorhanden.

2. Win32k.sys

  • Dauer: 23 Jahre

  • Entdeckt: 1996

  • Behoben: 2019

Im Jahr 2019 wurden zwei große Sicherheitslücken in der Win32-API von Microsoft Windows entdeckt. Die erste, die im April gefunden wurde, war eine "Use-After-Free"-Schwachstelle, bei der Codierungsfehler des Betriebssystems es Programmen ermöglichten, auf Systemspeicher zuzugreifen, der eigentlich geschützt sein sollte. Diese Schwachstelle wurde von Sicherheitsforschern entdeckt, als kriminelle Hacker versuchten, diese auszunutzen. Die andere, im Dezember entdeckte Schwachstelle, war eine "Elevation-of-Privilege"-Schwachstelle, die in der Fensterumschaltfunktion des Betriebssystems lauerte. Auch diese Schwachstelle wurde im Rahmen laufender Angriffe entdeckt, bei denen Tastatureingaben simuliert wurden, um Speicherlecks zu erzeugen.

Beide Schwachstellen haben ihre Ursprünge in den frühen Tagen von Windows: "Das Problem stammt aus der Zeit, als WIN32K mit Windows NT 4.0 debütierte und ein Großteil der Grafik-Engine von Win32 von der Benutzerebene in den Kernel verlagert wurde, um die Leistung zu steigern", erklärt Boris Larin, Senior Security Researcher bei Kaspersky. Und während diese beiden spezifischen Schwachstellen gepatcht seien, habe diese lange zurückliegende Entscheidung von Microsoft viel weitreichendere Auswirkungen - wahrscheinlich auch weiterhin, meint der Experte: "Über die Jahre hinweg war die WIN32K-Komponente für mehr als die Hälfte aller in Windows entdeckten Kernel-Sicherheitslücken verantwortlich."

1. PrintDemon

  • Dauer: 24 Jahre

  • Entdeckt: 1996

  • Behoben: Mai 2020

Drucker sind für die IT-Abteilung häufig ein Pain Point, weil es viele verschiedene Typen gibt, die nicht zwingend von denselben Herstellern wie Computer und Betriebssysteme produziert werden - und weil die Benutzer erwarten, dass sie sofort losdrucken können. Vor allem Microsoft hat in den ersten Jahren darum gekämpft, die Installation eines Druckertreibers relativ einfach und schmerzlos zu gestalten. Aber ein kürzlich aufgetretener Fehler namens PrintDemon hat gezeigt, dass man es in den 1990er Jahren vielleicht etwas zu weit getrieben hat.

Der Kern dieser Sicherheitslücke besteht aus drei Faktoren:

  1. Nicht-administrative Benutzer können einem Windows-Rechner Drucker hinzufügen,

  2. die zugrundeliegende Mechanik macht es möglich, auf eine Datei, statt auf einem physischen Printer zu drucken,

  3. und wichtige Druckdienste unter Windows laufen mit SYSTEM-Rechten.

Wenn Sie es richtig anstellen, könnten Sie selbst einen "Drucker"-Treiber bauen, der eine Datei (sogar eine ausführbare) überall im Dateisystem (sogar in privilegierten Verzeichnissen) erstellen kann. Es gibt viele Exploits, die im Laufe der Jahre ausgeheckt wurden, um diese Designfehler auszunutzen - einer davon war zum Beispiel Stuxnet.

PrintDemon ist jedoch ebenfalls ein echtes Prachtexemplar von Softwarebug, das möglich wurde, weil Microsoft Korrekturen im Laufe der Jahre in Form von Patches verabreichte, statt das Druck-Subsystem neu zu entwickeln. "Winsider" beschreibt es so: "Mit sehr subtilen Dateisystemmodifikationen kann man ein Dateikopier-/Schreibverhalten erreichen, das keinem Prozess zuzuordnen ist, insbesondere nach einem Neustart. Mit einem sorgfältig erstellten Portnamen kann man sich vorstellen, dass der Spooler einfach eine portable und ausführbare Datei irgendwo auf der Festplatte ablegt." Klingt nach schlechten Nachrichten! (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation CSO Online.