___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Este repositorio construye appthreat/sast-scan (y quay.io/appthreat/sast-scan ), una imagen de contenedor con una serie de herramientas de prueba de seguridad de análisis estático de código abierto (SAST). Esto es como una navaja suiza para los ingenieros de DevSecops.
| Lenguaje de programación | Herramientas |
|---|---|
| ansible | holgazán |
| ápex | PMD |
| AWS | CFN-Lint, CFN_NAG |
| intento | chellera |
| proseperar | cdxgen |
| credscan | gitleaks |
| deprimir | escanear |
| ir | gosec, staticcheck |
| Java | CDXGEN, Gradle, Find-SEC-Bugs, PMD |
| JSP | PMD |
| json | JQ, JSONDIFF, JSONSCHEMA |
| kotlín | desanimar |
| Kubernetes | puntaje de kube |
| nodejs | CDXGEN, NODEJSSCAN, ESLINT, HILAR |
| marioneta | títere |
| plsql | PMD |
| pitón | Bandit, Cdxgen, Pipenv |
| rubí | ciclonedx-ruby |
| óxido | CDXGEN, Audit de carga |
| terraformado | TFSEC |
| Fuerza visual (VF) | PMD |
| Velocidad de Apache (VM) | PMD |
| yaml | ñame |
Algunos informes se convierten en un estándar abierto llamado Sarif. Consulte la sección sobre Viewing reports de varias opciones de espectadores para esto.
SAST-scan es ideal para su uso con CI y también como un gancho precomito para el desarrollo local.
Consulte el documento
Esta herramienta se puede usar con acciones de GitHub utilizando esta acción. Se pueden usar todos los idiomas compatibles.
¡Este repositorio se prueba con Sast-Scan! Consulte el archivo de flujo de trabajo GitHub de este repositorio.
- 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 Use este constructor personalizado para agregar SAST-Scan como un paso de compilación.
Los pasos completos se reproducen a continuación.
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"] Consulte el documento
Se puede encontrar un proyecto de muestra con configuración aquí
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/ Los informes SARIF producidos por SAST-SCAN pueden integrarse con otras herramientas compatibles. También se puede importar fácilmente a bases de datos como BigQuery para fines de visualización. Consulte el documento de integración para obtener una explicación detallada sobre el formato SARIF.
Proyecto de escaneo de Python
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonEn Windows, el comando cambia ligeramente dependiendo del terminal.
CMD
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
PowerShell y 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
chicle
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
¡No olvides el Slash (/) antes de $ PWD para Git-Bash!
Escanear múltiples proyectos
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/reportsProyecto de escaneo Java
Para los proyectos basados en el idioma Java y JVM, es importante compilar los proyectos antes de invocar a SAST-Scan en el flujo de trabajo Dev y 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 javaProyecto de escaneo de Python (sin telemetría)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonDetección automática de proyectos
Siéntase libre de omitir --type para habilitar la detección automática. O pasar valores separados por comas si el proyecto tiene múltiples tipos.
Bandido
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app Los informes se producirían en el directorio especificado para --out_dir . En los ejemplos anteriores, se establece en reports que serán un directorio en el directorio raíz del código fuente.
Algunos de los informes se convertirían a un estándar llamado SARIF. Tales informes terminarían con la extensión .sarif . Para abrir y ver los archivos SARIF requiere un espectador como:
Informes de ejemplo:
El visor en línea se puede usar para cargar manualmente los archivos .sarif como se muestra.

El complemento Azure DevOps SARIF se puede integrar para mostrar el análisis integrado con la ejecución de compilación como se muestra.


GITLAB SAST utiliza numerosos analizadores de un solo propósito y convertidores basados en GO para producir un formato JSON personalizado. Este modelo tiene la desventaja de aumentar los tiempos de construcción, ya que múltiples imágenes de contenedores deberían descargarse y, por lo tanto, no es adecuada para entornos de CI como tuberías de Azure, CodeBuild y Google CloudBuild. Además, la licencia utilizada por GitLab no es OpenSource a pesar de que los analizadores simplemente envuelven las herramientas OSS existentes.
Mir Swamp es un servicio en línea gratuito para ejecutar análisis estáticos comerciales y comerciales para varios idiomas similar a sast-scan. Hay una oferta gratuita de Swamp-in-a-Box, pero la configuración es un poco engorrosa. Utilizan un formato XML llamado bufanda con varios convertidores basados en Perl. Sarif, en contraste, está basado en JSON y es mucho más fácil trabajar con fines de integración y UI. Al adoptar Python, SAST-Scan es un poco fácil de trabajar para la personalización.
Appthreat es financiado y compatible con Shiftleft. Para discusiones y sugerencias generales, no dude en usar los temas de Github o el foro de discusión de Shiftleft