Software-Sicherheit – Teil 3

Exploits mit Security-Funktionen wie ASLR, DEP und Bounds Checking stoppen

24.03.2011 | Autor / Redakteur: Marcell Dietl / Stephan Augsten

Um Pufferüberläufe und andere Fehler zu vermeiden, sollte man übermittelte Funktionswerte und Befehle genau prüfen.
Um Pufferüberläufe und andere Fehler zu vermeiden, sollte man übermittelte Funktionswerte und Befehle genau prüfen.

Mit dem Security Development Lifecycle (SDL) setzte Microsoft ein klares Zeichen: Sicherheit ist ein Prozess und kein Produkt. Für Windows Vista wurden erstmals Richtlinien angewendet und Techniken wie ASLR und DEP eingesetzt. In diesem Beitrag betrachtet Security-Insider.de verschiedene Methoden zur Abwehr von Exploits und zeigt, wo deren Grenzen liegen.

Bereits im Mai 2000 formulierte Bruce Schneier in seinem Newsletter „Crypto-Gram“ einen Satz, der erst Jahre später zum Leitsatz für die Entwicklung sicherer Systeme werden sollte: „Security is a process, not a product.“ Dahinter steckt vor allem die Überzeugung, dass es keine hundertprozentig sicheren Systeme gibt und vermutlich auch nie geben wird.

Prozesse wie SDL können die Menge an Software-Fehlern zwar deutlich reduzieren, jedoch nicht komplett ausschließen. Um die Hürde anzuheben, einen funktionsfähigen Angriffscode zu schreiben, setzen moderne Betriebssysteme zusätzlich auf Technologien wie ASLR (Address Space Layout Randomization) und DEP (Data Execution Prevention).

Auch im Umgang mit Bug Huntern hat sich jüngst einiges getan. Unternehmen wie Google setzen verstärkt auf Zusammenarbeit und loben Prämien aus. Wer kritische Fehler in Webservices des Konzerns findet und meldet, erhält je nach Art des Problems bis zu 3133,70 US-Dollar. Die Mozilla Foundation folgte diesem Vorbild und erweiterte ihr eigenes Prämienprogramm ebenfalls auf Webdienste.

Ob durch faires Verhalten gegenüber Personen, die Fehler melden, bei der Wahl der Programmiersprache oder beim Einsatz diverser Schutzmechanismen gegen Exploits: Sicherheit ist immer ein Prozess, der aus vielen kleinen Teilen besteht. Einige davon werden in den folgenden Abschnitten weiter vertieft.

Unsichere Bibliotheksfunktionen mit Libsafe abfangen

Aufgrund ihrer Komplexität gilt die Programmiersprache C als zweischneidiges Schwert. Für systemnahe bzw. hochperformante Anwendungen auf mobilen Endgeräten ist sie häufig die erste Wahl. Leider sind viele Funktionen extrem fehleranfällig. Von der Benutzung manch einer wird sogar offen abgeraten:

„Never use gets().“ – Auszug aus der gets(3)-Manpage

Funktionen wie strcpy(), strcat(), scanf(), sprintf() und weitere haben alle eines gemein: Fehlendes Bounds Checking (Grenzwert-Kontrolle). Ankommende Daten lassen sich nicht direkt begrenzen und werden auch dann in den Zielpuffer kopiert, wenn dieser viel zu klein ist. Das Ergebnis ist ein klassischer Buffer Overflow.

Kritisch wird es jedoch dann, wenn die Daten vom Anwender stammen und dieser sie so manipuliert, dass der Programmfluss gezielt verbogen wird. Um derartige Fehler abzufangen, bedient sich Libsafe der Umgebungsvariable LD_PRELOAD. In dieser lassen sich dynamisch ladbare Bibliotheken angeben, deren Funktionen beim Start einer ELF-Datei Vorrang genießen sollen.

Mit Hilfe dieses Tricks „überschreibt“ Libsafe einzelne unsichere Standard-C-Funktionen mit Alternativen, welche den Prozess im Falle eines Pufferüberlaufs sofort stoppen. So lässt sich möglicher Schaden immerhin begrenzen; die Ursache des Problems bleibt jedoch weiterhin bestehen.

Inhalt

Inhalt des Artikels:

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 2050475 / Schwachstellen-Management)