
Heap Buffer Overflow
Ein Heap Buffer Overflow ist ein Programmierfehler, bei dem ein Programm mehr Daten in einen reservierten Speicherbereich schreibt, als dort hineinpasst. Die überschüssigen Daten landen in benachbartem Speicher und können das Programm zum Absturz bringen oder Angreifern die Kontrolle geben.
Jedes laufende Programm bekommt vom Computer Arbeitsspeicher zugeteilt, also Platz für seine Daten. Einen Teil davon fordert das Programm erst während der Laufzeit an, je nachdem, wie viel es gerade braucht. Dieser flexible Bereich heißt Heap, auf Deutsch etwa « Haufen ». Das Programm reserviert dort einen Abschnitt in einer festen Größe, zum Beispiel Platz für 100 Zeichen. Ein Heap Buffer Overflow passiert, wenn das Programm mehr hineinschreibt, als es reserviert hat, etwa 150 Zeichen. Die 50 überzähligen Zeichen verschwinden nicht, sondern überschreiben das, was direkt daneben im Speicher liegt.
Vom Tippfehler zur Sicherheitslücke
Im harmlosesten Fall stürzt das Programm einfach ab. Gefährlich wird es, weil im Speicher direkt neben den Daten oft Verwaltungsinformationen liegen. Dort steht zum Beispiel, wie groß der nächste Speicherblock ist oder welche Funktion als Nächstes aufgerufen werden soll. Wer diese Angaben gezielt überschreibt, kann den Ablauf des Programms umlenken.
Genau darauf zielen Angreifer ab. Sie schicken einem Programm eine überlange Eingabe, etwa ein manipuliertes Bild oder eine präparierte Webseite. Wenn das Programm die Länge nicht prüft, führt es am Ende fremden Code aus. Das nennt man Remote Code Execution, also das Ausführen von Befehlen aus der Ferne. Solche Lücken gehören zu den schwerwiegendsten überhaupt, weil oft kein Klick des Nutzers nötig ist.
Deshalb tauchen Heap-Überläufe regelmäßig in Sicherheitswarnungen auf. Sie bekommen eine CVE-Nummer, also eine weltweit eindeutige Kennung für eine bekannte Schwachstelle. Unternehmen zahlen für solche Funde hohe Prämien, oft fünfstellige Beträge.
Warum die Grenze nicht automatisch hält
Ob ein Überlauf überhaupt möglich ist, hängt von der Programmiersprache ab. Sprachen wie C und C++ prüfen beim Schreiben nicht nach, ob man noch im reservierten Bereich ist. Das war eine bewusste Entscheidung: Die Prüfung kostet Rechenzeit, und bei der Entwicklung dieser Sprachen war Geschwindigkeit wichtiger. Der Programmierer trägt die Verantwortung dafür, die Länge selbst zu kontrollieren.
Ein typischer Fehler sieht so aus: Ein Programm reserviert Platz anhand einer Zahl, die in der eingelesenen Datei steht. Diese Zahl behauptet, das Bild sei 100 Pixel breit. Danach kopiert das Programm die echten Bilddaten, die aber 500 Pixel breit sind. Niemand hat verglichen, ob beide Angaben zusammenpassen.
Zur Abgrenzung: Beim verwandten Stack Buffer Overflow läuft ein Bereich über, der zu einer gerade laufenden Funktion gehört. Der Stack ist streng geordnet, der Heap dagegen nicht. Was im Heap neben einem Block liegt, hängt davon ab, was das Programm vorher angefordert und freigegeben hat. Angriffe auf den Heap sind deshalb aufwendiger, aber keineswegs unmöglich.
Chrome-Updates, Rust und KI-Bibliotheken
Wenn dein Browser ein dringendes Sicherheitsupdate meldet, steckt oft genau so ein Fehler dahinter. Google Chrome veröffentlicht jedes Jahr mehrere Patches gegen Heap-Überläufe, meist in der Komponente, die Bilder oder Videos darstellt. Auch Smartphones, Router und Autosysteme sind betroffen, weil dort viel Software in C geschrieben ist.
In der KI-Welt ist das Thema aktuell, weil viele Bibliotheken zum Verarbeiten von Modellen in C++ geschrieben sind. Wer ein fremdes Modell aus dem Internet lädt, lädt damit auch eine Datei, die von solchem Code gelesen wird. Genau in diesen Ladefunktionen wurden mehrfach Überläufe gefunden.
Als Gegenmittel setzen Firmen zunehmend auf die Sprache Rust, die jeden Zugriff automatisch auf seine Grenzen prüft. Microsoft und Google berichten, dass rund 70 Prozent ihrer schweren Sicherheitslücken auf Speicherfehler dieser Art zurückgehen. Ein verbreiteter Irrtum ist, ein Absturz sei harmlos. Ein reproduzierbarer Absturz gilt in der Sicherheitsforschung als Startpunkt für einen möglichen Angriff.