___ _____ _ _
/ _ | _ _ | | | |
/ /_ _ __ _ __ | | | | __ _ __ ___ __ _ | | _
| _ | ' _ | ' _ | | | ' _ | ' __/ _ / _ ` | __ |
| | | | | _) | | _) | | | | | | | | __/ (_ | | | _
_ | | _/ .__/ | .__/ _ / | _ | | _ | _ | _ __ | _ _,_ | _ _ |
| | | |
| _ | | _ | Este repo constrói appthreat/sast-scan (e quay.io/appthreat/sast-scan ), uma imagem de contêiner com várias ferramentas de teste de segurança de análise estática (STAST). É como uma faca do exército suíço para os engenheiros da DevSecops.
| Linguagem de programação | Ferramentas |
|---|---|
| Ansible | Ansible-lint |
| ápice | PMD |
| AWS | cfn-lint, cfn_nag |
| Bash | Verifique |
| bom | CDXGEN |
| credscan | GitLeaks |
| DepScan | dep-scan |
| ir | GOSEC, STATICCHECK |
| Java | CDXGEN, GRADLE, FELHE-SEC-BUGS, PMD |
| JSP | PMD |
| JSON | JQ, JSONDIFF, JSONSCHEMA |
| Kotlin | detekt |
| Kubernetes | Kube-escore |
| nodejs | CDXGEN, NodeJSScan, Eslint, Yarn |
| fantoche | Puppet-lint |
| plsql | PMD |
| Python | Bandit, CDXGen, Pipenv |
| rubi | Cyclonedx-ruby |
| ferrugem | CDXGEN, Cargo-Audit |
| Terraform | tfsec |
| Visual Force (VF) | PMD |
| Apache Velocity (VM) | PMD |
| Yaml | Yamllint |
Alguns relatórios são convertidos em um padrão aberto chamado Sarif. Consulte a seção sobre Viewing reports para várias opções de espectador para isso.
O SAST-SCAN é ideal para uso com IC e também como um gancho de pré-compromisso para o desenvolvimento local.
Consulte o documento
Esta ferramenta pode ser usada com ações do GitHub usando esta ação. Todos os idiomas suportados podem ser usados.
Este repo se auto-testes com Sast-scan! Verifique o arquivo de fluxo de trabalho do GitHub deste repositório.
- 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 construtor personalizado para adicionar Sast-scan como uma etapa de construção.
As etapas completas são reproduzidas abaixo.
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 o documento
Um projeto de amostra com configuração pode ser encontrado aqui
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/ Os relatórios SARIF produzidos pelo SAST-SCAN podem ser integrados a outras ferramentas compatíveis. Também pode ser facilmente importado para bancos de dados, como o BigQuery para fins de visualização. Consulte o documento de integração para obter uma explicação detalhada no formato SARIF.
Scan Python Project
docker run --rm -e " WORKSPACE= ${PWD} " -v " $PWD :/app:cached " quay.io/appthreat/sast-scan scan --src /app --type pythonNo Windows, o comando muda um pouco, dependendo do terminal.
cmd
docker run --rm -e "WORKSPACE=%cd%" -e "GITHUB_TOKEN=%GITHUB_TOKEN%" -v "%cd%:/app:cached" quay.io/appthreat/sast-scan scan
Powershell e 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-Bash
docker run --rm -e "WORKSPACE=${PWD}" -e "GITHUB_TOKEN=${GITHUB_TOKEN}" -v "/$PWD:/app:cached" quay.io/appthreat/sast-scan scan
Não se esqueça da barra (/) antes de $ PWD para Git-Bash!
Digitalize vários projetos
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/reportsDigitalize o projeto Java
Para projetos baseados em idiomas Java e JVM, é importante compilar os projetos antes de invocar o SAST-SCAN no fluxo de trabalho Dev e 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 (sem telemetria)
docker run --rm -e " WORKSPACE= ${PWD} " -e " DISABLE_TELEMETRY=true " -v $PWD :/app quay.io/appthreat/sast-scan scan --src /app --type pythonDetecção automática de projetos
Sinta-se à vontade para pular --type para ativar a detecção automática. Ou passe valores separados por vírgula se o projeto tiver vários tipos.
Bandido
docker run --rm -v < source path > :/app quay.io/appthreat/sast-scan bandit -r /app Os relatórios seriam produzidos no diretório especificado para --out_dir . Nos exemplos acima, ele está definido como reports que serão um diretório no diretório raiz do código -fonte.
Alguns dos relatórios seriam convertidos em um padrão chamado Sarif. Tais relatórios terminariam com a extensão .sarif . Para abrir e visualizar os arquivos SARIF, requer um espectador como:
Exemplo de relatórios:
O visualizador on -line pode ser usado para fazer upload manualmente os arquivos .sarif, como mostrado.

O plug -in do Azure DeVOps Sarif pode ser integrado para mostrar a análise integrada à execução da construção, como mostrado.


O GitLab Sast usa vários analisadores de propósito único e conversores baseados no Go para produzir um formato JSON personalizado. Esse modelo tem a desvantagem do aumento dos tempos de construção, pois várias imagens de contêineres devem ser baixadas e, portanto, não são adequadas para ambientes de IC, como Pipelines Azure, CodeBuild e Google CloudBuild. Além disso, a licença usada pelo GitLab não é o OpenSource, mesmo que os analisadores apenas envolvam as ferramentas de OSS existentes!
O Mir Swamp é um serviço on-line gratuito para executar o OSS e a análise estática comercial para vários idiomas Simillar para Sast-scan. Há uma oferta gratuita de pântano em uma caixa, mas a configuração é um pouco pesada. Eles usam um formato XML chamado cachecol com vários conversores baseados em Perl. Sarif, por outro lado, é baseado em JSON e é muito mais fácil de trabalhar para fins de integração e interface do usuário. Ao adotar o Python, o Sast-Scan é um pouco fácil de trabalhar para personalização.
O AppThreat é financiado e suportado pela Shiftleft. Para discussões e sugestões gerais, sinta -se à vontade para usar os problemas do GitHub ou o fórum de discussão Shiftleft