Buffer Overflow
Auch bekannt als:Pufferüberlauf · BOF
Buffer Overflow: Schreiben über die Grenze eines Speicherpuffers hinaus, wodurch benachbarte Daten überschrieben werden. Der Pufferüberlauf ist die älteste und bis heute folgenreichste Form der SpeicherbeschädigungMemory CorruptionUnbeabsichtigte oder gezielte Veränderung von Speicherstrukturen mit Sicherheitsfolgen. und die Grundlage vieler Exploit-Ketten.
Funktionsweise und Einordnung
Ein Puffer ist ein Speicherbereich fester Größe. Schreibt ein Programm mehr Daten hinein, als der Puffer fasst, landen die überzähligen Bytes im dahinterliegenden Speicher. Auf dem Stack sind das typischerweise gespeicherte Register, der Stack Canary und die Rücksprungadresse; auf dem Heap sind es die Verwaltungsstrukturen des Allokators oder benachbarte Objekte. Wer die überschriebenen Werte kontrolliert, kontrolliert oft den nächsten Sprung des Programms. Ursache sind fehlende oder falsche Längenprüfungen, klassisch bei strcpy, sprintf oder einem read mit zu großer Längenangabe.
Bedeutung in der Praxis
Moderne Systeme wehren Pufferüberläufe gestaffelt ab: Stack CanariesStack CanaryZufälliger Wächterwert vor der Rücksprungadresse, dessen Veränderung einen Stack-Überlauf verrät. erkennen das Überschreiben der Rücksprungadresse, nicht ausführbarer Speicher verhindert Shellcode auf dem Stack, und ASLRAddress Space Layout RandomizationSchutzmechanismus, der Speicheradressen zufällig anordnet und Exploits dadurch erschwert. macht Zieladressen unvorhersehbar. Keine dieser Maßnahmen behebt den Bug — sie erhöhen nur den Aufwand. Sobald eine zusätzliche Informationslücke Canary oder Basisadresse verrät, trägt der Überlauf wieder. Die eigentliche Behebung liegt in speichersicheren Sprachen oder in konsequenten Längenprüfungen an jeder Kopiergrenze.
Verwandte Begriffe
- Memory CorruptionMemory CorruptionUnbeabsichtigte oder gezielte Veränderung von Speicherstrukturen mit Sicherheitsfolgen.: Unbeabsichtigte oder gezielte Veränderung von Speicherstrukturen mit Sicherheitsfolgen.
- Binary ExploitationBinary ExploitationAusnutzung von Speicher- oder Logikfehlern in kompilierten Anwendungen.: Ausnutzung von Speicher- oder Logikfehlern in kompilierten Anwendungen.
- Stack CanaryStack CanaryZufälliger Wächterwert vor der Rücksprungadresse, dessen Veränderung einen Stack-Überlauf verrät.: Zufälliger Wächterwert vor der Rücksprungadresse, dessen Veränderung einen Stack-Überlauf verrät.
- Secure CodingSecure CodingProgrammierpraktiken zur Vermeidung typischer Schwachstellen und Fehlkonfigurationen.: Programmierpraktiken zur Vermeidung typischer Schwachstellen und Fehlkonfigurationen.