failfinder – Online in der Cloud

Dies ist der Befehlsfehlerfinder, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


Schwachstellenfinder – Finden Sie lexikalisch potenzielle Sicherheitslücken („Treffer“) im Quellcode

ZUSAMMENFASSUNG


Fehlerfinder [--help|-h] [--Version] [--listrules]
[--allowlink] [--followdotdir] [--keine Verbindung]
[--patch=Dateinamen|-P Dateinamen]
[--Eingänge|-I] [ --minlevel=X | -m X ] [--falschpositiv|-F]
[--neverignore|-n]
[--regex=MUSTER | -e MUSTER]
[--Kontext|-c] [--Säulen|-C] [--dataonly|-D] [--html|-H] [--sofort|-i]
[--einzelne Zeile|-S] [--omittime] [--ruhig|-Q]
[--loadhitlist=F] [--savehitlist=F] [--diffhitlist=F]
[--] [ Quelle Code Datei or Quelle Wurzel Verzeichnis ]+

BESCHREIBUNG


Flawfinder durchsucht den C/C++-Quellcode nach potenziellen Sicherheitslücken. Zu
Führen Sie den Fehlerfinder aus. Geben Sie dem Fehlerfinder einfach eine Liste der Verzeichnisse oder Dateien. Für jedes Verzeichnis
gegeben, alle Dateien mit C/C++-Dateinamenerweiterungen in diesem Verzeichnis (und seinen
Unterverzeichnisse, rekursiv) werden untersucht. Geben Sie also bei den meisten Projekten einfach
failfinder der Name des obersten Verzeichnisses des Quellcodes (verwenden Sie „.“ für das aktuelle
(Verzeichnis) und der Schwachstellenfinder untersucht den gesamten C/C++-Quellcode des Projekts. Wenn du
nur haben wollen Änderungen überprüft, speichern Sie ein einheitliches Diff dieser Änderungen (erstellt von GNU
„diff -u“ oder „svn diff“ oder „git diff“) in einer Patch-Datei und verwenden Sie die Option --patch (-P).

Flawfinder erstellt eine Liste der „Treffer“ (potenzielle Sicherheitslücken), sortiert nach Risiko; Die
Die riskantesten Treffer werden zuerst angezeigt. Die Risikostufe wird in eckigen Klammern angegeben und variiert
von 0, sehr geringes Risiko, bis 5, großes Risiko. Dieses Risikoniveau hängt nicht nur von der
Funktion, sondern auf den Werten der Parameter der Funktion. Zum Beispiel konstant
Zeichenfolgen sind in vielen Kontexten und in diesen Fällen oft weniger riskant als vollständig variable Zeichenfolgen
In bestimmten Kontexten weist der Treffer ein geringeres Risiko auf. Flawfinder kennt sich mit gettext (einem häufigen Problem) aus
Bibliothek für internationalisierte Programme) und behandelt durchgereichte konstante Zeichenfolgen
gettext, als wären sie konstante Strings; Dies reduziert die Anzahl falscher Treffer
internationalisierte Programme. Flawfinder macht dasselbe mit _T() und
_TEXT(), gängige Microsoft-Makros zur Handhabung internationalisierter Programme. Fehlerfinder
Der Großteil des Texts in Kommentaren und Zeichenfolgen wird korrekt ignoriert. Normalerweise zeigt der Fehlerfinder alles an
Treffer mit einer Risikostufe von mindestens 1, aber Sie können die Option --minlevel verwenden, um nur anzuzeigen
Treffer mit höherem Risikoniveau, wenn Sie es wünschen. In den Trefferbeschreibungen wird auch auf das entsprechende Common verwiesen
Weakness Enumeration (CWE)-Kennung(en) in Klammern, wie unten erläutert. Fehlerfinder
ist offiziell CWE-kompatibel.

Nicht jeder Treffer ist tatsächlich eine Sicherheitslücke, und nicht jede Sicherheitslücke
wird unbedingt gefunden. Dennoch kann der Fehlerfinder eine Hilfe beim Auffinden und Entfernen sein
Sicherheitslücken. Eine übliche Art und Weise, den Fehlerfinder zu verwenden, besteht darin, zunächst den Fehlerfinder auf anzuwenden
Erstellen Sie einen Satz Quellcode und untersuchen Sie die Elemente mit dem höchsten Risiko. Verwenden Sie dann zur Untersuchung --inputs
Überprüfen Sie die Eingabepositionen und stellen Sie sicher, dass nur zulässige und sichere Eingabewerte vorhanden sind
von nicht vertrauenswürdigen Benutzern akzeptiert.

Sobald Sie ein Programm geprüft haben, können Sie Quellcodezeilen markieren, die eigentlich in Ordnung sind, aber
verursachen falsche Warnungen, sodass der Fehlersucher sich nicht mehr darüber beschwert. Um ein zu markieren
Damit diese Warnungen unterdrückt werden, fügen Sie entweder einen speziell formatierten Kommentar ein
in derselben Zeile (nach dem Quellcode) oder ganz allein in der vorherigen Zeile. Der Kommentar
muss eines der beiden folgenden Formate haben:

· // Flawfinder: ignorieren

· /* Flawfinder: ignorieren */

Aus Kompatibilitätsgründen können Sie in diesen „Flawfinder:“ durch „ITS4:“ oder „RATS:“ ersetzen
speziell formatierte Kommentare. Da solche Zeilen möglicherweise falsch sind, können Sie sie verwenden
die Option --neverignore, die bewirkt, dass der Fehlerfinder niemals eine Zeile ignoriert, egal was passiert
In den Kommentaranweisungen heißt es (verwirrender ist, dass --neverignore die Ignorierungen ignoriert).

Flawfinder verwendet eine interne Datenbank namens „Regelsatz“. Der Regelsatz identifiziert
Funktionen, die häufige Ursachen für Sicherheitslücken sind. Der Standardregelsatz umfasst eine große
Es gibt eine Reihe verschiedener potenzieller Probleme, einschließlich allgemeiner Probleme, die sich auf alle auswirken können
C/C++-Programm sowie eine Reihe spezifischer Unix-ähnlicher und Windows-Funktionen
besonders problematisch. Die Option --listrules meldet die Liste der aktuellen Regeln und
ihr Ausfallrisikoniveau. Wie oben erwähnt, jede potenzielle Sicherheitslücke, die in einem bestimmten gefunden wird
Die Quellcodedatei (die mit einem Eintrag im Regelsatz übereinstimmt) wird als „Treffer“ bezeichnet, und die Menge davon
Treffer, die während eines bestimmten Programmlaufs gefunden werden, werden als „Hitliste“ bezeichnet. Hitlisten
kann gespeichert werden (mithilfe von --savehitlist), zur erneuten Anzeige erneut geladen werden (mithilfe von --loadhitlist) und
Sie können nur die Treffer anzeigen, die sich von einem anderen Lauf unterscheiden (mithilfe von --diffhitlist).

Flawfinder ist ein einfaches Tool, das einige grundlegende Vor- und Nachteile mit sich bringt. Flawfinder funktioniert
durch einfache lexikalische Tokenisierung (Kommentare überspringen und Zeichenfolgen korrekt tokenisieren),
Suche nach Token-Übereinstimmungen mit der Datenbank (insbesondere um Funktionsaufrufe zu finden).
Damit ähnelt Flawfinder RATS und ITS4, die ebenfalls eine einfache lexikalische Tokenisierung nutzen.
Anschließend untersucht Flawfinder den Text der Funktionsparameter, um das Risiko abzuschätzen. nicht wie
Tools wie Splint, GCC-Warnflags und Clang sind bei Faultfinder verfügbar nicht nutzen oder haben
Zugriff auf Informationen über Kontrollfluss, Datenfluss oder Datentypen bei der Suche
potenzielle Schwachstellen oder die Einschätzung des Risikoniveaus. So wird der Fehlerfinder
zwangsläufig viele Fehlalarme für Schwachstellen produzieren und viele davon nicht melden
Schwachstellen. Andererseits kann der Fehlerfinder Schwachstellen in Programmen finden
kann nicht erstellt oder nicht verknüpft werden. Es kann oft mit Programmen funktionieren, die das gar nicht können
zusammengestellt (zumindest mit den Werkzeugen des Prüfers). Flawfinder lässt sich auch nicht so verwirren
Makrodefinitionen und andere Kuriositäten, mit denen anspruchsvollere Tools Probleme haben.
Flawfinder kann auch als einfacher Einstieg in statische Analysetools nützlich sein
allgemein, da es leicht zu bedienen und leicht zu verstehen ist.

Jeder in der Befehlszeile angegebene Dateiname wird untersucht (auch wenn er keinen üblichen Namen hat).
C/C++-Dateinamenerweiterung); Auf diese Weise können Sie den Fehlerfinder dazu zwingen, bestimmte Dateien zu untersuchen
Verlangen. Beim rekursiven Durchsuchen von Verzeichnissen wird der Fehlerfinder nur geöffnet und untersucht
reguläre Dateien mit der Dateinamenerweiterung C/C++. Flawfinder geht davon aus, dass Dateien vorhanden sind
C/C++-Dateien, wenn sie die Erweiterungen „.c“, „.h“, „.ec“, „.ecp“, „.pgc“, „.C“, „.cpp“ haben.
„.CPP“, „.cxx“, „.cc“, „.CC“, „.pcc“, „.hpp“ oder „.H“. Der Dateiname „-“ bedeutet
Standardeingabe. Um Sicherheitsprobleme zu vermeiden, werden spezielle Dateien (z. B. spezielle Gerätedateien) verwendet
und Named Pipes) werden immer übersprungen, und standardmäßig werden symbolische Links übersprungen (die
Die Option --allowlink folgt symbolischen Links.

Nach der Trefferliste folgt eine kurze Zusammenfassung der Ergebnisse (entfernen Sie diese mit -D).
Information). Es zeigt die Anzahl der Treffer, analysierten Zeilen (wie von wc -l gemeldet) und
die physischen Quellcodezeilen (SLOC) analysiert. Ein physischer SLOC ist ein nicht leerer, nicht
Kommentarzeile. Anschließend wird die Anzahl der Treffer auf jedem Level angezeigt; Beachten Sie, dass dies der Fall sein wird
Niemals ein Hit auf einem Level sein, der niedriger als minlevel ist (standardmäßig 1). Also „[0] 0 [1] 9“
bedeutet, dass auf Stufe 0 0 Treffer gemeldet wurden und auf Stufe 1 9 Treffer
gemeldet. Als nächstes wird die Anzahl der Treffer auf einem bestimmten Level oder höher (also Level 3+) angezeigt
hat die Summe der Anzahl der Treffer auf Level 3, 4 und 5). Somit ergibt sich ein Eintrag von „[0+] 37“
zeigt, dass es auf Level 0 oder höher 37 Treffer gab (der Eintrag 0+ bleibt immer derselbe).
wie die „Hits“-Zahl oben). Als nächstes werden Treffer pro KSLOC angezeigt; Dabei handelt es sich jeweils um die „Stufe bzw
höhere" Werte multipliziert mit 1000 und dividiert durch den physischen SLOC. Wenn Symlinks vorhanden wären
übersprungen, deren Anzahl wird gemeldet. Wenn Treffer unterdrückt wurden (mittels „Ignorieren“
Anweisung in Quellcode-Kommentaren wie oben beschrieben) wird die unterdrückte Anzahl gemeldet.
Die Mindestrisikostufe, die in den Bericht aufgenommen werden soll, wird angezeigt; Standardmäßig ist dies 1
(Verwenden Sie --minlevel, um dies zu ändern). Die Zusammenfassung endet mit wichtigen Hinweisen: Nicht bei jedem Treffer
Es handelt sich zwangsläufig um eine Sicherheitslücke, und es können auch andere Sicherheitslücken vorliegen
wird vom Tool nicht gemeldet.

Flawfinder wird unter der GNU GPL-Lizenz Version 2 oder höher (GPLv2+) veröffentlicht.

Flawfinder funktioniert ähnlich wie ein anderes Programm, ITS4, das nicht vollständig Open Source ist
Software (wie in der Open-Source-Definition definiert) noch freie Software (wie in der Open-Source-Definition definiert).
Free Software Foundation). Der Autor von Flawfinder hat den Quellcode von ITS4 noch nie gesehen.

KURZ TUTORIAL


Hier ist ein kurzes Beispiel dafür, wie der Fehlerfinder verwendet werden könnte. Stellen Sie sich vor, Sie hätten C/C++
Quellcode für ein Programm namens xyzzy (das Sie möglicherweise geschrieben haben oder nicht) und
Sie suchen nach Sicherheitslücken (damit Sie diese vor den Kunden beheben können).
auf die Schwachstellen stoßen). Für dieses Tutorial gehe ich davon aus, dass Sie ein Unix-Gerät verwenden.
ähnliches System wie Linux, OpenBSD oder MacOS X.

Wenn sich der Quellcode in einem Unterverzeichnis mit dem Namen xyzzy befindet, würden Sie wahrscheinlich damit beginnen, ein zu öffnen
Textfenster und Verwendung der Standardeinstellungen von Schwachstellen, um das Programm zu analysieren und einen Bericht zu erstellen
Priorisierte Liste potenzieller Sicherheitslücken (das „weniger“ stellt nur sicher, dass die
Ergebnisse bleiben auf dem Bildschirm):
Fehlerfinder xyzzy | weniger

An dieser Stelle sehen Sie eine große Anzahl von Einträgen. Jeder Eintrag hat einen Dateinamen, a
Doppelpunkt, eine Zeilennummer, eine Risikostufe in Klammern (wobei 5 das höchste Risiko darstellt), eine Kategorie,
der Name der Funktion und eine Beschreibung, warum Schwachfinder denkt, dass es sich bei der Zeile um eine handelt
Verletzlichkeit. Flawfinder sortiert normalerweise nach Risikostufe und zeigt die risikoreichsten Elemente zuerst an;
Wenn Sie nur wenig Zeit haben, ist es wahrscheinlich am besten, mit der Arbeit an den riskantesten Gegenständen zu beginnen
Fahren Sie fort, bis Ihnen die Zeit ausgeht. Wenn Sie die Anzeige auf Risiken mit nur einem beschränken möchten
Bei einem bestimmten Risikoniveau oder höher verwenden Sie die Option --minlevel. Wenn Sie eine bekommen
außerordentlich viele Fehlalarme, weil Variablennamen gefährlich aussehen
Funktionsnamen verwenden Sie die Option -F, um Berichte darüber zu entfernen. Wenn Sie es nicht verstehen
Die Fehlermeldung finden Sie in Dokumenten wie der Schreiben Security Programme für Linux und
Unix Howtohttp://www.dwheeler.com/secure-programs⟩ bei http://www.dwheeler.com/secure-
Programme, das weitere Informationen zum Schreiben sicherer Programme bietet.

Sobald Sie das Problem identifiziert und verstanden haben, können Sie es beheben. Gelegentlich kann es sein
Ich möchte die Analyse erneut durchführen, da sich die Zeilennummern ändern werden und sichergehen
dass der neue Code noch keine andere Sicherheitslücke mit sich bringt.

Wenn Sie festgestellt haben, dass eine Leitung kein wirkliches Problem darstellt, und Sie sich dessen sicher sind, können Sie dies tun
Fügen Sie kurz vor oder in der betreffenden Zeile einen Kommentar wie „Gefällt mir“ ein
/* Flawfinder: ignorieren */
um zu verhindern, dass sie in der Ausgabe angezeigt werden.

Sobald Sie das getan haben, sollten Sie zurückgehen und nach den Eingaben des Programms suchen, die Sie vornehmen möchten
Stellen Sie sicher, dass das Programm alle nicht vertrauenswürdigen Eingaben stark filtert. Flawfinder kann
Identifizieren Sie viele Programmeingaben mithilfe der Option --inputs, etwa so:
failfinder --inputs xyzzy

Flawfinder lässt sich gut in Texteditoren und integrierte Entwicklungsumgebungen integrieren;
Weitere Informationen finden Sie in den Beispielen.

Flawfinder enthält viele weitere Optionen, darunter auch solche zum Erstellen von HTML-Versionen
Ausgabe (nützlich für schönere Darstellungen). Im nächsten Abschnitt werden diese Optionen ausführlicher beschrieben
Detail.

OPTIONAL


Flawfinder verfügt über eine Reihe von Optionen, die in Optionen gruppiert werden können, die den eigenen steuern
Dokumentation, Auswahl der Eingabedaten, Auswahl der anzuzeigenden Treffer, Auswahl des Ausgabeformats,
und führen Sie eine Hitlistenverwaltung durch. Flawfinder unterstützt die in definierte Standardsyntax
POSIX (Ausgabe 7, Ausgabe 2013), Abschnitt „Utility Conventions“. Es unterstützt auch GNU
lange Optionen (Doppelstrich-Optionen der Form --zu erhalten), wie in der definiert GNU C Bibliothek
Referenz Manuell „Programmargument-Syntaxkonventionen“ und GNU Programmierung Standards
„Standards für Befehlszeilenschnittstellen“. Lange Optionsargumente können als bereitgestellt werden
„--name=value“ oder „-name value“. Auf einige Optionen kann nur über mehr zugegriffen werden
lesbare GNU-Konventionen für lange Optionen; gängige Optionen werden auch von den älteren unterstützt
Ein-Buchstaben-Optionskonvention.

Dokumentation
--help

-h Nutzungsinformationen (Hilfe) anzeigen.

--Version Zeigt (nur) die Versionsnummer an und wird beendet.

--listrules Listen Sie die Begriffe (Tokens) auf, die eine weitere Prüfung auslösen, sowie deren Ausfallrisiko
Ebene und die Standardwarnung (einschließlich der CWE-Kennung(en), falls
zutreffend), alle durch Tabulatoren getrennt. Bei den Begriffen handelt es sich in erster Linie um Namen potenziell-
gefährliche Funktionen. Beachten Sie, dass die gemeldete Risikostufe und Warnung für einige gilt
Der spezifische Code kann je nach Begriff vom Standard abweichen
gebraucht. Kombinieren Sie mit -D, wenn Sie nicht den üblichen Header wünschen. Fehlerfinder
Version 1.29 hat das Trennzeichen von Leerzeichen in Tabulatoren geändert und die Standardeinstellung hinzugefügt
Warnfeld.

Auswahl zufuhr Daten-Management
--allowlink Erlauben Sie die Verwendung symbolischer Links. Normalerweise werden symbolische Links übersprungen. Nicht
Verwenden Sie diese Option, wenn Sie Code von anderen analysieren. Angreifer könnten viele tun
Dinge, die bei einer Analyse mit aktivierter Option zu Problemen führen können. Für
Beispielsweise könnte ein Angreifer symbolische Links zu Dateien wie einfügen / etc / passwd
(Informationen über die Datei verloren gehen) oder eine kreisförmige Schleife erstellen, die dies tun würde
verursachen, dass der Fehlerfinder „für immer“ läuft. Ein weiteres Problem bei der Aktivierung
Option ist, dass dieselbe Datei mehrmals symbolisch referenziert wird
Links werden diese mehrfach analysiert (und somit mehrfach gemeldet).
Beachten Sie, dass der Fehlerfinder bereits einen gewissen Schutz gegen symbolische Links enthält
auf spezielle Dateitypen wie Gerätedateitypen (z. B. /dev/zero oder
C:\mystuff\com1). Beachten Sie, dass dies für die Fehlerfinder-Version 1.01 und früher der Fall war
der Standard.

--followdotdir
Geben Sie Verzeichnisse ein, deren Namen mit „.“ beginnen. Normalerweise sind solche Verzeichnisse
ignoriert, da sie normalerweise private Versionskontrolldaten enthalten (z. B
.git/ oder .svn/), Konfigurationen usw.

--keine Verbindung Ignoriert. Historisch gesehen war das Befolgen symbolischer Links deaktiviert. Dieses Verhalten
ist jetzt die Standardeinstellung.

--patch=Patchdatei

-P Patchdatei
Untersuchen Sie die ausgewählten Dateien oder Verzeichnisse, melden Sie jedoch nur Treffer in Zeilen, die
werden durch die angegebene Patchdatei hinzugefügt oder geändert. Die Patch-Datei muss in einer Datei vorliegen
erkanntes einheitliches Diff-Format (z. B. die Ausgabe von GNU „diff -u old new“,
„svn diff“ oder „git diff [commit]“). Flawfinder geht davon aus, dass der Patch vorhanden ist
bereits auf die Dateien angewendet. Die Patchdatei kann auch Änderungen an enthalten
irrelevante Dateien (sie werden einfach ignoriert). Die in der angegebenen Zeilennummern
Die Patch-Datei wird verwendet, um festzustellen, welche Zeilen geändert wurden
Wenn Sie die Dateien seit der Erstellung der Patch-Datei geändert haben, generieren Sie die Patch-Datei neu
Erste. Beachten Sie, dass die Dateinamen der neuen Dateien in der Patch-Datei angegeben sind
muss genau übereinstimmen, einschließlich Groß-/Kleinschreibung, Pfadpräfix und Verzeichnis
Trennzeichen (\ vs. /). Es wird nur das einheitliche Diff-Format akzeptiert (GNU Diff, SVN
diff und die Ausgabe von git diff ist in Ordnung); Wenn Sie ein anderes Format haben, noch einmal
regenerieren Sie es zuerst. Nur Treffer, die in resultierenden geänderten Zeilen auftreten, oder
unmittelbar darüber und darunter, werden gemeldet. Diese Option impliziert
--neverignore.

Auswahl Treffer zu Display
--Eingänge

-I Nur Funktionen anzeigen, die Daten von außerhalb des Programms beziehen; das geht auch
minlevel auf 0.

--minlevel=X

-m X Setzen Sie die Mindestrisikostufe für die Aufnahme in die Trefferliste auf X. Dies kann von 0 („nein
Risiko'') bis 5 ("maximales Risiko''); Der Standardwert ist 1.

--falschpositiv

-F Schließen Sie keine Treffer ein, bei denen es sich wahrscheinlich um Fehlalarme handelt. Derzeit bedeutet dies
dass Funktionsnamen ignoriert werden, wenn ihnen kein „(“ folgt, und dass
Deklarationen von Zeichenarrays werden nicht beachtet. Wenn Sie also eine Variable verwenden
Überall mit dem Namen „Zugriff“ versehen, werden Verweise auf dieses Gewöhnliche eliminiert
Variable. Dies ist nicht die Standardeinstellung, da dies auch die Wahrscheinlichkeit erhöht
wichtige Treffer fehlen; insbesondere Funktionsnamen in #define-Klauseln und -Aufrufen
Durch Funktionszeiger werden übersehen.

--neverignore

-n Ignorieren Sie niemals Sicherheitsprobleme, auch wenn diese eine „Ignorieren“-Anweisung enthalten
Kommentar.

--regexp=MUSTER

-e MUSTER
Melden Sie nur Treffer mit Text, der dem regulären Ausdrucksmuster PATTERN entspricht.
Um beispielsweise nur Treffer zu melden, die den Text „CWE-120“ enthalten, verwenden Sie „--regex“.
CWE-120''. Die Namen dieser Optionsflags sind mit denen von grep identisch.

Auswahl Output Format
--Säulen

-C Zeigen Sie die Spaltennummer (sowie den Dateinamen und die Zeilennummer) jedes Treffers an.
Dies wird nach der Zeilennummer durch Hinzufügen eines Doppelpunkts und der Spaltennummer angezeigt
der Zeile (das erste Zeichen in einer Zeile ist Spaltennummer 1). Das ist nützlich
für Redakteure, die zu bestimmten Spalten springen können, oder zur Integration mit anderen
Tools (z. B. solche zum weiteren Herausfiltern von Fehlalarmen).

--Kontext

-c Zeigen Sie den Kontext an, z. B. die Zeile mit dem „Treffer“/potenziellen Fehler. Standardmäßig ist die
Die Zeile wird unmittelbar nach der Warnung angezeigt.

--dataonly

-D Kopf- und Fußzeile nicht anzeigen. Verwenden Sie dies zusammen mit --quiet, um es einfach zu sehen
die Daten selbst.

--html

-H Formatieren Sie die Ausgabe als HTML statt als einfachen Text.

--sofort

-i Treffer sofort anzeigen (nicht bis zum Ende warten).

--einzelne Zeile

-S Anzeige als einzelne Textzeile für jeden Treffer. Nützlich für die Interaktion
mit Kompilierungstools.

--omittime Timing-Informationen weglassen. Dies ist nützlich für Regressionstests von Failfinder
selbst, so dass die Ausgabe nicht abhängig von der Dauer der Analyse variiert
nimmt.

--ruhig

-Q Währenddessen werden keine Statusinformationen angezeigt (z. B. welche Dateien untersucht werden).
Die Analyse läuft.

Hitliste Management
--savehitlist=F
Speichern Sie alle resultierenden Treffer (die „Hitliste“) in F.

--loadhitlist=F
Laden Sie die Hitliste von F, anstatt Quellprogramme zu analysieren. Warnung: Tun Sie es nicht
Trefferlisten aus nicht vertrauenswürdigen Quellen laden (aus Sicherheitsgründen).

--diffhitlist=F
Nur Treffer (geladen oder analysiert) anzeigen, die nicht in F enthalten sind. F wurde vermutlich erstellt
zuvor --savehitlist verwendet. Warnung: Tun Sie es nicht Diff-Hitlisten von nicht vertrauenswürdig
Quellen (aus Sicherheitsgründen). Wenn die Option --loadhitlist nicht bereitgestellt wird,
Dadurch werden die Treffer in den analysierten Quellcodedateien angezeigt, die nicht vorhanden waren
zuvor in F gespeichert. Bei Verwendung zusammen mit --loadhitlist wird dies angezeigt
Treffer in der geladenen Trefferliste, nicht in F. Der Differenzalgorithmus ist
konservativ; Treffer gelten nur dann als „gleich“, wenn sie das Gleiche haben
Dateiname, Zeilennummer, Spaltenposition, Funktionsname und Risikostufe.

Beispiele:


Hier finden Sie verschiedene Beispiele, wie Sie den Fehlerfinder aufrufen können. Die ersten Beispiele zeigen verschiedene
einfache Befehlszeilenoptionen. Flawfinder ist so konzipiert, dass es gut mit Texteditoren zusammenarbeitet
integrierte Entwicklungsumgebungen, daher zeigen die nächsten Abschnitte, wie Sie den Fehlerfinder integrieren
in vim und emacs.

Einfacher Befehlszeilen Optionen
Fehlerfinder /usr/src/linux-3.16
Untersuchen Sie alle C/C++-Dateien im Verzeichnis /usr/src/linux-3.16 und alle darin enthaltenen Dateien
Unterverzeichnisse (rekursiv) und meldet alle gefundenen Treffer. Standardmäßig
Der Fehlerfinder überspringt symbolische Links und Verzeichnisse, deren Namen mit beginnen
ein Zeitraum.

Fehlerfinder --minlevel=4 .
Untersuchen Sie alle C/C++-Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen
(rekursiv); Melden Sie nur Schwachstellen der Stufe 4 und höher (die beiden höchsten).
Risikostufen).

Fehlerfinder --Eingänge meindir
Untersuchen Sie alle C/C++-Dateien in mydir und seinen Unterverzeichnissen (rekursiv) und
Berichtsfunktionen, die Eingaben entgegennehmen (damit Sie sicherstellen können, dass sie die Eingaben filtern
Eingaben entsprechend).

Fehlerfinder --neverignore meindir
Untersuchen Sie alle C/C++-Dateien im Verzeichnis mydir und seinen Unterverzeichnissen.
einschließlich der Treffer, die in den Codekommentaren zum Ignorieren markiert sind.

Fehlerfinder -QD meindir
Untersuchen Sie mydir und melden Sie nur die tatsächlichen Ergebnisse (entfernen Sie den Header und
Fußzeile der Ausgabe). Dieses Formular ist nützlich, wenn die Ausgabe weitergeleitet wird
weitere Tools zur weiteren Analyse. -C (--columns) und -S (--singleline)
Optionen können auch nützlich sein, wenn Sie die Daten an andere Tools weiterleiten.

Fehlerfinder -QDSC meindir
Untersuchen Sie mydir und melden Sie nur die tatsächlichen Ergebnisse (keine Kopf- oder Fußzeile). Jede
Treffer werden in einer Zeile und Spaltennummern gemeldet. Dies kann ein sein
nützlicher Befehl, wenn Sie die Fehlersucherausgabe an andere Tools weiterleiten.

Fehlerfinder --ruhig --html --Kontext meindir > Ergebnisse.html
Untersuchen Sie alle C/C++-Dateien im Verzeichnis mydir und seinen Unterverzeichnissen und
Erstellen Sie eine HTML-formatierte Version der Ergebnisse. Quellcodeverwaltung
Systeme (wie SourceForge und Savannah) könnten einen Befehl wie diesen verwenden.

Fehlerfinder --ruhig --savehitlist gespeicherte Treffer *.[CH]
Untersuchen Sie alle .c- und .h-Dateien im aktuellen Verzeichnis. Berichten Sie nicht darüber
Status der Bearbeitung und speichern Sie die resultierende Trefferliste (die Menge aller Treffer) in
die Datei saved.hits.

Fehlerfinder --diffhitlist gespeicherte Treffer *.[CH]
Untersuchen Sie alle .c- und .h-Dateien im aktuellen Verzeichnis und zeigen Sie alle Treffer an
nicht bereits in der Datei „saved.hits“ enthalten waren. Dies kann verwendet werden, um nur die anzuzeigen
„Neue“ Schwachstellen in einem geänderten Programm, wenn „saved.hits“ daraus erstellt wurde
die ältere Version des analysierten Programms.

Fehlerfinder - Patch aktueller.Patch .
Untersuchen Sie das aktuelle Verzeichnis rekursiv, melden Sie jedoch nur die vorhandenen Zeilen
geändert oder in der bereits angewendeten Patchdatei mit dem Namen hinzugefügt aktueller.Patch.

Fehlerfinder --regex „CWE-120|CWE-126“ src /
Verzeichnis untersuchen src rekursiv, aber nur Treffer melden, bei denen CWE-120 oder
Es gelten CWE-126.

Aufrufen für vim
Der Texteditor VIM verfügt über einen „Quickfix“-Mechanismus, der gut mit dem Fehlerfinder zusammenarbeitet
dass Sie die Warnmeldungen einfach anzeigen und zum entsprechenden Quellcode springen können.

Zuerst müssen Sie den Fehlerfinder aufrufen, um eine Trefferliste zu erstellen. Dafür gibt es zwei Möglichkeiten
mach das. Die erste Möglichkeit besteht darin, zuerst den Fehlerfinder zu starten und ihn dann (über seine Ausgabe) aufzurufen
vim. Die zweite Möglichkeit besteht darin, vim zu starten (oder weiter auszuführen) und dann den Fehlerfinder aufzurufen
(normalerweise aus vim heraus).

Führen Sie für die erste Möglichkeit den Fehlerfinder aus und speichern Sie die Ausgabe in einer FLAWFILE (z. B. „flawfile“).
Rufen Sie dann vim mit der Option -q auf, etwa so: „vim -q failedfile“. Der zweite Weg
(Starten des Fehlerfinders nach dem Starten von vim) kann auf unzählige Arten erfolgen. Eine besteht darin, anzurufen
Fehlerfinder mit einem Shell-Befehl „:!flawfinder-command > FLAWFILE“ und folgen Sie dem mit
den Befehl „:cf FLAWFILE“. Eine andere Möglichkeit besteht darin, den Fehlerfinder-Befehl in Ihrem zu speichern
makefile (z. B. als Pseudobefehl wie „flaw“) und führen Sie dann „:make failed“ aus.

In all diesen Fällen benötigen Sie einen Befehl, damit der Fehlerfinder ausgeführt werden kann. Ein plausibler Befehl, der
Platziert jeden Treffer in einer eigenen Zeile (-S) und entfernt verwirrende Kopf- und Fußzeilen
es ist:

Fehlerfinder -SQD .

Sie können nun verschiedene Bearbeitungsbefehle verwenden, um die Ergebnisse anzuzeigen. Der Befehl „:cn“ wird angezeigt
der nächste Treffer; „:cN“ zeigt den vorherigen Treffer an und „:cr“ spult zurück zum ersten Treffer.
„:copen“ öffnet ein Fenster zur Anzeige der aktuellen Trefferliste, genannt „Quickfix“.
window“; „:cclose“ schließt das Quickfix-Fenster. Wenn der Puffer im verwendeten Fenster vorhanden ist
Wenn sich die Datei geändert hat und der Fehler in einer anderen Datei liegt, schlägt das Springen zum Fehler fehl. Sie müssen
Stellen Sie sicher, dass das Fenster einen Puffer enthält, der verlassen werden kann, bevor Sie versuchen, zu einem zu springen
neue Datei, beispielsweise durch Speichern der Datei; Dies verhindert einen versehentlichen Datenverlust.

Aufrufen für Emacs
Der Texteditor / das Betriebssystem Emacs umfasst den „Grep-Modus“ und den „Kompilierungsmodus“.
Mechanismen, die gut mit dem Fehlerfinder zusammenarbeiten und es einfach machen, Warnmeldungen anzuzeigen, springen
Überprüfen Sie den relevanten Quellcode und beheben Sie alle gefundenen Probleme.

Zuerst müssen Sie den Fehlerfinder aufrufen, um eine Liste mit Warnmeldungen zu erstellen. Sie können verwenden
„grep mode“ oder „compile mode“, um diese Liste zu erstellen. Oft ist der „Grep-Modus“ bequemer;
Der Kompilierungsmodus bleibt davon unberührt, sodass Sie nach Änderungen problemlos neu kompilieren können
etwas. Wenn Sie jedoch zur genauen Spaltenposition eines Treffers springen möchten, kompilieren Sie
Der Modus ist möglicherweise praktischer, da Emacs die Spaltenausgabe von Failfinder verwenden kann
Springen Sie ohne besondere Konfiguration direkt zum richtigen Ort.

Um den Grep-Modus zu verwenden, geben Sie den Befehl „Mx grep“ und dann den erforderlichen Fehlerfinder ein
Befehl. Um den Kompilierungsmodus zu verwenden, geben Sie den Befehl „Mx-Kompilieren“ ein und geben Sie die erforderlichen Daten ein
Fehlerfinder-Befehl. Dies ist ein Metaschlüsselbefehl, daher müssen Sie den Metaschlüssel für verwenden
Ihrer Tastatur (normalerweise ist dies die ESC-Taste). Wie bei allen Emacs-Befehlen müssen Sie dies tun
Drücken Sie RETURN, nachdem Sie „grep“ oder „compile“ eingegeben haben. Auf vielen Systemen ist der Grep-Modus vorhanden
Wird durch Eingabe von ESC xgrep RETURN aufgerufen.

Anschließend müssen Sie einen Befehl eingeben und bei Bedarf alles entfernen, was zuvor vorhanden war. A
plausibler Befehl ist:

Fehlerfinder -SQDC .

Mit diesem Befehl wird jeder Treffer in einer einzigen Zeile gemeldet, was für Tools viel einfacher ist
handhaben. Die Optionen quiet und dataonly entfernen die anderen Statusinformationen, die nicht benötigt werden
Verwendung innerhalb von Emacs. Der nachgestellte Punkt bedeutet, dass das aktuelle Verzeichnis und alle
Nachkommen werden nach C/C++-Code durchsucht und auf Fehler analysiert.

Sobald Sie den Fehlerfinder aufgerufen haben, können Sie mit Emacs in den Ergebnissen herumspringen. Der
command Cx ` (Control-x Backtick) besucht den Quellcodespeicherort für die nächste Warnung
Nachricht. Cu Cx ` (Strg-U-Strg-X-Backtick) beginnt von vorne. Du kannst
Besuchen Sie die Quelle für eine bestimmte Fehlermeldung, indem Sie zu der entsprechenden Treffermeldung im gehen
*Compilation*-Puffer oder *grep*-Puffer und Eingabe der Return-Taste. (Technischer Hinweis: im
(Kompilierungspuffer, dies ruft den Kompilierungsfehler auf.) Sie können auch mit der Maus-2 klicken
Klicken Sie auf die Schaltfläche in der Fehlermeldung (Sie müssen nicht zuerst zum Kompilierungspuffer wechseln).

Wenn Sie den Grep-Modus verwenden möchten, um zu bestimmten Spalten eines Treffers zu springen, müssen Sie dies tun
Konfigurieren Sie Emacs speziell dafür. Ändern Sie dazu die Emacs-Variable „grep-regexp-
alist". Diese Variable teilt Emacs mit, wie die Ausgabe eines „grep“-Befehls analysiert werden soll, ähnlich wie bei
Variable „compilation-error-regexp-alist“, die verschiedene Formate von Kompilierungsfehlern auflistet
Nachrichten.

Aufrufen für Integriert Entwicklung Environments (IDEs)
Informationen zu (anderen) IDEs finden Sie in den Plug-Ins Ihrer IDE.

COMMON DIE SCHWÄCHE AUFZÄHLUNG (CWE)


Die Common Weakness Enumeration (CWE) ist „eine formale Liste oder ein Wörterbuch gängiger Software“.
Schwachstellen, die in der Architektur, dem Design, dem Code oder der Implementierung der Software auftreten können
kann zu ausnutzbaren Sicherheitslücken führen ... erstellt, um als gemeinsame Sprache zu dienen
zur Beschreibung von Software-Sicherheitsschwächen'' (http://cwe.mitre.org/about/faq.html). Für
Weitere Informationen zu CWEs finden Sie unter http://cwe.mitre.org.

Flawfinder unterstützt CWE und ist offiziell CWE-kompatibel. Hit-Beschreibungen in der Regel
Fügen Sie gegebenenfalls in Klammern eine relevante Common Weakness Enumeration (CWE)-Kennung ein
ist bekanntermaßen ein relevanter CWE. Viele der pufferbezogenen Treffer erwähnen beispielsweise
CWE-120, die CWE-Kennung für „Pufferkopie ohne Prüfung der Eingabegröße“ (auch bekannt als
„Klassischer Pufferüberlauf“). In einigen Fällen kann mehr als eine CWE-Kennung aufgeführt sein.
Der HTML-Bericht enthält auch Hypertext-Links zu den bei MITRE gehosteten CWE-Definitionen. In
Auf diese Weise ist der Failfinder so konzipiert, dass er die CWE-Output-Anforderungen erfüllt.

Viele der von Failfinder gemeldeten CWEs sind in der CWE/SANS-Top-25-Liste 2011 aufgeführt
(http://cwe.mitre.org/top25/). Viele Leute werden in dieser Liste nach CWEs suchen wollen,
B. CWE-120 (klassischer Pufferüberlauf), wenn der Fehlerfinder einem CWE zugeordnet wird, das mehr ist
Allgemeiner als ein Top-25-Element, wird es als allgemeiner:spezifischer aufgeführt (z. B.
CWE-119:CWE-120), wobei die eigentliche Zuordnung allgemeiner ist. Wenn der Fehlerfinder einem weiteren zugeordnet ist
Wenn es sich bei einem bestimmten CWE-Artikel um einen spezifischen Fall eines Top-25-Artikels handelt, wird er im Formular aufgeführt
top-25/spezifischer (z. B. CWE-362/CWE-367), wobei die tatsächliche Zuordnung spezifischer ist
CWE-Eintrag. Wenn derselbe Eintrag mehreren CWEs zugeordnet ist, werden die CWEs durch Kommas getrennt
(Dies tritt häufig bei CWE-20, Improper Input Validation, auf.) Dies vereinfacht die Suche
bestimmte CWEs.

Für das Mapping wurde die CWE-Version 2.7 (veröffentlicht am 23. Juni 2014) verwendet. Der aktuelle CWE
Zuordnungen wählen den spezifischsten CWE aus, den das Tool ermitteln kann. Theoretisch die meisten CWE
Sicherheitselemente (Signaturen/Muster, nach denen das Tool sucht) könnten theoretisch sein
CWE-676 (Verwendung einer potenziell gefährlichen Funktion) zugeordnet, eine solche Zuordnung wäre jedoch nicht der Fall
nützlich. Daher wurden spezifischere Zuordnungen dort bevorzugt, wo eine solche gefunden werden konnte. Fehlerfinder
ist ein lexikalisches Analysetool; Daher ist es unpraktisch, genauer zu sein als
die derzeit implementierten Zuordnungen. Das bedeutet auch, dass es wahrscheinlich nicht viel brauchen wird
Aktualisierung für Kartenwährung; Es gibt einfach nicht genug Informationen, um es zu verfeinern
detailliertes CWE-Niveau, auf das sich CWE-Änderungen normalerweise auswirken würden. Die Liste der CWE-Kennungen
wurde automatisch mit „make show-cwes“ generiert, daher besteht Vertrauen, dass diese Liste
ist richtig. Bitte melden Sie CWE-Zuordnungsprobleme als Fehler, wenn Sie welche finden.

Flawfinder kann eine Schwachstelle möglicherweise nicht finden, selbst wenn Flawfinder eine dieser CWE abdeckt
Schwächen. Allerdings findet der Schwachstellenfinder Schwachstellen, die von den von ihm abgedeckten CWEs aufgelistet werden.
und in vielen Fällen werden Zeilen ohne diese Schwachstellen nicht gemeldet. So, als
Der Fehlerfinder ist für jedes Tool erforderlich, das CWE-kompatibel sein soll, und weist eine Falschrate auf
weniger als 100 % und eine Rate falsch negativer Ergebnisse weniger als 100 %. Flawfinder fast
Meldet immer, wenn eine Übereinstimmung mit einem CWE-Sicherheitselement (einer Signatur/einem Muster als) gefunden wird
in seiner Datenbank definiert), obwohl bestimmte obskure Konstrukte dazu führen können, dass es fehlschlägt (siehe BUGS
unten).

Flawfinder kann über die folgenden CWEs berichten (dies sind die CWEs, die Flawfinder abdeckt;
„*“ markiert diejenigen in der CWE/SANS-Top-25-Liste):

· CWE-20: Unsachgemäße Eingabevalidierung

· CWE-22: Unsachgemäße Beschränkung eines Pfadnamens auf ein eingeschränktes Verzeichnis („Path Traversal“)

· CWE-78: Unsachgemäße Neutralisierung spezieller Elemente, die in einem OS-Befehl („OS Command“) verwendet werden
Injektion'')*

· CWE-119: Unsachgemäße Einschränkung von Vorgängen innerhalb der Grenzen eines Speicherpuffers (a
übergeordnetes Element von CWE-120*, daher wird dies als CWE-119:CWE-120 angezeigt)

· CWE-120: Pufferkopie ohne Überprüfung der Eingabegröße („Klassischer Pufferüberlauf“)*

· CWE-126: Überlesen des Puffers

· CWE-134: Unkontrollierte Formatzeichenfolge*

· CWE-190: Ganzzahlüberlauf oder Wraparound*

· CWE-250: Ausführung mit unnötigen Privilegien

· CWE-327: Verwendung eines fehlerhaften oder riskanten kryptografischen Algorithmus*

· CWE-362: Gleichzeitige Ausführung unter Verwendung gemeinsam genutzter Ressourcen mit falscher Synchronisierung
(„Rennbedingung“)

· CWE-377: Unsichere temporäre Datei

· CWE-676: Verwendung einer potenziell gefährlichen Funktion*

· CWE-732: Falsche Berechtigungszuweisung für kritische Ressource*

· CWE-785: Verwendung der Pfadmanipulationsfunktion ohne Puffer mit maximaler Größe (untergeordnetes Element von
CWE-120*, daher wird dies als CWE-120/CWE-785 angezeigt)

· CWE-807: Vertrauen auf nicht vertrauenswürdige Eingaben bei einer Sicherheitsentscheidung*

· CWE-829: Einbeziehung der Funktionalität aus der nicht vertrauenswürdigen Kontrollsphäre*

Mit der Option „--regex“ (-e) können Sie eine bestimmte Teilmenge von CWEs für die Meldung auswählen.
Diese Option akzeptiert einen regulären Ausdruck, sodass Sie mehrere CWEs auswählen können, z. B. „--regex“.
„CWE-120|CWE-126“. Wenn Sie mehrere CWEs mit „|“ in einer Befehlszeile auswählen, werden Sie dies tun
Normalerweise müssen die Parameter in Anführungszeichen gesetzt werden (da ein „|“ ohne Anführungszeichen das Pipe-Symbol ist).
Flawfinder ist so konzipiert, dass es die CWE-Searchable-Anforderung erfüllt.

Wenn Ihr Ziel darin besteht, eine Teilmenge der in einer Datei aufgeführten CWEs zu melden, kann dies erreicht werden
auf einem Unix-ähnlichen System mit der Option „--regex“, auch bekannt als „-e“. Die Datei muss vorhanden sein
reguläres Ausdrucksformat. Beispielsweise würde „flawfinder -e $(cat file1)“ nur melden
Treffer, die mit dem Muster in „Datei1“ übereinstimmten. Wenn Datei1 „CWE-120|CWE-126“ enthielt
würde nur Treffer melden, die mit diesen CWEs übereinstimmen.

Eine Liste aller CWE-Sicherheitselemente (die Signaturen/Muster, nach denen der Fehlerfinder sucht)
kann mit der Option „--listrules“ gefunden werden. In jeder Zeile wird das Signaturtoken aufgeführt
(normalerweise ein Funktionsname), der zu einem Treffer führen kann, die Standardrisikostufe und die
Standardwarnung (einschließlich der Standard-CWE-Kennung). Für die meisten Zwecke ist dies der Fall
Dies reicht auch aus, wenn Sie sehen möchten, welche CWE-Sicherheitselemente welchen CWEs zugeordnet sind
umkehren. Zum Beispiel, um die meisten Signaturen (Funktionsnamen) anzuzeigen, denen zugeordnet wird
CWE-327, ohne die Standardrisikostufe oder den detaillierten Warntext zu sehen, führen Sie „flawfinder“ aus
--listrules | grep CWE-327 | Schnitt -f1''. Sie können die Token auch ohne CWE-Zuordnung sehen
auf diese Weise, indem Sie „flawfinder -D --listrules |“ ausführen grep -v CWE-''. Allerdings während
--listrules listet alle CWE-Sicherheitselemente auf, es listet nur die Standardzuordnungen von CWE auf
Sicherheitselemente zu CWE-Kennungen. Die Verfeinerungen von Failfinder sind nicht enthalten
gilt (z. B. durch Untersuchung von Funktionsparametern).

Wenn Sie eine detaillierte und genaue Zuordnung zwischen den CWE-Sicherheitselementen und CWE wünschen
Identifikatoren verwenden, ist der Fehlerfinder-Quellcode (in der Distribution enthalten) der beste Ort
für diese Informationen. Diese detaillierten Informationen sind vor allem für die wenigen interessant
Leute, die versuchen, die CWE-Zuordnungen von Failfinder oder CWE im Allgemeinen zu verfeinern.
Der Quellcode dokumentiert die Zuordnung zwischen den Sicherheitselementen zum jeweiligen CWE
Bezeichner und ist eine einzelne Python-Datei. Der Datensatz „c_rules“ definiert die meisten Regeln,
mit Bezug auf eine Funktion, die weitere Verfeinerungen vornehmen kann. Sie können die durchsuchen
Datensatz für Funktionsnamen, um zu sehen, welches CWE standardmäßig generiert wird; wenn der erste Parameter ist
nicht „normal“, dann ist das der Name einer verfeinernden Python-Methode, die möglicherweise etwas anderes auswählt
CWEs (abhängig von zusätzlichen Informationen). Umgekehrt können Sie nach „CWE-Nummer“ suchen.
und finden Sie heraus, welche Sicherheitselemente (Signaturen oder Muster) auf diese CWE-Kennung verweisen.
Für die meisten Menschen ist das viel mehr, als sie brauchen; Die meisten Leute wollen einfach nur ihre scannen
Quellcode, um Probleme schnell zu finden.

SICHERHEIT


Der Zweck dieses Tools besteht darin, bei der Suche nach Schwachstellen zu helfen, damit diese behoben werden können.
Um dies nutzen zu können, müssen Entwickler und Prüfer jedoch wissen, wie man sichere Software entwickelt
Werkzeug, denn sonst a täuschen mit a Werkzeug is Noch a täuschen. Mein Buch bei
http://www.dwheeler.com/secure-programs kann helfen.

Dieses Tool sollte höchstens ein kleiner Teil eines größeren Softwareentwicklungsprozesses sein
Entwickelt, um die Auswirkungen von Schwachstellen zu beseitigen oder zu verringern. Entwickler und Gutachter
Sie müssen wissen, wie man sichere Software entwickelt, und sie müssen dieses Wissen zur Reduzierung anwenden
die Risiken von Schwachstellen überhaupt.

Verschiedene Tools zur Schwachstellensuche neigen dazu, unterschiedliche Schwachstellen zu finden. Also du
Nutzen Sie am besten die menschliche Überprüfung und eine Vielzahl von Tools. Dieses Tool kann dabei helfen, welche zu finden
Schwachstellen, aber längst nicht alle.

Sie sollten immer a analysieren Kopieren des analysierten Quellprogramms, kein Verzeichnis
Dies kann von einem Entwickler geändert werden, während der Fehlerfinder die Analyse durchführt. Das ist
insbesondere true, wenn Sie einem Entwickler des analysierten Programms nicht unbedingt vertrauen.
Wenn ein Angreifer die Kontrolle über die Dateien hat, während Sie sie analysieren, könnte der Angreifer dies tun
Verschieben Sie Dateien oder ändern Sie ihren Inhalt, um die Offenlegung eines Sicherheitsproblems zu verhindern
(oder den Eindruck eines Problems erwecken, wo es keines gibt). Wenn Sie sich Sorgen machen
Um böswillige Programmierer zu schützen, sollten Sie dies auf jeden Fall tun, da Sie dies nach der Analyse tun müssen
Stellen Sie sicher, dass der letztendlich ausgeführte Code der von Ihnen analysierte Code ist. Verwenden Sie auch nicht das
--allowlink-Option in solchen Fällen; Angreifer könnten bösartige symbolische Links zu Dateien erstellen
außerhalb ihres Quellcodebereichs (z. B / etc / passwd).

Quellcode-Verwaltungssysteme (wie SourceForge und Savannah) fallen definitiv in diesen Bereich
Kategorie; Wenn Sie eines dieser Systeme verwalten, kopieren oder extrahieren Sie zunächst die Dateien
Erstellen Sie ein separates Verzeichnis (das nicht von Angreifern kontrolliert werden kann), bevor Sie den Fehlerfinder ausführen oder
jedes andere Code-Analysetool.

Beachten Sie, dass der Fehlerfinder nur reguläre Dateien, Verzeichnisse und (falls gewünscht) symbolische Dateien öffnet
Links; Es werden niemals andere Arten von Dateien geöffnet, selbst wenn ein symbolischer Link zu ihnen erstellt wird.
Dadurch wird Angreifern entgegengewirkt, die ungewöhnliche Dateitypen in den Quellcode einfügen. Allerdings ist dies
Funktioniert nur, wenn das analysierte Dateisystem während der Analyse nicht von einem Angreifer geändert werden kann
Analyse, wie oben empfohlen. Dieser Schutz funktioniert auch nicht auf Cygwin-Plattformen,
Unglücklicherweise.

Cygwin-Systeme (Unix-Emulation auf Windows) haben ein zusätzliches Problem bei der Fehlersuche
wird verwendet, um Programme zu analysieren, denen der Analyst nicht vertrauen kann. Das Problem ist konstruktionsbedingt
Fehler in Windows (den es von MS-DOS erbt). Unter Windows und MS-DOS bestimmte Dateinamen
(z. B. „com1“) werden vom Betriebssystem automatisch als Namen von behandelt
Peripheriegeräte, und dies gilt auch dann, wenn ein vollständiger Pfadname angegeben wird. Ja, Windows und MS-DOS
sind wirklich so schlecht konzipiert. Flawfinder behebt dieses Problem, indem er überprüft, was für ein Dateisystem es ist
Objekt ist, und dann nur das Öffnen von Verzeichnissen und regulären Dateien (und Symlinks, falls aktiviert).
Leider funktioniert dies unter Cygwin nicht. auf zumindest einigen Versionen von Cygwin auf einigen
In Windows-Versionen kann der bloße Versuch, festzustellen, ob es sich bei einer Datei um einen Gerätetyp handelt, dazu führen
Programm zum Hängen. Eine Problemumgehung besteht darin, alle interpretierten Dateinamen zu löschen oder umzubenennen
als Gerätenamen, bevor Sie die Analyse durchführen. Dies sind sogenannte „reservierte Namen“.
CON, PRN, AUX, CLOCK$, NUL, COM1-COM9 und LPT1-LPT9, optional gefolgt von einer Erweiterung
(z. B. „com1.txt“), in einem beliebigen Verzeichnis und in jedem Fall (Windows unterscheidet nicht zwischen Groß- und Kleinschreibung).

Do nicht Trefferlisten aus nicht vertrauenswürdigen Quellen laden oder vergleichen. Sie werden mit dem implementiert
Python-Pickle-Modul, und das Pickle-Modul soll nicht vor Fehlern geschützt sein
oder in böswilliger Absicht erstellte Daten. Gespeicherte Trefferlisten sind für die spätere Verwendung durch denselben bestimmt
Benutzer, der die Trefferliste erstellt hat; In diesem Zusammenhang stellt diese Einschränkung kein Problem dar.

Nutzen Sie den Fehlerfinder online über die Dienste von onworks.net



Neueste Linux- und Windows-Online-Programme