Dienstag, 15. Juni 2010


Topthema

Freitag, 27. Mai 2005 | Topthema

About Security #7: Gegenwehr — Pufferüberläufe verhindern

(Link zum Artikel: http://www.entwickler.de/entwicklerde/kolumnen/021897)

Wo außer in den in About Security #6 vorgestellten Fällen noch überall Pufferüberläufe auftreten, wie sie ausgenutzt werden und wie sich die Anwender vor derartigen Angriffen schützen können, erfahren Sie hier.

Pufferüberläufe im Kernel werden oft durch speziell dafür geschriebene Programme ausgenutzt. Ein normaler Benutzer kann sich damit höhere Benutzerrechte verschaffen. Eine Schwachstelle dieser Kategorie ist ein Pufferüberlauf in der Funktion elf_core_dump() des Linux-Kernels. Ein normaler Benutzer kann die Schwachstelle ausnutzen, um root-Rechte zu erlangen und damit die Kontrolle über den betroffenen Rechner zu übernehmen. Ebenso kann sich ein Angreifer, der nach dem Eindringen über eine andere Schwachstelle eingeschränkte Rechte erlangt hat, damit root-Rechte beschaffen.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Die bisher vorgestellten Möglichkeiten hatten eins gemeinsam: Der Angreifer konnte die entsprechend präparierten Daten oder Dateien an das Opfer senden. Es gibt auch Fälle, in denen sich das Opfer mit einem Server verbinden muss, bevor der Angreifer eine Schwachstelle ausnutzen kann. Hierzu gehört der im März 2005 gefundene Pufferüberlauf-Schwachstelle in den Telnet Clients mehrerer Hersteller. Erst nachdem ein Benutzer eine Verbindung zu einem entsprechend präparierten Server aufgebaut hat, kann die Schwachstelle von diesem aus ausgenutzt werden. Der Angreifer muss das Opfer also dazu verleiten, eine Verbindung zu seinem Server aufzubauen.

Schutzmaßnahmen

Es gibt folgende Möglichkeiten, eine Ausnutzung von Pufferüberläufen zu verhindern:

  • Die Schwachstelle wird mit einem Patch oder Update behoben
  • Die gefährlichen Daten werden vom betroffenen Programm ferngehalten
  • Die Ausführung des eingeschleusten Codes wird verhindert

Eine vierte Möglichkeit ist, betroffene Programme bis zur Verfügbarkeit eines Patches oder Updates nicht zu verwenden. Da man auf deren Funktion selten verzichten kann, wird man darauf aber nur zurückgreifen, wenn die Gefahr einer Ausnutzung sehr hoch ist, z.B. weil ein Wurm die Schwachstelle zur Verbreitung nutzt.

Der erste Punkt sollte selbstverständlich sein. Dafür muss allerdings ein Patch oder Update verfügbar sein, was bei vielen Schwachstellen erst nach einiger Zeit oder gar nicht passiert.

About Security: Die komplette Serie

Der zweite Punkt setzt voraus, dass man weiß, welches Programm man vor welchen Daten schützen muss. Daher besteht der erste Schritt darin, sich über Schwachstellen in den eingesetzten IT-Systemen auf dem Laufenden zu halten. Eine Informationsquelle sind die entsprechenden Mailinglisten der Hersteller, die jedoch meist erst bei Verfügbarkeit eines Patches oder Updates über Schwachstellen informieren. Informationen über neu gefundene Schwachstellen erhält man z.B. über Mailinglisten wie Bugtraq und Full-Disclosure oder Websites wie SecurityTracker und SecurityFocus. Nicht zu vergessen den Bereich Security aktuell im Security-Channel von entwickler.de.

Wird eine Schwachstelle bekannt, müssen potenziell gefährliche Daten vom betroffenen Programm ferngehalten werden. Im Fall von über das Netzwerk erreichbaren Programmen kann man, sofern möglich, gefährliche Eingaben über eine Firewall, einen Proxy-Server oder ein Intrusion Prevention System ausfiltern. Da dabei die Funktion des betroffenen Programms für berechtigte Benutzer nicht eingeschränkt werden soll, sind diesen Maßnahmen Grenzen gesetzt. Virenscanner können gefährliche Dateien aus E-Mails und Downloads ausfiltern. In Webseiten eingebettete Daten werden dabei jedoch i.d.R. nicht überprüft. Außerdem ist man von der Qualität des Virenscanners abhängig. Im Fall der in About Security #6 erwähnten JPEG-Schwachstelle zeigte sich nach kurzer Zeit, dass viele Virenscanner nicht alle gefährlichen Bilder erkannten.

Die Ausführung eingeschleusten Codes verhindern kann man nur auf dafür ausgelegten Systemen. Windows XP SP2 unterstützt die Execution Protection (NX, no execute), um die Auswirkung von Pufferüberläufen zu minimieren. NX markiert den Stack als "nicht ausführbar", sodass dort eingeschleuster Code nicht ausgeführt wird (Data Execution Prevention, DEP). OpenBSD bietet einen ähnlichen Schutz, das dafür verwendete System ist auch für andere Betriebssysteme verwendbar. Für Linux bietet die Kernel-Erweiterung PaX Schutz vor Pufferüberläufen. Der Vorteil dieser Schutzfunktionen: Sie schützen auch vor unbekannten Schwachstellen, die erst auffallen, nachdem sie ausgenutzt wurden. Ein Allheilmittel sind sie jedoch nicht, da sie wie jede Software Schwachstellen enthalten können. So wurde z.B. 2005 in PaX eine Schwachstelle gefunden, die Benutzer zum Erlangen höherer Benutzerrechte ausnutzen können. Die Schwachstelle wurde jedoch sehr schnell behoben.

In dieser Folge erfuhren Sie, wie Anwender sich vor der Ausnutzung von Pufferüberlauf-Schwachstellen schützen können. In der nächsten Folge lernen Sie, wie Entwickler Pufferüberlauf-Schwachstellen in ihren Programmen verhindern können.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Eine typische Schwachstelle: Der Pufferüberlauf"

Kommentare

Folgende Links könnten Sie auch interessieren