SAST - Static Application Security Testing
SAST SCAN
Definição
Executamos um scan SAST quando queremos buscar por vulnerabilidades em nosso código fonte.
Checkmarx SAST
Checkmarx SAST (CxSAST) é uma solução de análise estática precisa e flexível de nível corporativo usada para identificar centenas de vulnerabilidades de segurança em código personalizado. Ele é usado por equipes de desenvolvimento, DevOps e segurança para verificar o código-fonte no início do SDLC, identificar vulnerabilidades e fornecer insights acionáveis para corrigi-los. Suportando mais de 25 linguagens de codificação e script e suas estruturas com configuração zero para fazer a varredura de qualquer linguagem.
Checkmarx CxCLI
CLI é um programa de linha de comando que aceita entrada de texto para executar funções do sistema operacional. Nas décadas de 1970 e 1980, a entrada de linha de comando era comumente usada por sistemas Unix e sistemas de PC como MS-DOS e Apple DOS. Hoje, com interfaces gráficas de usuário (GUI), a maioria dos usuários nunca usa interfaces de linha de comando (CLI). No entanto, a CLI ainda é usada por desenvolvedores de software e administradores de sistema para configurar computadores, instalar software e acessar recursos que não estão disponíveis na interface gráfica.
No Checkmarx existem dois modos de executar um scan via CxCLI, o modo síncrono e o assíncrono.
Modo síncrono
Neste modo, o CxCLI ficará esperando o scan finalizar no servidor Checkmarx e não continuará sua execução até então. Este modo é normalmente utilizado para a “quebra do build” no pipeline.
---
Modo síncrono: runCxConsole Scan -v -CxServer <host> -ProjectName <projectName> -CxUser <username> -CxPassword <password> -LocationType <LocationType> -LocationPath <locationpath>
Exemplo Windows: runCxConsole.cmd Scan -v -ProjectName "CxServer/MeuProjeto" -CxServer http://localhost -cxuser username -cxpassword DeVsEcOpS -LocationType folder -LocationPath "C:\Data\Projects\Java\MeuProjeto" -preset "Checkmarx Default"
Exemplo Linux: runCxConsole.sh Scan -v -ProjectName "CxServer/MeuProjeto" -CxServer http://localhost -cxuser username -cxpassword DeVsEcOpS -LocationType folder -LocationPath "C:\Data\Projects\Java\MeuProjeto" -preset "Checkmarx Default"
---
Modo assíncrono
Neste modo, o CxCLI NÃO ficará esperando o scan finalizar no servidor Checkmarx e continuará sua execução independente do resultado do scan. Este modo é normalmente utilizado para NÃO interromper o pipeline.
---
Modo assíncrono: runCxConsole AsyncScan -v -CxServer <host> -ProjectName <projectName> -CxUser <username> -CxPassword <password> -LocationType <LocationType> -LocationPath <locationpath>
Exemplo Windows: runCxConsole.cmd AsyncScan -v -ProjectName "CxServer/MeuProjeto" -CxServer http://localhost -cxuser username -cxpassword DeVsEcOpS -LocationType folder -LocationPath "C:\Data\Projects\Java\MeuProjeto" -preset "Checkmarx Default"
Exemplo Linux: runCxConsole.sh AsyncScan -v -ProjectName "CxServer/MeuProjeto" -CxServer http://localhost -cxuser username -cxpassword DeVsEcOpS -LocationType folder -LocationPath "C:\Data\Projects\Java\MeuProjeto" -preset "Checkmarx Default"
---
Referências
CicleCI
No exemplo abaixo, um YAML é utilziado para configurar o job do CircleCI para executar o CxCLI para realizar um scan síncrono.
---
version: 2.1
jobs:
build-and-test:
docker:
- image: cimg/openjdk:11.0
steps:
- checkout
- run: |
wget https://download.checkmarx.com/9.3.0GA/Plugins/CxConsolePlugin-1.1.5.zip
mkdir CxConsolePlugin
unzip CxConsolePlugin-1.1.5.zip -d CxConsolePlugin
cd CxConsolePlugin
chmod +x runCxConsole.sh
pwd
./runCxConsole.sh Scan -v -ProjectName "CxServer/MeuProjeto" -CxServer http://localhost -cxuser username -cxpassword DeVsEcOpS -LocationType folder -LocationPath "C:\Data\Projects\Java\MeuProjeto" -preset "Checkmarx Default"
workflows:
build_scan:
jobs:
- build-and-test
---