BinScope und MiniFuzz

Microsoft: Zwei neue kostenlose Security-Tools

16.09.2009
Im Rahmen der Initiative Secure Developement Lifecycle (SDL) hat Microsoft zwei neue Sicherheits-Tools für Entwickler freigegeben. „BinScope“ und „MiniFuzz“ stehen kostenlos als Download bereit. Bemerkenswert ist, dass BinScope auf Anhieb mangelnde Sicherheitseinstellung im aktuellen IE8 entdeckt.

Mit Secure Development Lifecycle versucht Microsoft seit 2004, die Anzahl von Bugs in der Software zu reduzieren. Dazu hat man intern einen Prozess zur Softwareentwicklung aufgesetzt, der in sieben Stufen den kompletten Entstehungs- und Lebenszyklus eines Softwareprodukts umfasst. Erfolgreiche Strategien werden von Microsoft veröffentlicht und wenn möglich in die Entwicklungsumgebung Visual Studio integriert.

Während es für die SDL-Prozessstufen Design und Implementation etliche Tools gibt, hatte Microsoft für die Verifikation eines fertigen Produkts wenig zu bieten. Das soll sich nun mit den beiden kostenlosen Tools BinScope und MiniFuzz ändern.

Bildergalerie: BinScope und MiniFuzz
Binscope Standalone
Mit BinScope lassen sich Programme und DLLs auf Sicherheitslücken prüfen.
Informativ
Schon beim Öffnen zeigt BinScope erste Daten an.
BinScope im Visual Studio
BinScope lässt sich auch direkt in die Entwicklungsumgebung einbinden.
MiniFuzz
MiniFuzz erzeugt "defekte" Eingabedateien und testet die Reaktion des Programms darauf.
Kein Windows XP
Unter Windows XP stützt MiniFuzz unkontrolliert ab.
SDL
SDL sorgt in jedem Entwicklungsschritt für sichere Software.
VS-Template
Das SDL Process Template lässt sich auch in bestehende Prozesse manuell in Visual Studio einbinden.
Testlauf mit BinScope
Schon währed des Laufs zeigen sich erste Ergebnisse
Excel 2003
Ältere Programme nutzen nicht alle aktuellen Sicherheitsmerkmale.
Internet Explorer 8
Der IE8 wurde nicht als NX-kompatiben compiliert.

Der Microsoft BinScope Binary Analyzer überprüft Binärdateien wie DDLs oder Exe-Dateien auf Sicherheitsrisiken. Dabei legt BinScope zunächst Wert auf sichere Compileroptionen bei der Erzeugung des Binärcodes. Beispielsweise gibt es mit dem /GS-Flag eine Option, die Buffer Overflows zur Laufzeit erkennt und damit einen der häufigsten Angriffsvektoren eliminiert. Auch die Data Execution Prevention und das Safe Exception Handling müssen laut SDL-Richtlinen aktiviert sein.

Erwischt: Hält sich Microsoft intern nicht an die SDL-Richtlinien? Zumindest beim IE8 wird die Data Execution Prevention nicht genutzt.

BinScope: Kontrolle auch über fremden Binärcode

Neben den Flags prüft BinScope die Signatur von Komponenten und den Einsatz aktueller Compiler- und Linker-Versionen. Auch veraltete ATL-Header und kritische Konstruktionen wie Globale Function Pointer mahnt BinScope an.

Fehlerfreie Softwareentwicklung: SDL definiert einen bewährten Entwicklungsprozess über die komplette Lebensdauer eines Produkts.

Entscheidend an BinScope ist, dass sich damit nicht nur der selbst erzeugte Code überprüfen lässt. Den bei diesem hat man eh die Kontrolle über die Compileroptionen und die anderen überprüften Risiken. Vielmehr hilft BinScope, diese Risiken auch in externen Dateien zu entdecken, etwa in zugekauften Libraries, die nur als DLL-Binärdatei vorliegen. Hier gilt es dann bei entdeckten Schwachstellen, Druck auf deren Hersteller auszuüben oder auf ein besser gepflegtes Produkt zu wechseln.

Risiken auch in alten Microsoft-Programmen: Excel 2003 nutzt weder die Data Execution Prevention, noch sichere Ausnahmehandler.

MiniFuzz File Fuzzer

Ein weiteres Tool zum Überprüfen fertiger Applikationen ist der MiniFuzz File Fuzzer. Er füttert Anwendungen mit automatisch erzeugten, fehlerhaften Dateien und beobachtet dann deren Reaktion. Was sich zunächst etwas exotisch anhört, wurde 2004 zum Alptraum für Microsoft. Im Grafic Device Interface von Windows XP und 2003 gab es eine Lücke, über die ein Angreifer den vollen Systemzugriff erhielt, wenn ein Anwender eine präparierte JPG-Bilddatei öffnete (siehe auch Patch Day September 2004: Extrem kritische JPEG-Lücke).

Für das File Fuzzing legt man in ein Verzeichnis verschiedene gültige Eingabedateien ab. In einem typischen Test erzeugt MiniFuzz damit dann 100.000 unterschiedlich stark manipulierte Dateien und ruft die zu testende Anwendung damit auf. Kommt es nicht zu einer kontrollierten Fehlermeldung, sondern zum unkontrollierten Crash, weil beispielsweise die Datei zu groß ist oder ungültige Werte enthält, liegt ein potenzielles Sicherheitsproblem vor.

MiniFuzz: Der File Fuzzer erzeugt manipulierte Eingabedateien.

MiniFuzz stellt die kritische Input-Datei dann dem Entwickler zur Verfügung, der damit den Fehler in seiner Anwendung analysieren und abfangen kann.

MiniFuzz kann innerhalb von Visual Studio oder auch als Standalone-Programm genutzt werden. Allerdings benötigt MiniFuzz als Standalone mindestens Vista als Betriebssystem. Ärgerlich ist, dass dies nur im „Kleingedruckten“ auf der Website von Microsoft zu lesen ist. Unter Windows XP lässt sich MiniFuzz problemlos installieren und auch starten. Will man dann einen Test beginnen, stürzt MiniFuzz aber mit einer nicht behandelten Exception ab.

Nicht unter XP: MiniFuzz benötigt mindestens Vista als Plattform. Allerdings wird diese Vorraussetzung nicht abgefragt, unter XP stürzt MiniFuzz unkontrolliert ab.

SDL Process Template

Seit Mai 2009 stellt Microsoft das SDL Process Templates für Visual Studio zur Verfügung. Allerdings war es schwierig, dieses in bestehende Projekte zu integrieren. Jetzt bietet Microsoft auch eine Schritt-für-Schritt-Anleitung, wie sich die wichtigsten Elemente des SDL Process Templates in bestehende Entwicklungen mit dem Visual Studio Team System einbinden lassen.

SDL Process Template: Das Template lässt sich in VS integrieren.

Minifuzz und BinScope finden sich ebenso wie das SDL Prozess Template im SDL Tools Repository zum kostenlosen Download. Dort können Entwickler auch weitere Tools herunterladen, die die Softwareerstellung in den verschiedenen Prozessstufen sicherer machen. (ala)