CWE-Referenz › CWE-121: Stack-based Buffer Overflow
CWE-121: Stack-based Buffer Overflow
CWE ID: 121
Name: Stack-based Buffer Overflow
Beschreibung
Ein stack-basierter Buffer Overflow liegt vor, wenn der Puffer, der überschrieben wird, im Stack allokiert ist – das heißt, er eine lokale Variable oder, seltener, ein Parameter einer Funktion darstellt.
Risikominderungsmaßnahmen
Maßnahme (Architecture and Design)
Effektivität: Unknown
Beschreibung: Nutzen Sie eine Abstraktionsbibliothek, um riskante APIs zu abstrahieren. Dies ist keine vollständige Lösung.
Maßnahme (Implementation)
Effektivität: Unknown
Beschreibung: Implementieren und führen Sie bounds checking auf der Eingabe durch.
Maßnahme (Implementation)
Effektivität: Unknown
Beschreibung: Vermeiden Sie die Verwendung gefährlicher Funktionen wie gets. Nutzen Sie stattdessen sicherere, äquivalente Funktionen, die boundary errors prüfen.
Detaillierter Hintergrund
Auf dem Ausführungs-stack befinden sich typischerweise mehrere daten, die sicherheitskritisch sind und zu willkürlicher Codeausführung führen können. Am prominentesten ist die gespeicherte Rückgabeadresse, die die Speicheradresse angibt, zu der die Ausführung fortgesetzt werden soll, sobald die aktuelle Funktion beendet ist. Ein Angreifer kann diesen Wert mit einer beliebigen Speicheradresse überschreiben, auf die der Angreifer Schreibzugriff hat, in die er willkürlichen Code platziert, der mit den vollen Berechtigungen des anfälligen Programms ausgeführt werden soll. Alternativ kann der Angreifer die Adresse eines wichtigen call angeben, beispielsweise den POSIX system() call, und die Argumente für diesen call auf dem stack belassen. Dies wird oft als “Return into libc”-exploit bezeichnet, da der Angreifer das Programm typischerweise zur Rücksprungzeit in eine interessante Routine in der C-Standardbibliothek (libc) zwingt. Andere wichtige Daten, die häufig auf dem stack vorhanden sind, sind der stack pointer und der frame pointer, zwei Werte, die Offsets zur Berechnung von Speicheradressen angeben. Die Veränderung dieser Werte kann oft zu einer “write-what-where”-Bedingung ausgenutzt werden.
Verwandte Schwachstellen
Ist Ihre IT-Infrastruktur betroffen?
Schwachstellen wie CWE-121: Stack-based Buffer Overflow werden von Angreifern gezielt gesucht — meist automatisiert und ohne Rücksicht darauf, wie groß das betroffene Unternehmen ist. Ob eine solche Lücke bei Ihnen tatsächlich offen steht, lässt sich nur durch Prüfung feststellen:
- Schwachstellen-Scan — wiederkehrende Prüfung Ihrer Infrastruktur auf bekannte Lücken wie diese
- Penetrationstest — manuelle Prüfung eigener Software auf Schwachstellen, die kein Werkzeug findet
- Threat Modeling — Schwachstellenklassen im Entwurf vermeiden, statt sie später zu suchen