CWE ID: 806
Name: Buffer Access Using Size of Source Buffer
Das Produkt verwendet die Größe eines Quellpuffers beim Lesen oder Schreiben in einen Zielpuffer, was dazu führen kann, dass Speicher außerhalb der Grenzen des Puffers angesprochen wird.
Wenn die Größe des Ziels kleiner ist als die Größe der Quelle, kann ein Buffer Overflow auftreten.
Effektivität: Unknown
Beschreibung: Der Einsatz einer Abstraktionsbibliothek dient dazu, risikobehaftete APIs zu kapseln. Beispiele hierfür sind die Safe C String Library (SafeStr) von Viega und die Strsafe.h Bibliothek von Microsoft. Dies stellt jedoch keine vollständige Lösung dar, da viele Buffer Overflows nicht im Zusammenhang mit Strings stehen.
Effektivität: Unknown
Beschreibung: Programmierer sollten bei der Speicherallokation und -verwaltung ihrer Anwendungen folgende Regeln beachten: Überprüfen Sie doppelt, ob Ihr Puffer die von Ihnen angegebene Größe hat. Achten Sie bei der Verwendung von Funktionen, die eine Anzahl von Bytes zum Kopieren akzeptieren, wie beispielsweise strncpy()
, dass, wenn die Größe des Zielpuffers der Größe des Quellpuffers entspricht, die Zeichenkette möglicherweise nicht mit einem NULL-Terminator abgeschlossen wird. Überprüfen Sie die Puffergrenzen, wenn Sie diese Funktion in einer Schleife aufrufen, und stellen Sie sicher, dass keine Gefahr besteht, über den zugewiesenen Speicher zu schreiben. Kürzen Sie alle Eingabezeichenketten auf eine angemessene Länge, bevor Sie sie an die Copy- und Konkatenationsfunktionen übergeben.
Effektivität: Unknown
Beschreibung: Die meisten abmildernden Technologien auf Compiler- oder Betriebssystemebene adressieren bisher nur einen Teilbereich von Pufferüberlaufproblemen und bieten selten vollständigen Schutz, selbst gegen diesen Teilbereich. Es ist bewährte Praxis, Strategien zu implementieren, um die Arbeitslast eines Angreifers zu erhöhen, beispielsweise indem man ihn dazu zwingt, einen unbekannten Wert zu erraten, der sich bei jeder Programmausführung ändert.