SAST e DAST
SAST (Static Application Security Testing) e DAST (Dynamic Application Security Testing) representam duas metodologias fundamentais e complementares no campo da segurança de aplicações, cada uma com abordagens distintas mas igualmente importantes para identificação de vulnerabilidades. O SAST opera através da análise estática do código-fonte, bytecode ou binários sem executar a aplicação, examinando o código em busca de padrões que indiquem vulnerabilidades potenciais como SQL injection, XSS, buffer overflows e falhas de lógica de negócio. Esta abordagem "white-box" permite identificar problemas no início do ciclo de desenvolvimento (shift-left security), fornecendo aos desenvolvedores feedback preciso sobre a localização exata do código vulnerável. Por outro lado, o DAST simula ataques reais contra a aplicação em execução, testando-a de forma "black-box" como um atacante externo faria, sem acesso ao código-fonte. Esta técnica revela vulnerabilidades que só se manifestam em runtime, como falhas de configuração, problemas de autenticação e autorização, e vulnerabilidades que surgem da interação entre diferentes componentes. Quando implementados juntos em uma estratégia integrada de DevSecOps, SAST e DAST cobrem blind spots um do outro, criando uma defesa em profundidade que detecta tanto vulnerabilidades introduzidas durante o desenvolvimento quanto aquelas que emergem durante a execução da aplicação em ambientes reais.
SAST: Análise Estática
SAST examina código-fonte, bytecode ou binários sem executar a aplicação, identificando vulnerabilidades durante desenvolvimento.
Vantagens SAST
- Early detection: Encontra bugs antes de deployment
- Code coverage: Analisa 100% do código, incluindo paths não executados
- Root cause: Mostra linha exata do código vulnerável
- No runtime needed: Não precisa aplicação rodando
- CI/CD integration: Automação em pipeline de build
Limitações SAST
- False positives altos - precisa tuning
- Não detecta vulnerabilidades de configuração
- Não testa lógica de negócio em runtime
- Language-specific - cada linguagem precisa scanner próprio
Ferramentas SAST
- SonarQube: Open-source, suporta 25+ linguagens
- Checkmarx: Enterprise-grade, SAST líder de mercado
- Fortify: Micro Focus, análise profunda
- Semgrep: Open-source, regras customizáveis
- Bandit (Python): Específico para Python
- Brakeman (Ruby): Rails security scanner
DAST: Análise Dinâmica
DAST testa aplicação em execução, simulando ataques reais através de black-box testing, sem acesso ao código-fonte.
Vantagens DAST
- Runtime testing: Testa aplicação como atacante real
- Configuration issues: Detecta falhas de configuração
- Low false positives: Vulnerabilidades confirmadas exploitáveis
- Language-agnostic: Funciona para qualquer stack
- Production-like: Testa em ambiente similar a produção
Limitações DAST
- Late detection - vulnerabilidades encontradas após código pronto
- Code coverage limitado - só testa fluxos acessíveis
- Sem detalhes de código - não mostra linha vulnerável
- Requer aplicação deployada e rodando
Ferramentas DAST
- OWASP ZAP: Open-source, proxy interceptor
- Burp Suite: Industry standard, professional scanner
- Acunetix: Automated web vulnerability scanner
- Netsparker: Proof-based scanning
- AppScan: IBM enterprise solution
SAST + DAST: Estratégia Combinada
Usar SAST e DAST juntos cobre blind spots de cada abordagem, criando programa de AppSec robusto.
# Pipeline CI/CD com SAST + DAST
stages:
- build
- sast
- test
- dast
- deploy
sast_scan:
stage: sast
script:
- semgrep --config=auto --json -o sast-results.json
- sonar-scanner
artifacts:
reports:
sast: sast-results.json
dast_scan:
stage: dast
script:
- docker run -t owasp/zap2docker-stable zap-baseline.py
-t https://staging.app.com -r dast-report.html
artifacts:
reports:
dast: dast-report.html
IAST: Interactive Application Security Testing
IAST combina SAST e DAST, instrumentando aplicação para monitorar em runtime, obtendo code coverage de SAST com runtime accuracy de DAST.
- Contrast Security: Líder em IAST, agents embarcados
- Seeker (Synopsys): Runtime analysis com code insight
- Hdiv Security: Runtime application self-protection
Integração DevSecOps
- SAST em pre-commit hooks e pull requests
- DAST em staging environments antes de produção
- Quality gates: bloquear builds com vulnerabilidades críticas
- Developer feedback loops: integrar com IDEs (SonarLint)
- Vulnerability management: centralizar achados em plataforma única
Recomendações
Implemente SAST cedo no SDLC (shift-left) e DAST em ambientes de staging. Tune ferramentas para reduzir false positives - foco em vulnerabilidades críticas primeiro. Considere IAST para aplicações críticas. Automatize tudo no pipeline CI/CD e crie feedback loops rápidos para developers.
