Sonstige Maßnahmen

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

*Fast alle Buffer-Overruns legen den auszuführenden Code in den Buffer auf den Stack.
 
*Da normalerweise der Stack-Bereich keinen ausführbaren Code enthält, ist es sinnvoll, hier die Ausführungsrechte wegzunehmen. Dies ist bei allen modernen Prozessoren möglich.
 
*Unter Solaris läßt sich das mit Kernel-Parametern einrichten, die leider so nicht voreingestellt sind, unter Linux ist das ein wenig komplizierter, hier wird ein Kernelpatch benötigt.
 
*Wenn es dann trotzdem probiert wird, gibt es einen schönen Eintrag im Log:
 
/var/adm/messages
Jun 26 03:31:40 turing genunix: [ID 533030 kern.notice]
NOTICE: buggyd[8971] attempt to execute code on stack
by uid 120

*Man hüte sich jedoch davor anzunehmen, dies reiche aus. Für Solaris 7 und 8 gibt es einen Remote-Root-Exploit für snmpxdmid, dem es gelingt, den auszuführenden Code im Heap unterzubringen, wo diese Restriktion nicht greift.
 
*Auch in unserem Fall findet sich der Code im Heap, denn die Funktion readstr kopiert ihn mit strdup genau dort hin. Allerdings ist es in der Regel schwieriger, die richtige Adresse im Heap, an der die Kopie landet, vorauszusagen.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2002 Andreas Borchert/Christian Ehrhardt, in HTML konvertiert am 18.06.2002