Pular para o conteúdo principal

🤖 IA no Processo de Testes de Segurança (GenAI)

A adoção pervasiva de IA/GenAI no SSDLC altera profundamente como produzimos e interpretamos evidência.
No domínio de testes de segurança isto é especialmente crítico, porque:

  • o output dos scanners já era “ruidoso” (FP/FN), e a IA pode amplificar esse ruído se for usada como oráculo;
  • os testes dependem de contexto (arquitetura, fluxos autenticados, dados sensíveis, compensating controls);
  • a segurança exige decisão humana rastreável, e não “decisão automatizada” sem cadeia de responsabilidade.

Este addon prescreve como usar IA para acelerar e aumentar cobertura sem substituir validação empírica nem comprometer confidencialidade.


1) Princípios canónicos

P1 — IA é “assistente”, não “decisor”

A IA pode propor: triagens, hipóteses, priorização, caminhos de reprodução, patch candidates, testes.
A decisão final (corrigir/aceitar/suprimir/defer) é sempre humana e rastreável — ver US-21 e US-22 no lifecycle.

P2 — Evidência tem de ser reprodutível sem IA

Qualquer finding confirmado tem de poder ser reproduzido por:

  • teste automatizado (regressão),
  • PoC mínima,
  • log/artefacto determinístico (SARIF, HTTP transcript, crash dump, etc.).

P3 — Dados sensíveis nunca entram “às cegas” num modelo

Prompts e contextos devem respeitar:

  • minimização (apenas o necessário),
  • redacção/masking,
  • segregação de segredos (nunca colar tokens/headers reais),
  • política organizacional de uso de IA (ver anexo transversal de políticas).

P4 — Risco “modelo/supply chain” também é risco de segurança

Ferramentas de IA (cloud ou local) fazem parte da cadeia de confiança. Devem existir controlos equivalentes aos aplicados a dependências e CI/CD:

  • versionamento do modelo/config,
  • logging de prompts/outputs (quando permitido),
  • revisão de permissões e acessos,
  • verificação de integridade/proveniência quando aplicável.

2) Casos de uso recomendados (e como fazer com segurança)

2.1 Triagem assistida (SAST/DAST/IAST/SCA/Fuzzing)

Objetivo: reduzir tempo de análise e melhorar consistência da decisão.

Prática:

  • Fornecer à IA apenas:
    • ID do finding + regra/tool,
    • excerto mínimo do code path,
    • contexto técnico não sensível (padrão de autenticação, WAF existente, etc.),
    • política de severidade L1–L3 e critérios de gate.
  • Exigir output estruturado (JSON/Markdown) com:
    • hipótese de exploitabilidade,
    • condições necessárias,
    • mitigação existente (se aplicável),
    • recomendação de validação empírica (passos concretos).

Anti-padrão: “IA disse que é falso positivo” sem prova.

Evidência esperada:

  • decisão documentada via template (US-21 / T1),
  • ligação a validação empírica (US-22 / T1–T5),
  • registo de supressão com rationale e aprovador (se FP).

2.2 Geração assistida de testes de regressão de segurança

Objetivo: transformar findings corrigidos em proteção futura.

Prática:

  • Pedir à IA para produzir:
    • esqueleto de teste (unit/integration/e2e),
    • payloads representativos,
    • asserts que comprovem falha antes e “pass” após correção.
  • O developer valida e ajusta:
    • boundary conditions,
    • mocks/stubs,
    • fixtures seguras.

Restrições:

  • Nunca aceitar código gerado sem revisão.
  • Exigir que o teste referencia explicitamente:
    • o finding (ID),
    • o requisito relevante (Cap. 02),
    • o commit/PR de correção.

Evidência esperada:

  • teste versionado,
  • pipeline a executar regressões,
  • relatório de execução anexado à release.

2.3 Assistência para autenticação em DAST (scripts/flows)

Objetivo: reduzir fricção em DAST autenticado e aumentar cobertura real.

Prática:

  • A IA pode ajudar a construir um login flow genérico, mas:
    • credenciais reais não entram no prompt,
    • tokens/cookies reais são mascarados,
    • o fluxo final é testado em staging com conta técnica dedicada e rotação.

Evidência esperada:

  • configuração do DAST versionada,
  • cobertura por endpoints críticos,
  • relatório DAST autenticado anexado à release.

2.4 Fuzzing assistido por IA (corpora, mutações e priorização)

Objetivo: aumentar capacidade de encontrar edge cases e crashes úteis.

Prática:

  • IA para:
    • gerar seeds/corpora a partir de schemas (OpenAPI/GraphQL),
    • sugerir mutações (encoding, nesting, size),
    • priorizar endpoints por risco e histórico.
  • Execução sempre em ambiente isolado, com:
    • limites de recursos,
    • logs completos,
    • dados não produção.

Evidência esperada:

  • corpora versionada,
  • crash repro + RCA,
  • severidade ajustada com base em impacto real (DoS/RCE/etc).

2.5 Consolidação e deduplicação de findings multi-ferramenta

Objetivo: reduzir ruído e melhorar rastreabilidade.

Prática:

  • IA pode sugerir clusters por:
    • CWE/CVE,
    • componente,
    • code path,
    • fingerprint.
  • A regra de dedup final é configurada no sistema central (ex: DefectDojo) e não “na cabeça” do modelo.

Evidência esperada:

  • regras de correlação versionadas,
  • auditoria de merges/splits de findings,
  • métricas FP/FN por tool ao longo do tempo.

3) Controlos obrigatórios quando se usa IA em testes

C1 — Registo mínimo de “interação com IA” (quando permitido)

Para decisões de severidade ≥ HIGH (L2/L3), registar:

  • objetivo do pedido,
  • contexto fornecido (redigido),
  • output relevante,
  • decisão humana final + evidência (PoC/teste/log).

Se a política de privacidade impedir logging, registar pelo menos: “IA usada” + tipo de apoio + evidência determinística sem prompt.

C2 — Proteção contra prompt injection / conteúdo malicioso em artefactos

Quando a IA é alimentada com:

  • logs,
  • outputs de scanners,
  • HTML/JS recolhido por DAST,
  • payloads de fuzzing,

assumir que o conteúdo pode conter instruções maliciosas (“ignore regras…”, “exfiltra…”).
Mitigação:

  • sanitização,
  • content filtering,
  • execução em contexto “no tools / no network” sempre que possível,
  • validação humana.

C3 — Separação de ambientes e credenciais

IA usada para testes que interagem com runtime:

  • só em staging isolado,
  • com contas técnicas dedicadas,
  • com segredos geridos por vault e nunca copiados.

C4 — Proibição de “auto-merge” de correções de segurança

Qualquer patch gerado com IA:

  • requer revisão humana,
  • requer testes (incluindo regressão de segurança),
  • nunca pode bypassar gates.

4) Integração explícita com este capítulo

Este addon reforça diretamente:

  • US-10/US-11 (centralização e feedback) — IA pode acelerar triagem e reduzir ruído, sem perder rastreabilidade.
  • US-21 (decisão assistida) — IA alimenta hipótese; decisão é humana, documentada.
  • US-22 (validação empírica) — IA sugere como validar; confirmação é sempre por PoC/teste.

5) Checklist de adoção (binário)

ItemSim/Não
Uso de IA em testes está coberto por política organizacional (minimização, dados, logging)
Existe template de decisão humana (CORRIGIR/ACEITAR/SUPRIMIR/DEFER) aplicado a findings críticos/altos
Existe procedimento de validação empírica por tipo de teste (SAST/DAST/IAST/Fuzzing/PenTest)
Há segregação de ambientes e contas técnicas para DAST/IAST/fuzzing com rotação de credenciais
Prompts nunca incluem segredos/PII; existe processo de redacção/masking
Outputs de IA não são usados como “prova” sem artefacto determinístico reprodutível
Patches gerados por IA nunca fazem auto-merge e passam por revisão + testes
Existe métrica FP/FN e tempo de decisão/validação por severidade e por L1–L3

6) Notas finais

A IA pode ser um multiplicador brutal de produtividade em testes de segurança — se for usada como acelerador de análise e geração de artefactos, e não como substituto de evidência e responsabilidade.

O critério de sucesso não é “menos trabalho humano”, mas sim:

  • mais cobertura,
  • menos tempo até confirmação,
  • melhor rastreabilidade,
  • menos decisões não fundamentadas.