05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

54 2 Programmieren <strong>mit</strong> <strong>Unix</strong>-Prozessen<br />

Tabelle 2.1 faßt die wichtigsten unsicheren Funktionen der C-Bibliothek samt<br />

Alternativen zusammen. Die Aufzählung ist nach dem Grad der potentiellen<br />

Gefährdung gestaffelt. Gerade bei den beiden Klassen äußerst anfällig <strong>und</strong><br />

sehr anfällig gilt es, auf die Risikofunktionen strikt zu verzichten <strong>und</strong> die<br />

verfügbaren Alternativen zu nutzen. Aber auch bei den beiden anderen Kategorien<br />

ist größte Sorgfalt bei der Programmierung geboten. Zur Sicherheit<br />

sei an dieser Stelle nochmals erwähnt, daß Buffer-Overflows nicht nur bei der<br />

Bearbeitung von Zeichenketten auftreten können – auch wenn hier sicher die<br />

größte Gefahrenquelle liegt. Die geschilderten Risiken lauern bei allen Feldern,<br />

auf die in Schleifen oder als Ganzes zugegriffen wird.<br />

2.3.2 Format-String-Schwachstellen<br />

Bei Format-String-Schwachstellen handelt es sich um einen, im Vergleich zu<br />

Buffer-Overflows, weniger bekannten <strong>und</strong> vor allem auch erst später entdeckten<br />

Gefahrenherd. Der erste öffentlich dokumentierte Exploit stammt aus dem<br />

Juni 2000. Das von Format-String-Schwachstellen ausgehende Gefahrenpotential<br />

ist jedoch <strong>mit</strong> Sicherheit ebenso groß wie, wenn nicht sogar größer als bei<br />

Buffer-Overflows.<br />

Die Fehlerquelle liegt bei Format-String-Schwachstellen in der Verarbeitung<br />

der sogenannter Format-Strings, wie sie im v. a. bei den Ein- <strong>und</strong> Ausgabe-<br />

Funktionen der C-Standardbibliothek oder auch beim Syslog-Dienst vorkommen.<br />

Diese Funktionen ersetzen bei der Ausgabe von Zeichenketten spezielle<br />

Platzhalter im Format-String durch die an die Funktionen übergebenen Argumente.<br />

Beispiel 2.12 zeigt den Gebrauch dieser Formatangaben. Das Programm<br />

gibt alle Zeichen, die es auf der Standard-Eingabe erhält, umgehend<br />

wieder auf der Standard-Ausgabe aus.<br />

1 #include <br />

2 #include <br />

Beispiel 2.12. cat1.c<br />

3<br />

4 int main( int argc, char *argv[] )<br />

5 {<br />

6 char buffer[256];<br />

7<br />

8 while( fgets( buffer , 256, stdin ) )<br />

9 printf( "%s", buffer );<br />

10<br />

11 return( EXIT_SUCCESS );<br />

12 }

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!