___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Dieses Repo erstellt appthreat/sast-scan (und quay.io/appthreat/sast-scan ), ein Containerbild mit einer Reihe von SAST-Tools (Open-Source "-Stests (STATIC SECURTE TESTING). Dies ist wie ein Schweizer Armeemesser für DevSecops -Ingenieure.
| Programmiersprache | Werkzeuge |
|---|---|
| Ansible | Ansible-Lint |
| Apex | PMD |
| AWS | CFN-Lint, CFN_NAG |
| verprügeln | Shellcheck |
| Bom | CDXGEN |
| Credscan | Gitleaks |
| Depscan | Dep-Scan |
| gehen | Gosec, StaticCheck |
| Java | CDXGen, Gradle, Findsec-Bugs, PMD |
| JSP | PMD |
| JSON | JQ, JSondiff, Jsonschema |
| Kotlin | Detekt |
| Kubernetes | Kube-Score |
| Nodejs | CDXGen, Nodejsscan, Eslint, Garn |
| Marionette | Puppenspiel-Lint |
| Plsql | PMD |
| Python | Bandit, CDXGEN, POPENV |
| Rubin | Cyclonedx-Ruby |
| Rost | CDXGen, Frachtaudit |
| Terraform | tfsec |
| Visuelle Kraft (VF) | PMD |
| Apache -Geschwindigkeit (VM) | PMD |
| Yaml | Yamllint |
Einige Berichte werden in einen offenen Standard namens Sarif umgewandelt. Weitere Informationen finden Sie im Abschnitt zum Viewing reports für verschiedene Zuschaueroptionen dafür.
Sast-Scan eignet sich ideal für die Verwendung mit CI und auch als Vor-Commit-Haken für die lokale Entwicklung.
Siehe Dokument
Dieses Tool kann mit GitHub -Aktionen mit dieser Aktion verwendet werden. Alle unterstützten Sprachen können verwendet werden.
Dieser Repo testet sich selbst mit Sast-Scan! Überprüfen Sie die GitHub -Workflow -Datei dieses Repo.
- name : Self sast-scan
uses : AppThreat/[email protected]
with :
output : reports
type : python,bash
- name : Upload scan reports
uses : actions/[email protected]
with :
name : sast-scan-reports
path : reports Verwenden Sie diesen benutzerdefinierten Builder, um Sast-Scan als Build-Schritt hinzuzufügen.
Die vollständigen Schritte werden unten reproduziert.
git clone https://github.com/CloudBuildr/google-custom-builders.git
cd google-custom-builders/sast-scan
gcloud builds submit --config cloudbuild.yaml . steps :
- name : " gcr.io/$PROJECT_ID/sast-scan "
args : ["--type", "python"] Siehe Dokument
Ein Beispielprojekt mit Konfiguration finden Sie hier
sast :
stage : test
image :
name : appthreat/sast-scan
script :
- scan --src ${CI_PROJECT_DIR} --type nodejs --out_dir ${CI_PROJECT_DIR}/reports
artifacts :
paths :
- $CI_PROJECT_DIR/reports/ Sarif-Berichte von Sast-Scan können in andere kompatible Werkzeuge integriert werden. Es kann auch leicht in Datenbanken wie BigQuery für Visualisierungszwecke importiert werden. Eine ausführliche Erläuterung des SARIF -Formats finden Sie im Integrationsdokument.
Scannen Sie das Python -Projekt
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonUnter Windows ändert sich der Befehl je nach Terminal geringfügig.
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
Powershell und Powershell -Kern
docker run --rm -e "WORKSPACE=$(pwd)" -e "GITHUB_TOKEN=$env:GITHUB_TOKEN" -v "$(pwd):/app:cached" quay.io/appthreat/sast-scan scan
WSL Bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Git-Bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Vergessen Sie nicht den Schrägstrich (/) vor $ PWD für Git-Bash!
Scannen Sie mehrere Projekte
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type credscan,nodejs,python,yaml --out_dir /app/reportsScannen Sie Java -Projekt
Für Java- und JVM-Sprachprojekte ist es wichtig, die Projekte zu kompilieren, bevor Sie Sast-Scan im Entwickler- und CI-Workflow aufrufen.
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.m2:/.m2 -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type java
# For gradle project
docker run --rm -e " WORKSPACE= ${PWD} " -v ~ /.gradle:/.gradle -v < source path > :/app quay.io/appthreat/sast-scan scan --src /app --type javaScannen Sie das Python -Projekt (ohne Telemetrie)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonAutomatische Projekterkennung
Fühlen Sie sich frei zu --type , um die automatische Erkennung zu ermöglichen. Oder über die von Kommas getrennte Werte bestehen, wenn das Projekt mehrere Typen enthält.
Bandit
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app Berichte werden im Verzeichnis erstellt, das für --out_dir angegeben ist. In den obigen Beispielen ist es auf reports festgelegt, die ein Verzeichnis im Quellcode -Root -Verzeichnis sein werden.
Einige der Berichte würden in einen Standard namens Sarif konvertiert. Solche Berichte würden mit der Erweiterung .sarif enden. Um die SARIF -Dateien zu öffnen und anzeigen, erfordern ein Betrachter wie:
Beispielberichte:
Online -Viewer kann verwendet werden, um die .SARIF -Dateien wie gezeigt manuell hochzuladen.

Das Azure DevOps Sarif -Plugin kann integriert werden, um die in den Build -Lauf integrierte Analyse wie gezeigt zu zeigen.


GitLab Sast verwendet zahlreiche Einzelzweckanalysatoren und GO -basierte Konverter, um ein benutzerdefiniertes JSON -Format zu erstellen. Dieses Modell hat den Nachteil der zunehmenden Build -Zeiten, da mehrere Containerbilder heruntergeladen werden sollten und daher nicht für CI -Umgebungen wie Azure -Pipelines, Codebuild und Google Cloudbuild geeignet sind. Außerdem ist die von GitLab verwendete Lizenz nicht openSource, obwohl die Analysatoren lediglich vorhandene OSS -Tools einwickeln!
Mir Swamp ist ein kostenloser Online-Service für die Ausführung von OSS- und kommerziellen statischen Analysen für eine Reihe von Sprachen, die Simillar zu Sast-Scan ausführt. Es gibt ein kostenloses Swamp-in-a-Box-Angebot, aber das Setup ist etwas umständlich. Sie verwenden ein XML -Format namens Schal mit einer Reihe von Perl -basierten Konvertern. Im Gegensatz dazu ist Sarif JSON -basiert und ist für Integration und UI -Zwecke viel einfacher zu arbeiten. Durch die Übernahme von Python ist Sast-Scan für die Anpassung etwas einfach zu bearbeiten.
AppTheat wird von Shiftleft finanziert und unterstützt. Um allgemeine Diskussionen und Vorschläge zu erhalten