Fuzzing: Wie man Heartbleed hätte finden können

Vor einem Jahr machte der Heartbleed-Bug in OpenSSL Schlagzeilen - doch solche Bugs lassen sich mit Hilfe von Fuzzing-Technologien aufspüren. Wir haben das mit den Tools American Fuzzy Lop und Address Sanitizer nachvollzogen und den Heartbleed-Bug neu entdeckt.

Artikel von Hanno Böck veröffentlicht am
American Fuzzy Lop kann Bugs wie Heartbleed finden.
American Fuzzy Lop kann Bugs wie Heartbleed finden. (Bild: Screenshot)

Vor einem Jahr, am siebten April 2014, veröffentlichten die Entwickler von OpenSSL Details zu einem Fehler in ihrer Software. Der Bug, der den Namen Heartbleed erhielt, führte zu einer intensiven Debatte über die Sicherheit wichtiger freier Softwareprojekte. Vielfach wurde dabei die Frage gestellt, warum dieser Fehler nicht früher gefunden wurde - über zwei Jahre befand sich Heartbleed im OpenSSL-Code.

Hätte Fuzzing Heartbleed gefunden?

Inhalt:
  1. Fuzzing: Wie man Heartbleed hätte finden können
  2. Address Sanitizer und American Fuzzy Lop
  3. Fuzzing des TLS-Handshakes

Eine relativ simple Möglichkeit, Fehler in Software zu finden, ist das sogenannte Fuzzing. Die Idee dabei: Eine Software wird immer wieder mit Eingabedaten aufgerufen, die kleine Fehler enthalten. Stürzt das Programm ab, ist oft ein Fehler gefunden - in vielen Fällen deuten Abstürze auf fehlerhafte Speicherzugriffe hin, die zu Sicherheitslücken führen. Der IT-Sicherheitsspezialist David A. Wheeler hat sich nach Heartbleed ausführlich damit beschäftigt, ob und wie Fuzzing Heartbleed hätte finden können. Der Autor dieses Artikels konnte diese Frage nun in der Praxis beantworten.

Selbstverständlich ist es einfach, einen Fehler zu finden, wenn klar ist, wonach gesucht werden muss. Deshalb war bei diesem Experiment wichtig, dass keine spezifischen Informationen über Heartbleed genutzt werden sollten. So handelte es sich um einen Fehler in der TLS-Erweiterung Heartbeat - die kannte zum damaligen Zeitpunkt aber kaum jemand.

Fehlerhafter Lesezugriff im Speicher

Bei Heartbleed handelt es sich um einen Buffer Overflow beim Lesezugriff auf den Speicher. Solche Pufferüberläufe sind sehr häufig und auch schon seit Jahrzehnten bekannt. Als der Chaos Computer Club vor 30 Jahren das BTX-System der damaligen Deutschen Post hackte, nutzten die CCC-Mitglieder einen Bug, der Heartbleed erstaunlich ähnlich ist - zumindest wenn man ihrer Version der Geschichte glaubt.

Stellenmarkt
  1. Software Developer (f/m/x)
    Helmholtz Zentrum München Deutsches Forschungszentrum für Gesundheit und Umwelt (GmbH), Neuherberg bei München
  2. Business Application Analyst (m/w/d)
    JOTEC GmbH, Hechingen
Detailsuche

Ein einfaches Beispiel für einen Buffer Overflow: Ein Programm nutzt einen Speicherbereich, der zehn Bytes lang ist. Versucht das Programm nun, aus diesem Speicherbereich 20 Bytes zu lesen, greift die Software auf den Speicher zu, der sich daneben befindet. Was dort gerade liegt, ist nicht genau vorhersehbar und hängt von vielen Details ab.

Um ein Programm erfolgreich fuzzen zu können, müssen die entsprechenden Fehler natürlich erkennbar sein, etwa durch einen Programmabsturz. Doch während schreibende Buffer Overflows meistens ein Programm zum Absturz bringen, läuft Software bei lesenden Buffer Overflows oft einfach weiter.

Es gibt eine Reihe von Tools, die eine bessere Erkennung von ungültigen Speicherzugriffen ermöglichen. Ein bekanntes Tool dieser Art ist Valgrind. Allerdings hat es einen Nachteil: Es ist extrem langsam, und die Ausführung eines Programms mit Hilfe von Valgrind dauert etwa zwanzigmal so lang wie sonst. Da man beim Fuzzing ein Programm millionenfach aufruft, ist Valgrind hier impraktikabel.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Address Sanitizer und American Fuzzy Lop 
  1. 1
  2. 2
  3. 3
  4.  


Aktuell auf der Startseite von Golem.de
Ryzen 7950X/7700X im Test
Brachialer Beginn einer neuen AMD-Ära

Nie waren die Ryzen-CPUs besser: extrem schnell, DDR5-Speicher, PCIe Gen5, integrierte Grafik. Der (thermische) Preis dafür ist jedoch hoch.
Ein Test von Marc Sauter und Martin Böckmann

Ryzen 7950X/7700X im Test: Brachialer Beginn einer neuen AMD-Ära
Artikel
  1. US-Whistleblower: Putin verleiht Snowden die russische Staatsbürgerschaft
    US-Whistleblower
    Putin verleiht Snowden die russische Staatsbürgerschaft

    US-Whistleblower Edward Snowden ist nun auch russischer Staatsbürger. Für den Krieg gegen die Ukraine kann er aber vorerst nicht eingezogen werden.

  2. Rechenzentren: IT des Bundes ignoriert eigene umweltpolitische Vorgaben
    Rechenzentren
    IT des Bundes ignoriert eigene umweltpolitische Vorgaben

    Bei 184 Rechenzentren und einem hohen Einkaufsvolumen für Technik hat die Bundes-IT eine große Bedeutung. Doch die Abwärme und erneuerbare Energien werden viel zu wenig genutzt.

  3. Revision CFI 1202A: Die neue PS5 hat einen 6-nm-Chip
    Revision CFI 1202A
    Die neue PS5 hat einen 6-nm-Chip

    Sony hat damit begonnen, eine neue Revision der PS5 auszuliefern. Sowohl für Kunden als auch für den Hersteller bietet das Modell Vorteile.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PS5-Verkauf bei MMS • CyberWeek: PC-Zubehör, Werkzeug & Co. • Günstig wie nie: Gigabyte RX 6900 XT 864,15€, MSI RTX 3090 1.159€, Fractal Design RGB Tower 129,90€ • MindStar (Palit RTX 3070 549€) • Thrustmaster T300 RS GT 299,99€ • Alternate (iPad Air (2022) 256GB 949,90€) [Werbung]
    •  /