
Ein Projekt-Sicherheits-/Schwachstellen-/Risikoscanning-Tool
Es gibt heutzutage modernere Optionen für dich und dein Projekt. Falls du die Wartung des Projekts übernehmen möchtest, kannst du mich gerne kontaktieren. Du findest Wege, mich zu erreichen, auf meiner persönlichen Homepage.
.
.
.
.
.
.
Der Hawkeye scanner-cli ist ein Werkzeug zur Hervorhebung von Projektsicherheit, Schwachstellen und allgemeinen Risiken. Es ist dafür gedacht, in Ihre Pre-Commit-Hooks und Ihre Pipelines integriert zu werden.
Der Hawkeye scanner-cli geht davon aus, dass Ihre Verzeichnisstruktur so ist, dass die Dateien der Toolchain auf der obersten Ebene liegen. Im Großen und Ganzen läuft es auf Folgendes hinaus:
package.json auf der obersten EbeneGemfile auf der obersten Ebenerequirements.txt auf der obersten Ebenecomposer.lock auf der obersten Ebenebuild- (Gradle) oder target-Ordner (Maven) und enthalten .java- und .jar-Dateienbuild- (Gradle) oder target-Ordner (Maven) und enthalten .kt- und .jar-Dateientarget-Ordner (sbt mit sbt-native-packager- oder sbt-assembly-Plugins) und enthalten
.scala- und .jar-Dateien. Schauen Sie sich dieses Repository für eine laufende Demo an.Cargo.toml auf der obersten EbeneDiese Liste ist nicht abschließend, da manchmal Tools weitere Dateien benötigen. Um zu verstehen, wie die Module entscheiden, ob sie ein Projekt bearbeiten können, lesen Sie bitte den Abschnitt How it works und den Ordner modules.
Das Docker-Image ist mit Abstand der einfachste Weg, den Scanner zu nutzen. Bitte beachten Sie, dass Ihr Projektstamm (z.B. $PWD) auf /target gemountet sein muss.
docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest
Wenn Sie den Scanner verwenden, um eine JSON-Datei zu schreiben (über die -j- und --json-CLI-Flags und die json-Einstellung in der .hawkeyerc), stellen Sie sicher, dass die korrekte UID und GID verwendet wird über docker run -u $(id -u):$(id -g). Andernfalls könnte dies zu nicht löschbaren Dateien führen, z.B. beim Ausführen in Jenkins.
Der Docker-Build ist auch die empfohlene Methode, um den Scanner in Ihren CI-Pipelines auszuführen. Dies ist ein Beispiel für die Ausführung von Hawkeye gegen eines Ihrer Projekte in GoCD:
<pipeline name="security-scan">
<stage name="Hawkeye" cleanWorkingDir="true">
<jobs>
<job name="scan">
<tasks>
<exec command="docker">
<arg>pull</arg>
<arg>hawkeyesec/scanner-cli</arg>
<runif status="passed" />
</exec>
<exec command="bash">
<arg>-c</arg>
<arg>docker run --rm -v $PWD:/target hawkeyesec/scanner-cli:latest</arg>
<runif status="passed" />
</exec>
</tasks>
</job>
</jobs>
</stage>
</pipeline>
Sie können hawkeye in einem Node.js-Projekt installieren und ausführen über
npm install --save-dev @hawkeyesec/scanner-cli
npx hawkeye scan
Diese Methode wird in einem Node.js-Projekt empfohlen, wenn die anderen Toolchains (z.B. Python, Ruby) nicht benötigt werden.
Bei dieser Methode wird auch empfohlen, den Scanner in einem Git-Pre-Commit-Hook (z.B. über das pre-commit-Paket) aufzurufen, um den Commit fehlschlagen zu lassen, wenn Probleme gefunden werden.
Sie können den Scanner über .hawkeyerc- und .hawkeyeignore-Dateien in Ihrem Projektstamm konfigurieren.
Die .hawkeyerc-Datei ist eine JSON-Datei, mit der Sie Folgendes konfigurieren können ...
{
"all": true|false,
"staged": true|false,
"modules": ["files-ccnumber", "java-owasp", "java-find-secbugs"],
"sumo": "http://your.sumologic.foobar/collector",
"http": "http://your.logger.foobar/collector",
"json": "log/results.json",
"failOn": "low"|"medium"|"high"|"critical",
"showCode": true|false
}
Die .hawkeyeignore-Datei ist eine Sammlung von regulären Ausdrücken, die Pfade und Modul-Fehlercodes abgleichen, um sie vom Scan auszuschließen. Sie entspricht der Verwendung des --exclude-Flags. Zeilen, die mit # beginnen, werden als Kommentare betrachtet.
Bitte beachten Sie, dass alle Sonderzeichen, die in regulären Ausdrücken reserviert sind (-[]{}()*+?.,^$|#\s), maskiert werden müssen, wenn sie als Literal verwendet werden!
Beachten Sie auch, dass die Modul-Fehlercodes normalerweise nicht angezeigt werden, da sie für den Benutzer nicht primär relevant sind. Wenn Sie eine bestimmte Falschmeldung ausschließen möchten, können Sie die Modul-Fehlercodes mit dem Flag --show-code oder der Eigenschaft showCode in der .hawkeyerc anzeigen.
^test/
# Dies ist ein Kommentar
^README.md
Verwenden Sie hawkeye modules, um die verfügbaren Module und deren Status aufzulisten.
> npx hawkeye modules
[info] Version: v1.4.0
[info] Modulstatus
[info] Aktiviert: files-ccnumber
[info] Durchsucht Dateiinhalte, die wahrscheinlich Kreditkartennummern enthalten
[info] Aktiviert: files-contents
[info] Durchsucht Dateiinhalte, die wahrscheinlich Geheimnisse enthalten
[info] Deaktiviert: files-entropy
[info] Durchsucht Dateien auf Zeichenfolgen mit hoher Entropie, die wahrscheinlich Passwörter enthalten
[info] Aktiviert: files-secrets
[info] Durchsucht verdächtige Dateinamen, die wahrscheinlich Geheimnisse enthalten
[info] Aktiviert: java-find-secbugs
[info] Findet häufige Sicherheitsprobleme in Java-Code mit findsecbugs
[info] Aktiviert: java-owasp
[info] Durchsucht Java-Projekte auf Gradle/Maven-Abhängigkeiten mit bekannten Schwachstellen mit dem OWASP-Abhängigkeitsprüfer
[info] Aktiviert: node-npmaudit
[info] Überprüft Node-Projekte auf Abhängigkeiten mit bekannten Schwachstellen
[info] Aktiviert: node-npmoutdated
[info] Überprüft Node-Projekte auf veraltete npm-Module
[info] Aktiviert: node-yarnaudit
[info] Überprüft Yarn-Projekte auf Abhängigkeiten mit bekannten Schwachstellen
[info] Aktiviert: node-yarnoutdated
[info] Überprüft Node-Projekte auf veraltete Yarn-Module
[info] Aktiviert: php-security-checker
[info] Überprüft, ob die composer.lock Abhängigkeiten mit bekannten Schwachstellen enthält, mit security-checker
[info] Aktiviert: python-bandit
[info] Durchsucht Python-Code auf häufige Sicherheitsprobleme mit bandit.
[info] Aktiviert: python-piprot
[info] Durchsucht Python-Abhängigkeiten auf veraltete Pakete
[info] Aktiviert: python-safety
[info] Überprüft Python-Abhängigkeiten auf bekannte Sicherheitslücken mit dem safety-Tool.
[info] Aktiviert: ruby-brakeman
[info] Führt eine statische Analyse von Rails-Code auf Sicherheitsprobleme mit Brakeman durch.
[info] Aktiviert: ruby-bundler-scan
[info] Durchsucht Ruby-Gems mit bekannten Schwachstellen mit bundler
Verwenden Sie hawkeye scan, um einen Scan zu starten:
> npx hawkeye scan --help
[info] Version: v1.3.0
Verwendung: hawkeye-scan [Optionen]