Beispiel für automatisierte Audits: Flawfinder

Flawfinder ist ein Allzweck-Durchsuchprogramm, um potenzielle Mängel sowohl in C- als auch C++-Quellcode zu finden und zu berichten.

Flawfinder benutzen

Flawfinder zu benutzen ist so einfach wie der Aufruf des Befehls mit dem Namen der zu untersuchenden Datei oder des zu untersuchenden Verzeichnisses. Wenn ein Verzeichnisname übergeben wird, dann wird es alle gültigen Quelldateien, die es in dem Verzeichnis finden kann, bearbeiten.

Ergänzend zur Übergabe einer Liste von Dateien oder Verzeichnissen gibt es mehrere Kommandozeilenoptionen, die zur Steuerung des Verhaltens des Werkzeuges verwendet werden können.

Jede der Optionen ist in der Handbuchseite beschrieben, aber die folgenden Optionen sind besonders nützlich und werden in unserem Beispiel verwendet:

Um das Ergebnis unseres Programms als eine HTML-Datei auszugeben, die sich nur um Funktionen mit »hohem Risiko« kümmert, würden wir etwas wie folgt ablaufen lassen:

flawfinder --html --context --minlevel=4 test.c > output.html

Das Ergebnis

Lassen wir Flawfinder gegen unseren Beispielcode laufen, produziert er die folgende Ausgabe:


Examining test.c

Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)


Die Ausgabe verstehen

Sehr ähnlich zu der Ausgabe von RATS ist dieser Bericht sehr einfach zu lesen. Er zeigt deutlich die erkannten Funktionen als potenziell gefährlich, sowie eine Beschreibung des Problems.

Die Hinzunahme von Zusammenhangs-Informationen ist auch sehr nützlich, da diese sofort die Aufmerksamkeit auf beunruhigende Bereiche hinlenken oder andere Berichte als ungültig ausschließen können.

Die Analyse unseres Beispielcodes ist ziemlich intelligent, in dem Sinne, dass sie nicht über jede Verwendung der Besorgnis erregenden strcpy-Funktion berichtete, sondern nur über diejenigen, die es als potenziell gefährlich ansah.

Auf diese Weise hat es es geschafft, alle Mängel unseres Codes hervorzuheben und zugleich keine falschen positiven Meldungen zu erzeugen.


Zurück zum Audit-Projekt | Zurück zur Beispiele-für-Audits-Seite