Sobelow ist ein sicherheitsorientiertes statisches Analyse-Tool für Elixir und das Phoenix-Framework. Für Sicherheitsforscher ist es ein nützliches Instrument, um eine kurze Übersicht über die Interessenpunkte zu erhalten. Für Projektbauer kann es verwendet werden, um die Einführung einer Reihe gemeinsamer Schwachstellen zu verhindern.
Derzeit erkennt Sobelow einige Arten der folgenden Sicherheitsprobleme:
Mögliche Schwachstellen werden in verschiedenen Farben gemäß dem Vertrauen in ihre Unsicherheit gekennzeichnet. Ein hohes Selbstvertrauen ist rot, mittelschweres Vertrauen und geringes Vertrauen grün.
Ein Befund ist in der Regel als "geringes Vertrauen" gekennzeichnet, wenn es so aussieht, als ob eine Funktion unsicher verwendet werden könnte, aber es kann nicht zuverlässig bestimmt werden, wenn die Funktion von Benutzer bereitgestellt wird, die von Benutzer geliefert werden. dh wenn ein Befund grün markiert ist, kann es kritisch unsicher sein, aber es erfordert eine größere manuelle Validierung.
Hinweis: Dieses Projekt befindet sich in ständiger Entwicklung, und im Laufe der Zeit werden zusätzliche Schwachstellen gekennzeichnet. Wenn Sie auf einen Fehler stoßen oder zusätzliche Funktionen oder Sicherheitschecks anfordern möchten, öffnen Sie bitte ein Problem!
Um Sobelow zu verwenden, können Sie es den Abhängigkeiten Ihrer Anwendung hinzufügen.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endSie können Sobelow auch global installieren, indem Sie Folgendes aus der Befehlszeile ausführen:
$ mix escript.install hex sobelow
Um aus dem Master -Zweig und nicht aus der neuesten Version zu installieren, kann der folgende Befehl verwendet werden:
$ mix escript.install github nccgroup/sobelow
Nach der Installation ist der einfachste Weg, um ein Phoenix -Projekt zu scannen, das Folgende aus dem Projektroot auszuführen:
$ mix sobelow
HINWEIS: Alle Pfadargumente sollten absolute Pfade oder relativ zum Anwendungswurzel sein.
--root oder -r -Geben Sie das Anwendungsstammverzeichnis an. Akzeptiert ein Pfadargument, zB ../my_project .
--verbose oder -v -Druckcode -Snippets und zusätzliche Auffindungsdetails.
--ignore oder -i -Ignorieren Sie die angegebenen Fundtypen. Akzeptiert eine von Kommas getrennte Liste von Modulnamen, z. B. XSS.Raw,Traversal .
--ignore-files -Ignorieren Sie Dateien. Akzeptiert eine von Kommas getrennte Liste von Dateinamen, z. B. config/prod.exs .
--details oder -d -Erhalten Sie Details vom Typ Find -Typ. Akzeptiert einen einzelnen Modulnamen, z. B. Config.CSRF .
--all-details -Erhalten Sie Details aller Fundtypen.
--private -Überspringen Sie Update -Checks.
--router -Angeben Sie den Router -Standort. Dies muss nur verwendet werden, wenn der Standort des Routers nicht standardmäßig ist. Akzeptiert ein Pfadargument, z. B. my/strange/router.ex .
--exit -Return ungleich Null-Exit-Status bei oder über einer Vertrauensschwelle von low , medium oder high . Standardmäßig false was einen Null -Exit -Status zurückgibt
--threshold -Return -Ergebnisse auf oder über einem Konfidenzniveau von low (Standard), medium oder high .
--format oder -f -Das Ausgangsformat der Ergebnisse angeben. Akzeptiert ein Format, z. B. txt oder json .
Beachten Sie, dass Optionen wie --verbose nicht mit dem json -Format funktionieren. Alle json -formatierten Erkenntnisse enthalten einen type , file und line . Andere Schlüssel können variieren.
--quiet -Gibt eine einzige Zeile zurück, die die Anzahl der Ergebnisse anzeigt. Andernfalls geben Sie keine Ausgabe zurück, wenn keine Ergebnisse vorliegen.
--compact -Minimale, Einzellinienergebnisse mit Ausgabe, die nach Vertrauen gefärbt sind.
--flycheck -Minimale, einzelne Erkenntnisse, die mit dem Flycheck-basierten Werkzeug kompatibel sind.
--save-config -generiert eine Konfigurationsdatei basierend auf Befehlszeilenoptionen. Weitere Informationen finden Sie in Konfigurationsdateien.
--config -Sobelow mit der Konfigurationsdatei ausführen. Weitere Informationen finden Sie in Konfigurationsdateien.
--mark-skip-all -Markieren Sie alle angezeigten Befunde als skippabel.
--clear-skip -Löschen Sie die Konfiguration, die durch --mark-skip-all erstellt wurden.
--skip -Ignorieren Sie die Ergebnisse, die zum Überspringen markiert wurden. Weitere Informationen finden Sie unter falsche Aspekte.
--version -gibt die aktuelle Version von Sobelow aus. Dies ist nützlich für CI -Schritte oder die Integration mit anderen Tools wie Salus.
Mit Sobelow können Benutzer häufig verwendete Optionen in einer Konfigurationsdatei speichern. Zum Beispiel, wenn Sie ständig laufen:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
Sie können das Flag --save-config Flag verwenden, um Ihre .sobelow-conf -Konfigurationsdatei zu erstellen:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
Dieser Befehl erstellt die .sobelow-conf Datei am Stamm Ihrer Anwendung. Sie können diese Datei direkt bearbeiten, um Änderungen vorzunehmen.
Sie können den Befehl auch ohne Optionen ausführen:
$ mix sobelow --save-config
Wenn Sie dieses Paket zum ersten Mal beginnen, wird die generierte Konfigurationsdatei mit den Standardwerten für jede Option gefüllt. (Dies hilft dabei, dieses Paket schnell in eine bereits bestehende Codebasis einzubeziehen.)
Wenn Sie jetzt Sobelow mit der gespeicherten Konfiguration ausführen möchten, können Sie Sobelow mit dem Flag --config ausführen.
$ mix sobelow --config
Sobelow bevorzugt eine übermeldete Gegenleistung im Vergleich zu Unterberichten. Daher können Sie eine Reihe von falsch positiven Aspekten in einem typischen Scan finden. Diese Ergebnisse können individuell ignoriert werden, indem ein # sobelow_skip -Kommentar sowie eine Liste von Modulen vor der Funktionsdefinition hinzugefügt werden.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end Bei der Integration von Sobelow in ein neues Projekt kann es eine große Anzahl falsch -positives Bestehen geben. Um alle gedruckten Erkenntnisse als falsch positive Ergebnisse zu markieren, führen Sie Sobelow mit der --mark-skip-all -Flagge.
Sobald Sie die entsprechenden Erkenntnisse getaggt haben, führen Sie Sobelow mit der Flagge --skip aus.
$ mix sobelow --skip
Während # sobelow_skip -Kommentare nur Funktionen auf Funktionsebene markieren können (und daher nicht zum Überspringen von Konfigurationsproblemen verwendet werden können), kann das --mark-skip-all Flag zum Überspringen eines Fundtyps verwendet werden.
Die Feststellungskategorien werden in Module unterteilt. Diese Module können dann verwendet werden, um entweder Erkennungsklassen (über die Optionen ignore und skip ) zu ignorieren oder Verwundbarkeitsdetails (über die details ) zu erhalten.
Diese Liste und andere hilfreiche Informationen finden Sie in der Befehlszeile:
$ mix help sobelow
Um Sobelow gegen alle untergeordneten Apps in einer Umbrella -App mit einem einzigen Befehl auszuführen, können Sie einen Alias für Sobelow in Ihrer Root mix.exs -Datei hinzufügen:
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end Wenn Sie Konfigurationsdateien in einer Dach-App verwenden möchten, erstellen Sie in jeder untergeordneten Anwendung eine .sobelow-conf und verwenden Sie das Flag --config .
Beim Scannen eines Projekts prüft Sobelow gelegentlich nach Updates und druckt eine Warnung, wenn eine neue Version verfügbar ist. Sobelow verfolgt den letzten Update-Check, indem er eine .sobelow Datei im Stamm des gescannten Projekts erstellt hat.
Wenn diese Funktionalität nicht erwünscht ist, kann das --private Flag mit dem Scan verwendet werden.