___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Ce repo construit appthreat/sast-scan (et quay.io/appthreat/sast-scan ), une image de conteneur avec un certain nombre d'outils de test de sécurité de l'analyse statique à source ouverte ouverte (SAST). C'est comme un couteau suisse pour les ingénieurs de DevSecops.
| Langage de programmation | Outils |
|---|---|
| incité | anible-lint |
| sommet | PMD |
| AWS | cfn-lint, cfn_nag |
| frapper | chricha |
| nager | cdxgen |
| créditement | gitleaks |
| depscan | dep-scan |
| aller | gosec, staticcheck |
| Java | CDXGEN, Gradle, Find-sec-Bugs, PMD |
| jsp | PMD |
| json | JQ, JSONFIFF, JSonschema |
| kotlin | desekt |
| kubernetes | kube |
| nodejs | cdxgen, nodejsscan, eslint, fil |
| fantoche | marionnet-lint |
| plsql | PMD |
| python | bandit, cdxgen, pivenv |
| rubis | cyclonedx-ruby |
| rouiller | cdxgen, cargo-audit |
| terraform | tfSec |
| Force visuelle (VF) | PMD |
| Apache Velocity (VM) | PMD |
| yaml | Yamllint |
Certains rapports sont convertis en standard ouvert appelé Sarif. Veuillez consulter la section sur Viewing reports pour diverses options de la visionneuse pour cela.
Sast-Scan est idéal pour une utilisation avec CI et également comme crochet pré-engagé pour le développement local.
Reportez-vous au document
Cet outil peut être utilisé avec les actions GitHub en utilisant cette action. Toutes les langues prises en charge peuvent être utilisées.
Ce repo se teste avec Sast-scan! Vérifiez le fichier de flux de travail GitHub de ce dépôt.
- 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 Utilisez ce constructeur personnalisé pour ajouter Sast-Scan comme étape de construction.
Les étapes complètes sont reproduites ci-dessous.
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"] Reportez-vous au document
Un exemple de projet avec config
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/ Les rapports SARIF produits par Sast-Scan peuvent être intégrés à d'autres outils compatibles. Il peut également être facilement importé dans des bases de données telles que BigQuery à des fins de visualisation. Reportez-vous au document d'intégration pour des explications détaillées sur le format Sarif.
Scan Python Project
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonSur Windows, la commande change légèrement en fonction du terminal.
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
PowerShell et PowerShell Core
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-bassin
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
N'oubliez pas la barre oblique (/) avant $ PWD pour Git-Bash!
Scanner plusieurs projets
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/reportsScanner le projet Java
Pour les projets Java et JVM basés sur le langage, il est important de compiler les projets avant d'appeler Sast-scan dans le flux de travail Dev et CI.
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 javaScan Python Project (sans aucune télémétrie)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonDétection automatique du projet
N'hésitez pas à sauter --type pour activer la détection automatique. Ou passer des valeurs séparées par des virgules si le projet a plusieurs types.
Bandit
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app Les rapports seraient produits dans le répertoire spécifié pour --out_dir . Dans les exemples ci-dessus, il est défini sur reports qui seront un répertoire sous le répertoire racine du code source.
Certains rapports seraient convertis en une norme appelée Sarif. Ces rapports se termineraient par l'extension .sarif . Pour ouvrir et afficher les fichiers Sarif, il faut une visionneuse telle que:
Exemples de rapports:
La visionneuse en ligne peut être utilisée pour télécharger manuellement les fichiers .Sarif comme indiqué.

Le plugin Azure DevOps Sarif peut être intégré pour montrer l'analyse intégrée à l'exécution de build comme indiqué.


GitLab Sast utilise de nombreux analyseurs à usage unique et convertisseurs basés sur GO pour produire un format JSON personnalisé. Ce modèle a l'inconvénient d'augmenter les temps de construction, car plusieurs images de conteneurs devraient être téléchargées et ne conviennent donc pas aux environnements CI tels que les pipelines Azure, CodeBuild et Google CloudBuild. De plus, la licence utilisée par GitLab n'est pas opensource même si les analyseurs enveloppent simplement les outils OSS existants!
Mir Swamp est un service en ligne gratuit pour exécuter à la fois l'OSS et l'analyse statique commerciale pour un certain nombre de langues Simillar à Sast-scan. Il y a une offre marécageuse gratuite, mais la configuration est un peu lourde. Ils utilisent un format XML appelé écharpe avec un certain nombre de convertisseurs basés sur Perl. Sarif, en revanche, est basé sur JSON et est beaucoup plus facile à travailler avec l'intégration et l'interface utilisateur. En adoptant Python, Sast-Scan est un peu facile à travailler avec la personnalisation.
Appterreat est financé et soutenu par Shiftleft. Pour les discussions générales et les suggestions, n'hésitez pas à utiliser le GitHub Issues ou Shiftleft Discussion Forum