Was Analyse-Tools entgeht

Schwachstellen in Open Source Software aufspüren

| Autor / Redakteur: Mike Pittenger / Stephan Augsten

Der Code von Anwendungen sollte im Idealfall durchgehend überwacht werden.
Der Code von Anwendungen sollte im Idealfall durchgehend überwacht werden. (Bild: Archiv)

Statische und dynamische Code-Analyse-Tools helfen dabei, allgemeine Programmierfehler und damit potenzielle Schwachstellen zu identifizieren. In Open Source-Komponenten finden sich aber alltägliche Bugs, die sich auf diese Weise nicht so einfach aufspüren lassen.

Unternehmen sind in erster Linie an der Sicherheit ihrer Software interessiert. Begriffe und Kategorien wie statische Analyse, dynamische Analyse, Penetrationstest und Schwachstellenanalyse sind eher verwirrend. Hier ein Überblick der gängigsten Sicherheitstests und ihre wichtigsten Merkmale:

Statische Analyse

Statische Analyse-Tools analysieren den Source Code oder kompilierte Applikationen, um Schwachstellen, im von internen Entwicklern geschriebenen Code, aufzudecken. Dazu erstellen sie entweder einen abstrakten Syntaxbaum (AST) oder ein Modell der Anwendung, das beispielsweise Ablaufsteuerung, Datenfluss oder Variablen abbildet. Ist der AST einmal fertiggestellt, kann er anhand vordefinierter Regeln abgefragt werden und so allgemeine Sicherheitsprobleme aufspüren.

Die meisten statischen Tests können nur in vollständigen Anwendungen und unter Berücksichtigung aller Abhängigkeiten eine Analyse durchführen. Deshalb und aufgrund ihrer Komplexität werden statische Tests erst gegen Ende des Entwicklungsprozess angewandt.

Tools zur statischen Analyse eignen sich gut, um die häufigsten Schwachstellen wie SQL-Injections, Cross-Site-Scripting und Pufferüberlauf zu identifizieren. Handelt es sich allerdings um Themen wie Authentifizierung oder die Ausweitung von Rechten, sind sie nur bedingt geeignet.

Dynamische Analyse

Anders als beim statischen Test prüft die dynamische Analyse eine Applikation während ihrer Laufzeit. Dynamische Analyse-Tools können eine Applikation erkennen und traversieren, um Eingabeschnittstellen für das sogenannte Fuzzing zu identifizieren.

Fuzz-Testing wird in Software-Entwicklungs-Projekten normalerweise im Rahmen eines Black-Box-Tests durchgeführt. Dabei werden automatisch generierte, zufällige Daten über die Eingabeschnittstellen zur Verarbeitung eingespeist (z. B. Öffnen einer Datei, deren Datenformat das Programm unterstützt).

Verursacht das Programm daraufhin ein reproduzierbares Problem (z. B. Absturz), lassen sich Ursachen erforschen und Sicherheitslücken schließen. Beispiele hierfür sind SQL-Befehle, lange Strings, negative Zahlen und unerwartete Daten.

Dynamische Tools benötigen eine laufende Anwendung in einer Testumgebung, in der Regel in Kombination mit einer Datenbank für Datenabfragen. Sie kommen also erst sehr spät im Entwicklungsprozess zum Einsatz und sind vor allem nützlich, wenn es um die Identifizierung von Fehlern bei der Eingabevalidierung und um eine Speicherzuordnung geht. Da sie eine laufende Anwendung testen, ist es allerdings schwierig, sicherheitsrelevante Fehler bis zum Quellcode zurückzuverfolgen und zu beheben.

Schwachstellenanalyse

Tools zur Schwachstellenanalyse, auch als Penetrationstest bezeichnet, ähneln dynamischen Analyse-Tools. Auch sie kommen in laufenden Anwendungen zum Einsatz, suchen nach Sicherheitsrisiken und generieren zufällige, unerwartete Daten, um den späteren Einsatz zu simulieren.

Dazu verfügen Schwachstellenanalyse-Tools oftmals über Scripts oder Regeln, mit denen bekannte Sicherheitslücken ausgenutzt werden können. Diese Werkzeuge helfen den Entwicklern dabei, mögliche Angriffsmuster nachzubilden. Angewendet wird die Schwachstellenanalyse für gewöhnlich bei Produktionssystemen, um nicht gepatchte Netzwerkanwendungen, Betriebssysteme und Applikationen zu identifizieren.

Eine Universallösung, um alle verschiedenen Sicherheitsrisiken aufzudecken, gibt es nicht. Manche Bugs sind auf das Software-Design zurückzuführen, z. B. bei der Speicherung von Schlüsseln und Berechtigungen. Solche Schwachstellen lassen sich auch nicht von automatisierten Technologien aufspüren. Welche Lösung sich am besten eignet, hängt immer von der Art der Schwachstelle ab. Deswegen empfiehlt sich die Verwendung verschiedener Testmethoden, deren Auswahl sich sowohl an der Bedeutung der getesteten Anwendung als auch am Risikoprofil des Unternehmens ausrichtet.

Inhalt des Artikels:

Was meinen Sie zu diesem Thema?

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken
copyright

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