Brakeman ist ein statisches Analysetool, das Ruby auf Rails -Anwendungen auf Sicherheitslücken überprüft.
Verwenden von Rubygemems:
gem install brakeman
Verwenden von Bundler:
group :development do
gem 'brakeman' , require : false
endVerwenden von Docker:
docker pull presidentbeef/brakeman
Verwenden Sie Docker, um aus der Quelle zu erstellen:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
Aus dem Wurzelverzeichnis einer Rails -Anwendung:
brakeman
Außerhalb von Rails Wurzel:
brakeman /path/to/rails/application
Aus dem Wurzelverzeichnis einer Rails -Anwendung:
docker run -v "$(pwd)":/code presidentbeef/brakeman
Mit ein wenig schöner Farbe:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
Für einen HTML -Bericht:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Außerhalb von Rails Root (Beachten Sie, dass die Ausgabedatei relativ zu Pfad/zu/Rails/Anwendung ist):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman sollte mit jeder Version von Rails von 2.3.x bis 7.x arbeiten.
Brakeman kann Code mit Ruby 2.0 -Syntax und neuer analysieren, benötigt jedoch mindestens Ruby 3.0.0 zum Ausführen.
Für eine vollständige Liste der Optionen verwenden Sie brakeman --help oder sehen Sie die Datei options.md.
Um eine Ausgabedatei für die Ergebnisse anzugeben:
brakeman -o output_file
Das Ausgabeformat wird durch die Dateierweiterung oder mit der Option -f ermittelt. Aktuelle Optionen sind: text , html , tabs , json , junit , markdown , csv , codeclimate und sonar .
Mehrere Ausgabedateien können angegeben werden:
brakeman -o output.html -o output.json
Ausgabe in eine Datei und in die Konsole mit Farbe:
brakeman --color -o /dev/stdout -o output.json
Informationswarnungen zu unterdrücken und einfach den Bericht auszugeben:
brakeman -q
Beachten Sie, dass alle Bremserausgaben außer Berichten an STDERR gesendet werden, sodass es einfach ist, STDOut in eine Datei umzuleiten und einfach den Bericht zu erhalten.
Um alle Arten von Debugging -Informationen zu sehen:
brakeman -d
Bei gewünschter Wunsch können bestimmte Schecks übersprungen werden. Der Name muss der richtige Fall sein. Zum Beispiel, um nach Standardrouten zu überspringen ( DefaultRoutes ):
brakeman -x DefaultRoutes
Mehrere Schecks sollten durch ein Komma getrennt werden:
brakeman -x DefaultRoutes,Redirect
Das Gegenteil durchführen und nur eine bestimmte Reihe von Tests durchführen:
brakeman -t SQL,ValidationRegex
Wenn Brakeman etwas langsam läuft, versuchen Sie es
brakeman --faster
Dies wird einige Funktionen deaktivieren, aber wahrscheinlich viel schneller sein (derzeit ist es das gleiche wie --skip-libs --no-branching ). WARNUNG : Dies kann dazu führen, dass Brakeman einige Schwachstellen verpasst.
Standardmäßig wird Brakeman einen Exit-Code ungleich Null zurückgeben, wenn Sicherheitswarnungen gefunden werden oder Fehler auftreten. Um dies zu deaktivieren:
brakeman --no-exit-on-warn --no-exit-on-error
Um bestimmte Dateien oder Verzeichnisse zu überspringen, die Brakeman möglicherweise Schwierigkeiten hat, zu analysieren, verwenden Sie:
brakeman --skip-files file1,/path1/,path2/
Um die Ergebnisse eines Scans mit einem vorherigen Scan zu vergleichen, verwenden Sie die JSON -Ausgabeoption und dann:
brakeman --compare old_report.json
Dies gibt JSON mit zwei Listen aus: einer der festen Warnungen und einer der neuen Warnungen.
Brakeman wird Warnungen ignorieren, wenn sie dafür konfiguriert wird. Standardmäßig sucht es nach einer Konfigurationsdatei in config/brakeman.ignore . Verwenden Sie, um diese Datei zu erstellen und zu verwalten:
brakeman -I
Wenn Sie die Warnungen, die Sie ignoriert haben, vorübergehend sehen möchten, ohne den Ausgangscode zu beeinflussen, verwenden Sie:
brakeman --show-ignored
Weitere Informationen zu den von diesem Tool gemeldeten Warnungen finden Sie unter Warning_types.
Das HTML -Ausgangsformat bietet einen Auszug aus der ursprünglichen Anwendungsquelle, bei der eine Warnung ausgelöst wurde. Aufgrund der Verarbeitung bei der Suche nach Sicherheitsanfälligkeiten ähneln die Quelle möglicherweise nicht der gemeldeten Warnung, und die gemeldeten Linienzahlen sind möglicherweise geringfügig aus. Der Kontext bietet jedoch immer noch einen kurzen Blick in den Code, der die Warnung erhöht.
Brakeman weist jeder Warnung ein Vertrauensniveau zu. Dies liefert eine grobe Schätzung, wie sicher das Tool ist, dass eine bestimmte Warnung tatsächlich ein Problem ist. Natürlich sollten diese Bewertungen nicht als absolute Wahrheit angesehen werden.
Es gibt drei Ebenen des Vertrauens:
Nur Warnungen über ein bestimmtes Konfidenzniveau zu bekommen:
brakeman -w3
Der -w -Switch nimmt eine Zahl von 1 bis 3, wobei 1 niedrig ist (alle Warnungen) und 3 hoch (nur höchste Vertrauenswarnungen).
Brems -Optionen können aus YAML -Dateien gespeichert und gelesen werden.
Um den Prozess des Schreibens einer Konfigurationsdatei zu vereinfachen, gibt die Option -C die derzeit festgelegten Optionen aus:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/Die in der Befehlszeile übergebenen Optionen haben Vorrang gegenüber Konfigurationsdateien.
Die Standardkonfigurationsorte sind ./config/brakeman.yml , ~/.brakeman/config.yml und /etc/brakeman/config.yml
Die Option -c kann verwendet werden, um eine zu verwendende Konfigurationsdatei anzugeben.
Es gibt ein Plugin für Jenkins/Hudson.
Versuchen Sie für noch kontinuierlichere Tests das Guard -Plugin.
Es stehen ein paar Github -Aktionen zur Verfügung.
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
..und mehr!
Website: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
Chat: https://gitter.im/presidentbeeef/brakeman
Brakeman ist kostenlos für den nichtkommerziellen Gebrauch.
Weitere Informationen finden Sie im Kopieren.