Lehren

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]

*Jede Möglichkeit, mit Benutzereingaben Speicherbereiche jenseits der dafür vorgesehenen Variablen zu füllen, birgt die Gefahr, daß beliebiger Code ausgeführt werden kann.
 
*Auch wenn es im Einzelfalle ziemlich knifflig sein kann, den passenden Exploit zu einem Buffer mit potentiellen Überlauf schreiben zu können, wurde dies in vielen Fällen (mit viel Zeitaufwand) gelöst.
 
*Die Standard-C-Bibliothek bietet viele Gefahrenstellen, weil alle traditionellen String-Funktionen nur einen Zeiger erhalten, jedoch keine Länge des dahinter liegenden Buffers. Erst nach und nach kamen andere Varianten mit diesen zusätzlichen Parametern hinzu.
 
*Häufig wurden solche Sicherheitslücken zunächst nur dadurch geschlossen, daß die Eingaben in ihrer Länge begrenzt wurden und anschließend traditionell weitergemacht wurde, in der Hoffnung, daß die zugehörigen Abschätzungen (z.B. bei sprintf) korrekt sind. Diese Hoffnung hat sehr häufig getrogen.
 
*Somit müssen immer und überall Buffer-Grenzen verifiziert werden, um sich dagegen zu schützen. Am besten geht dies durch automatisierte Überprüfungen, die der Compiler generiert. Leider läßt sich das in C nicht umsetzen.
 
*Wenn C verlangt wird, sollte somit ein vollständiger Abschied von der C-Bibliothek und traditionellen Buffern fester Länge für Zeichenketten genommen werden. Bislang hat dies nur D. J. Bernstein für C bei seinen Netzwerkdiensten konsequent umgesetzt.
Siehe http://cr.yp.to/
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]
Copyright © 2002,2003 Andreas F. Borchert, in HTML konvertiert am 11.02.2003