Werkzeuge für Sicherheits-Audits

Es sind mehrere Pakete innerhalb Debians verfügbar, die dazu entwickelt wurden, bei Quellcode-Audits zu helfen. Diese beinhalten:

Beachten Sie auch, dass es weitere Werkzeuge für einen gegebenen Satz an Sicherheits-Verwundbarkeiten gibt, die noch nicht für Debian paketiert wurden, aber für einen Auditor nützlich sein könnten. Diese beinhalten:

Keines dieser Werkzeuge ist perfekt und sie können nur als Richtlinie für weitere Untersuchungen verwendet werden, aber angesichts der Tatsache, wie einfach sie zu benutzen sind, ist es sinnvoll, sich die Zeit zu nehmen, sie auszuprobieren.

Jedes der Werkzeuge hat verschiedene Stärken und Schwächen, daher ist die Verwendung von mehr als einem ratsam.

Flawfinder

Flawfinder ist ein Python-Werkzeug, das entwickelt wurde, um C und C++ Quellcode zu analysieren und nach möglichen Sicherheitsdefekten zu suchen.

Wenn es auf ein Verzeichnis voll mit Quellcode angewendet wird, dann gibt es einen Bericht der von ihm erkannten möglichen Probleme aus, sortiert nach Risiko (wobei Risko eine Ganzzahl zwischen 1 und 5 ist). Um geringe Risiken auszublenden, ist es möglich, dem Programm zu sagen, nicht über Defekte unter einer bestimmten Risikostufe zu berichten. Standardmäßig erfolgt die Ausgabe in reinem Text, aber ein HTML-Bericht ist auch verfügbar.

Das Programm durchsucht den Code und sucht nach der Verwendung von Funktionen, die innerhalb seiner Datenbank von häufig missbrauchten Funktionen enthalten sind.

Um beim Lesen des Berichts zu helfen, ist es möglich zu veranlassen, dass die Ausgabe eine Zeile über die verwendete Funktion enthält; dies kann sinnvoll sein, um sofort ein Problem zu erkennen oder es entsprechend auszuschließen.

Sie finden ein Beispiel für die Verwendung von Flawfinder und seine Ausgabe im Beispiele-für-Audits-Abschnitt.

ITS4

ITS4 ist ein im Non-Free-Bereich des Debian-Archivs enthaltenes Werkzeug; es ist nur für die Woody-Distribution verfügbar.

ITS4 kann dazu verwendet werden, sowohl C- als auch C++-Code auf mögliche Sicherheitslöcher hin zu durchsuchen, ähnlich wie Flawfinder.

Die von ihm erstellte Ausgabe versucht, intelligent zu sein und einige der Fälle, in denen der Aufruf der gefährlichen Funktionen sorgfältig erfolgt ist, auszuschließen.

RATS

RATS ist ein ähnliches Werkzeug wie die oben aufgeführten mit der Ausnahme, dass es eine viel größere Anzahl an Sprachen unterstützt. Derzeit hat es Unterstützung für C, C++, Perl, PHP und Python.

Das Werkzeug verwendet einfache XML-Dateien, um seine Verwundbarkeiten einzulesen, wodurch es eines der am einfachsten zu modifizierenden Werkzeuge ist. Neue Funktionen können einfach für jede der unterstützten Sprachen hinzugefügt werden.

Sie finden ein Beispiel für die Verwendung von RATS und dessen Ausgabe im Beispiele-für-Audits-Abschnitt.

Pscan

Pscan unterscheidet sich von den bisher beschriebenen Werkzeugen, da es überhaupt kein Allzweck-Durchsuchungsprogramm ist. Stattdessen ist es ein Programm, das gezielt Formatzeichenketten-Fehler entdeckt.

Das Werkzeug versucht, mögliche Punkte bei der Verwendung von variadischen Funktionen innerhalb des C- und C++-Quellcodes, wie beispielsweise printf, fprintf und syslog, zu finden.

Formatzeichenketten-Fehler sind recht einfach zu entdecken und zu beheben; obwohl sie die jüngste Klasse der Software-Angriffe sind, dürfte die Mehrheit davon bereits gefunden und behoben worden sein.

Sie finden ein Beispiel für die Verwendung von Pscan und dessen Ausgabe im Beispiele-für-Audits-Abschnitt.

Scanner-Ausgabe verstehen

Jedes der allgemeinen Durchsuchungswerkzeuge wird Ausgaben, die den erkannten Fehler beschreiben, beinhalten und möglicherweise Ratschläge erteilen, wie der Code korrigiert werden kann.

Zum Beispiel ist das folgende aus der Ausgabe von RATS entnommen und beschreibt die Gefahren von getenv:

"Environment variables are highly untrustable input. They may be of any length, and contain any data. Do not make any assumptions regarding content or length. If at all possible avoid using them, and if it is necessary, sanitize them and truncate them to a reasonable length."

Auf deutsch: "Umgebungsvariablen sind höchst unvertrauenswürdige Eingaben. Sie können beliebig lang sein und alle möglichen Daten enthalten. Treffen Sie keine Annahmen über Inhalt oder Länge. Falls irgendwie möglich vermeiden Sie deren Benutzung und falls es notwendig ist, bereinigen Sie sie und schneiden Sie sie auf eine vernünftige Länge".

Falls Sie weiteren Rat zur Korrektur von berichteten Löchern suchen, sollten Sie ein Buch über sicheres Programmieren studieren, wie beispielsweise das Secure Programming for Linux and Unix HOWTO von David A. Wheeler.

(Bedenken Sie beim Berichten von Sicherheitspunkten, dass ein Patch, der das Loch schließt, sehr geschätzt wird.)

Diskussionen in Bezug auf bestimmte problematische Code-Stücke können Sie auch auf der debian-security Mailingliste führen; da dies allerdings eine öffentliche Mailingliste mit öffentlichem Archiv ist, seien Sie vorsichtig, es nicht offensichtlich zu machen, welches Programm die Schwachstelle enthält.