SAST e SCA para código AI

TL;DR

Static Application Security Testing (SAST) analisa código em busca de vulnerabilidades; Software Composition Analysis (SCA) analisa dependências em busca de vulns conhecidas e pacotes maliciosos. Para código IA, rode os dois, em CI, em todo commit. Semgrep + Snyk Code (ou CodeQL) é a combinação dominante em 2026. Use 2+ ferramentas SAST simultaneamente — pesquisa mostra que 78% dos issues confirmados são pegos por só uma ferramenta. Foque rules em CWE-918 (SSRF), CWE-78 (command injection), CWE-89 (SQLi), CWE-798 (hardcoded creds) — os mais comuns em código LLM.

SAST vs SCA — quem pega o quê

SASTSCA
O que analisaSeu códigoDependências
PegaXSS, SQLi, command injection, race conditionsCVEs em libs, slopsquat, licenças
QuandoCada commitCada commit + alerta contínuo
Falsos positivosMédioBaixo
CustoTempo de scanTempo de scan + manutenção de allowlist

Os dois são complementares. Times pulam SCA pensando “uso só libs famosas” — exatamente onde slopsquat e CVEs aparecem.

Top SAST tools 2026

ToolForte emModelo
SemgrepRules customizáveis, rapidíssimo (~10s scan), zero FP em OWASP benchmarkOpen source + cloud
Snyk CodeDeepCode AI, IDE integration real-time, fix suggestionsSaaS
CodeQL (GitHub)Semantic analysis, queries declarativas, indirect data flowFree para repos públicos
SonarQube/CloudQuality + security, dashboards corporativosSelf-hosted ou SaaS
CheckmarxEnterprise SAST, compliance focusSaaS
VeracodeCompliance + binary analysisSaaS
DryRun SecurityPR-native scanningSaaS

Rule prioritization para AI code

Veracode e DryRun mostram que LLMs falham consistentemente em algumas classes:

CWEVulnerabilidadePor que LLMs falham
CWE-80XSSTemplates sem auto-escape; modelo não detecta context
CWE-89SQL InjectionString concat em queries; modelo “esquece” parametrização
CWE-918SSRFURLs construídas com input; modelo não valida hosts
CWE-78Command Injectionsubprocess.run(f"cmd {user_input}")
CWE-22Path Traversalopen(f"./{user_input}")
CWE-502Insecure Deserializationpickle.loads(network_data)
CWE-798Hardcoded CredentialsAPI keys em código
CWE-117Log Injectionlog.info(f"User: {user}") sem sanitização
CWE-943NoSQL InjectionMongoDB com $where sem validação

Configure suas SAST rules para alta sensibilidade nestes. Aceite alguns false positives — eles são de longe menos custosos que false negatives.

Configuração mínima — Semgrep

# .semgrepignore — coisas a pular
node_modules/
build/
*.test.ts
 
# .github/workflows/semgrep.yml
on: [pull_request]
jobs:
  semgrep:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          docker run --rm -v $(pwd):/src \
            returntocorp/semgrep \
            --config=auto \
            --error \
            --severity=ERROR \
            --severity=WARNING

--config=auto carrega Semgrep Registry com regras para a stack detectada. --error faz CI falhar se vulnerabilidade for achada.

Para código IA, considere também:

- run: semgrep --config=p/owasp-top-ten --config=p/secrets --config=p/python-correctness

Configuração mínima — Snyk Code

# CLI
snyk auth
snyk code test
 
# Em CI (GitHub Actions):
- uses: snyk/actions/setup@master
- run: snyk code test --severity-threshold=medium

Snyk Code adiciona fix suggestions automatizadas. Útil em PR comments — dev vê o problema E a correção.

Configuração mínima — CodeQL

# .github/workflows/codeql.yml
on:
  pull_request:
  schedule:
    - cron: '0 0 * * 1'  # weekly
 
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: javascript,python
          queries: security-extended
      - uses: github/codeql-action/analyze@v3

security-extended query suite cobre os CWEs principais com semantic analysis (segue data flow através de chamadas).

A regra dos 78%

Pesquisa essencial

“In testing, 78% of confirmed vulnerabilities were caught by only a single tool.” — DryRun Security, 2026

Significa: rodar uma ferramenta deixa passar 78% dos issues que outra ferramenta acharia. Combine: Semgrep + Snyk, ou CodeQL + Snyk, ou Semgrep + CodeQL.

Combo recomendado para 2026:

  • Semgrep (velocidade, customização, OSS)
  • + Snyk Code OU CodeQL (semantic analysis, dataflow)
  • + Snyk Open Source ou Socket.dev (SCA)

SCA — focando em slopsquat

Para slopsquat e supply chain:

ToolForte em
Snyk Open SourceCVE database grande, fix suggestions
Socket.devDetecção de pacote malicioso (não só CVE)
Endor LabsReachability analysis (vuln só conta se chega em runtime)
Aikido SecuritySlopsquat detection nativo
GitHub DependabotFree, integrado

Socket.dev — destaque

Socket detecta comportamento suspeito em pacotes (post-install scripts, network exfil, obfuscation) — não depende de CVE estar publicada. Crítica em 2026 para detectar slopsquat antes da CVE ser conhecida.

Pipeline integrado — exemplo completo

name: Security Pipeline
 
on: [push, pull_request]
 
jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
 
      # SAST tool 1
      - name: Semgrep
        uses: returntocorp/semgrep-action@v1
        with:
          config: >
            p/owasp-top-ten
            p/secrets
            p/python-correctness
 
      # SAST tool 2 (different engine)
      - name: CodeQL
        uses: github/codeql-action/analyze@v3
 
      # SCA — code dependencies
      - name: Snyk Open Source
        uses: snyk/actions/python@master
        with:
          args: --severity-threshold=high
 
      # SCA — slopsquat / behavioral
      - name: Socket Security
        uses: socketsecurity/action@v1

Tempo total target: <8min. Custo de NÃO ter: incidente em prod.

AI-assisted remediation

Padrão emergente em 2026

Ferramentas começam a oferecer auto-fix por LLM para findings. Snyk Code, Semgrep Assistant, GitHub Copilot autofix.

Cuidado: AI-fix carrega mesmo risco de 45% inseguro. Trate fix gerado como código novo: passa pelo mesmo SAST de novo.

Métricas que importam

MétricaAlvo
% PRs com finding crítico bloqueadoVariável, mas existir
Mean time to remediate (MTTR)<1 dia para críticos, <1 semana para médios
% findings com false positive<15% (acima → calibre rules)
Cobertura de SAST (% LOC scaneadas)>90%
Tempo CI total para SAST + SCA<10 min

Anti-patterns

  • Rodar SAST como warning, não erro — todo mundo ignora warnings
  • Single-vendor SAST — perde 78% (regra de DryRun)
  • SCA só em PRs grandes — slopsquat entra via PR pequeno
  • Sem allowlist de licenças — copyleft em proprietário causa pesadelo legal
  • Ignorar SCA “porque uso só libs famosas” — slopsquat ataca exatamente assim
  • AI auto-fix sem re-scan — fix pode introduzir issue diferente

Veja também

Referências

  • DryRun SecurityTop 10 AI SAST Tools for 2026 and How to Enforce Code Policy (2026).
  • Veracode2025 GenAI Code Security Report (2025).
  • Vibe-evalBest SAST Tools for AI-Generated Code: Snyk vs Semgrep vs Checkmarx (2026).
  • RafterStatic Code Analysis Tools Comparison 2026 (2026).
  • KonvuSCA vs SAST 2026: What Each Tool Finds, Misses, and Costs (2026).
  • DoyensecIndependent SAST testing on OWASP benchmarks (2025).