Was wir aus Heartbleed lernen sollten

heartbleedHeartbleed ist der Codename für einen fatalen Softwarebug in OpenSSL, eine Funktionsbibliothek für kryptografische Algorithmen. Kryptografie ist ein Überbegriff für Verfahren zur Verschlüsselung und Authentifikation die in Wahrheit aus einer Vielzahl komplexer mathematischer Algorithmen zusammengesetzt werden. OpenSSL stellt diese Algorithmen als Bausteine zur Verfügung, die man für eine sichere Datenübertragung benötigt.

Heartbleed heißt diese Sicherheitslücke deshalb, weil bei verschlüsselten Verbindungen „Heartbeats“ zwischen den beiden Kommunikationspartnern ausgetauscht werden,1 um feststellen zu können, ob die Gegenstelle noch existiert und im Rahmen dieser Heartbeats Information es dem Speicher der anderen Seite ausgelesen werden kann (s. XKCD).

Die Ursache für die Sicherheitslücke liegt an einem Konzeptfehler in der Programmierung, nämlich dem, dass dem User-Input (den empfangenen Daten) ohne Verifikation vertraut wird. Programmtechnisch kann so etwas als „Anfängerfehler“ eingestuft werden und ist schon unzählige Male in verschiedensten Programmen gemacht worden. Und wird auch in Zukunft immer wieder auftreten, da es immer wieder Entwickler mit nicht ausreichendem Sicherheits-Knowhow geben wird.2 In Bezug auf OpenSSL ist dieser Fehler vermutlich aber nicht auf mangelnde Qualität, sondern schlicht und einfach auf menschliches Versagen zurückzuführen, denn sogar der beste Experte der Welt kann irren.

Security-Schwarzmarkt

Dass es im Schatten der Software- und Security-Industrie einen riesigen Schwarzmarkt für Sicherheitslücken gibt, ist längst kein Geheimnis mehr. Weltweit gibt es genügend Abnehmer dafür, die auch über ein entsprechendes Budget verfügen: Geheimdienste, Militärs, Regierungen, usw. Und es gibt auch genug Black-Hats, die es eher vorziehen für eine Sicherheitslücke zu kassieren, anstatt diese für „Ruhm und Ehre“ zu veröffentlichen. Oder vielleicht sogar beides tun, unter verschiedenen Namen natürlich 😉 Wie auf Bloomberg zu lesen ist, wurde in Bezug auf Heartbleed vor kurzem bekannt, dass die NSA jenen Bug bereits seit vielen Monaten aktiv ausnutzt, um an heikle Benutzerdaten zu kommen. Was man natürlich nicht weiß ist, wer noch aller diese Lücke benutzt(e). Manche mögen der IT-Security-Branche sogar Vorsatz unterstellen, denn würde diese heute wirksame IT-Sicherheit verkaufen, hätte sie morgen keine Kunden mehr.

Bugs wie Sand am Meer

Unüberschaubar groß ist die Zahl der Softwarefehler, die weltweit täglich gefunden und veröffentlicht wird. Auf einschlägigen Mailinglists, wie z.B. der Bugtraq, gehen wöchentlich hunderte Meldungen über verschiedenste Sicherheitslücken ein. Was macht Heartbleed nun so besonders? Warum ist es nicht einfach „nur“ ein Bug wie tausende andere auch?

Heartbleed ist nicht „irgend ein“ Bug

Was Heartbleed von den meisten anderen Sicherheitslücken unterscheidet, ist, dass OpenSSL zu den am weitesten verbreiteten Funktionsbibliotheken weltweit zählt. Es wäre einfacher alle Systeme weltweit aufzulisten, die OpenSSL nicht im Einsatz haben. Wie schon eingangs erwähnt stellt OpenSSL grundlegende kryptografische Bausteine zur Verfügung, die aufgrund ihrer Eigenschaften sehr vielfältig einsetzbar sind und auch eingesetzt werden. Diese Grundfunktionen finden auch in sehr vielen Programmen ihren Einsatz, die nicht vordergründig mit Security, Verschlüsselung oder ähnlichem zu tun haben.

Heartbleed in der Praxis

Auf Mashable findet sich eine Liste von betroffenen Websites, darunter sind alle namhaften Konzerne, wie Google, Facebook, Twitter und noch viele andere. Diese Großen machen kein Geheimnis daraus, geben die Anfälligkeit ihrer Systeme zu und patchten diese mittlerweile, um nicht mehr auf Exploits anfällig zu sein.3 Damit ist der Fehler ausgeräumt und die Sache klargestellt.

Was eine wesentlich größere Gefahr für die Benutzer darstellt, sind all jene, die entweder ihre Systeme nicht ordentlich warten, oder die, die ihre Anfälligkeit vertuschen und der Öffentlichkeit kommunizieren, sie hätten OpenSSL gar nicht im Einsatz, oder die, die gar kein Statement abgeben und schweigen. In Österreich — und sehr wahrscheinlich auch anderswo — kann man darauf warten, bis eine fündige Hackergruppe derartige Systeme aufspürt und öffentlichkeitswirksam präsentiert. Recht so! Denn mit den Daten und der Sicherheit von Benutzern ist nicht zu scherzen!

Das eigentlich dramatische an diesem Softwarefehler liegt an einer ganz anderen Stelle begraben. OpenSSL wird von Forschern und Entwicklern mit viel Wissen, Erfahrung und Motivation entwickelt. Es ist Open-Source-Software, wodurch der Sourcecode öffentlich einsehbar ist. Aufgrund des hohen Verbreitungsgrades, der Wichtigkeit und Brisanz der Software und der darin enthaltenen Funktionen und des Umstandes, dass es Open-Source ist, kann man davon ausgehen, dass es weltweit tausende Male auditiert worden ist und trotzdem hat es ca. ein Jahr gedauert, bis es jemand gefunden und auch veröffentlicht hat.

Fazit

Wenn in so einer wichtigen Software wie OpenSSL ein derartiger Fehler steckt, drängt sich die Frage auf, welche Fehler in den weniger verbreiteten Programmen steckt. Viel kritischer noch ist die Situation bei kommerzieller Closed-Source-Software. Der Sourcecode kann nicht öffentlich eingesehen werden, nur von internen oder vertraglich gebundenen Personen. Zusätzlich steht dem ganzen das wirtschaftliche Dilemma eines Unternehmens im Wege. Gerade in der Softwareentwicklung benötigt man für hochwertige Ergebnisse auch entsprechend erfahrene und hochwertige Entwickler und Tester, die dementsprechend bezahlt werden sollten. Zusätzlich belastet wird das durch die Angst vor finanziellem Verlustes sowie einer möglichen Rufschädigung beim Bekanntwerden eines Softwarefehlers.

Aus welchem Grund soll dabei also besserer Code entstehen? Open-Source bietet die einzige reale Möglichkeit das wahre Innenleben einer Software überprüfen zu können. Wie bewiesen wurde, garantiert das zwar nicht automatisch Fehlerfreiheit, aber ohne offenem Source-Code ist es in moderner Software de-facto unmöglich.

  1. Das gilt zwar nicht generell für alle verschlüsselten Verbindung, in diesem Fall trifft das aber zu.
  2. Obwohl es gängige Praxis ist (zumindest in Österreich), dass Programmierer generell mäßig bis schlecht bezahlt werden, ist genau das einer der fundamentalen Fehler in der Softwarebranche. „Programmierer“ ist in den Köpfen der Manager nicht weit weg vom „Hilfsarbeiter“. Das Ergebnis davon sind Programme, die ständig abstürzen und voll von Sicherheitslücken sind.
  3. In diesem Artikel wird u.a. dringend empfohlen, sämtliche Passwörter zu ändern.