Pular para o conteúdo principal

Política de DAST e Fuzzing

1. Objetivo

Esta política define os requisitos mínimos para a execução de testes dinâmicos de segurança (DAST) e fuzzing em aplicações classificadas como L2 ou L3 no modelo SbD-ToE.

O objetivo é garantir que vulnerabilidades comportamentais e de tratamento de input são detetadas antes da promoção a produção, complementando os mecanismos de análise estática (SAST) com validação em runtime.

DAST e fuzzing são técnicas complementares:

  • DAST - simula o comportamento de um utilizador ou atacante externo sobre a aplicação em execução, identificando falhas que só se manifestam em runtime;
  • Fuzzing - injeta inputs malformados, inesperados ou aleatórios em endpoints críticos, revelando falhas de parsing, crashes e comportamentos anómalos não cobertos por testes planeados.

2. Âmbito e proporcionalidade

TécnicaL1L2L3
DASTManual/exploratório (opcional)Automático autenticadoAutomático + cobertura ampliada
FuzzingOpcionalEndpoints prioritáriosEndpoints críticos obrigatórios
IASTNão aplicávelRecomendadoObrigatório

Esta política é obrigatória para L2 e L3. Para L1, as práticas aqui descritas são recomendadas mas não obrigatórias.


3. DAST - Testes Dinâmicos de Segurança

3.1 Quando executar

EventoObrigatoriedade
Promoção de build para stagingObrigatório
Antes de qualquer release para produçãoObrigatório
Após alteração de arquitetura ou superfície de exposiçãoObrigatório
Execução periódica sobre versão em produçãoRecomendado (trimestral)

3.2 Pré-requisitos de ambiente

  • O ambiente de execução deve ser isolado - DAST nunca deve ser executado em produção;
  • Os dados do ambiente de teste devem ser fictícios ou mascarados - nunca dados reais de utilizadores;
  • O ambiente deve ser equivalente a produção em termos de versões, configurações e dependências;
  • O ambiente não deve ser partilhado com outros projetos durante a execução do scan.

3.3 Configuração obrigatória

Autenticação:

  • Login flow configurado na ferramenta com sessão autenticada válida
  • Credenciais de teste segregadas - conta dedicada, nunca conta de utilizador real
  • Credenciais armazenadas como secrets no pipeline - nunca em texto simples ou repositório
  • Sessão com token de curta duração (TTL adequado à duração do scan)

Scope:

  • Lista de URLs/endpoints incluídos definida e versionada
  • Lista de exclusões explícita e justificada (ex: endpoints de logout, reset de password, envio de notificações externas, operações destrutivas irreversíveis)
  • Configuração de scope versionada no repositório junto à definição do pipeline

Integração no pipeline:

  • Job DAST executado após deploy em staging e antes de promoção a produção
  • Relatório correlacionado com commit SHA e release tag
  • Relatório arquivado como artefacto do pipeline com retenção mínima de 90 dias
  • Resultado do DAST rastreável no registo de release

3.4 Critérios de bloqueio e resposta

SeveridadeAção
CriticalBloqueia automaticamente; escala imediata para AppSec Engineer
HighBloqueia automaticamente; requer correção validada ou exceção formal
MediumNão bloqueia; registo obrigatório na plataforma centralizada; SLA de 30 dias
Low / InfoNão bloqueia; registo; revisão trimestral
Separação entre sinal automático e decisão humana

O pipeline reporta o resultado (sinal automático). A decisão de override ou exceção é sempre humana e documentada - nunca implícita ou por timeout. Todo o override requer aprovação explícita de AppSec Engineer com registo de rationale e prazo de validade máximo.

3.5 Artefactos produzidos

ArtefactoRetenção mínima
Relatório DAST (HTML/JSON/SARIF)90 dias
Evidência de gate (pass/fail) em log de pipeline90 dias
Findings abertos na plataforma centralizadaAté fecho ou aceitação formal
Registo de exceções1 ano

4. Fuzzing - Testes de Inputs Inesperados

4.1 Quando executar

EventoObrigatoriedade (L2)
Por release majorObrigatório
Periodicidade regularObrigatório (trimestral)
Após adição de novo endpoint com parsing de inputObrigatório
Após alteração de lógica de validação ou deserializaçãoRecomendado

4.2 Seleção de targets

Targets obrigatórios para L2:

  • Endpoints que recebem input externo não estruturado (formulários, JSON livre, query params)
  • APIs com parsing de formatos de dados (JSON, XML, multipart, CSV, binário)
  • Endpoints de upload de ficheiros
  • Endpoints de pesquisa com parâmetros dinâmicos
  • Endpoints com lógica de deserialização ou avaliação de expressões

Exclusões por defeito (inclusão requer justificação explícita):

  • Endpoints de logout ou invalidação de sessão
  • Endpoints com envio de notificações externas (email, SMS, webhooks)
  • Endpoints com rate limiting agressivo sem instância de teste dedicada

4.3 Configuração obrigatória

Ambiente:

  • Instância da aplicação isolada para fuzzing - sem ligação a sistemas externos reais
  • Monitorização ativa durante execução: CPU, memória, crashes, logs de erro
  • Mecanismo de deteção de crashes e respostas anómalas configurado

Targets e perfis:

  • Lista de targets definida, versionada e aprovada por AppSec
  • Perfis de fuzzing (dicionários, corpora, estratégias) versionados no repositório
  • Corpora de inputs mantidos e atualizados entre execuções

Resultados:

  • Anomalias registadas com PoC mínima reproduzível (input exato, endpoint, versão da aplicação)
  • Relatório com casos reproduzíveis arquivado

4.4 Critérios de severidade

ResultadoSeveridadeAção
Crash da aplicação / Out-of-MemoryCriticalBloqueia release; escala AppSec
Exposição de dados internos ou stack traceHighBloqueia release
Comportamento anómalo controladoMediumRegisto e triagem
Timeout ou degradação de performanceLowRegisto; análise posterior

4.5 Artefactos produzidos

ArtefactoRetenção mínima
Relatório de fuzzing90 dias
Corpora de inputs (versionados)Permanente
Casos reproduzíveis (PoC) na plataforma de findingsAté fecho
Registo de exceções1 ano

5. Gestão centralizada de findings

Todos os findings de DAST e fuzzing são consolidados na plataforma centralizada de gestão de segurança, em conjunto com os resultados de SAST, IAST e SCA.

Metadados obrigatórios por finding:

CampoDescrição
Ferramenta de origemDAST / Fuzzing / SAST / IAST / SCA
SeveridadeCritical / High / Medium / Low / Info
CWE e/ou CVEQuando aplicável
Commit SHA e release tagRastreabilidade ao artefacto
EstadoAberto / Em correção / Aceite / Suprimido
Owner de remediaçãoResponsável pela correção
SLA de resoluçãoConforme tabela da secção 5.1

5.1 SLAs de resolução

SeveridadeSLA
Critical24 horas
High7 dias
Medium30 dias
Low90 dias

6. Framework de decisão para findings (Checklist C1)

Quando um finding bloqueia o pipeline e a equipa avalia override ou exceção, a decisão deve ser documentada com os seguintes critérios:

  • Exploitabilidade - o finding é exploitável no contexto atual? De que forma?
  • Mitigações existentes - existem controlos compensatórios ativos?
  • Impacto de negócio - qual o impacto real se o finding for explorado?
  • Remediação - quando e como será corrigido?
  • Decisão - CORRIGIR / ACEITAR COM PRAZO / SUPRIMIR (com justificação)
  • Aprovação - AppSec Engineer (obrigatório para High e Critical)
aviso

A decisão de suprimir um finding Critical requer aprovação adicional do responsável de segurança (CISO ou equivalente) e prazo máximo de 7 dias.


7. Exceções a esta política

Toda exceção à presente política requer:

  1. Justificação técnica documentada
  2. Aprovação de AppSec Engineer
  3. Mitigação compensatória definida e ativa
  4. Prazo de validade máximo: 30 dias (renovável com nova aprovação explícita)
  5. Registo formal no repositório de exceções do projeto

Exceções a findings de severidade Critical têm prazo máximo de 7 dias e requerem aprovação adicional do responsável de segurança.


8. Responsabilidades

RoleResponsabilidade
AppSec EngineerDefinição de scope, aprovação de exceções, triagem de findings High e Critical
QA / TestesExecução de DAST e fuzzing, definição e manutenção de targets e corpora
DevOps / SREIntegração no pipeline, manutenção do ambiente de staging isolado
DeveloperCorreção de findings, participação na triagem e análise de contexto
Gestão de ProdutoAprovação de release, aceitação formal de risco residual

9. Revisão e auditoria

Esta política deve ser revista anualmente ou após qualquer um dos seguintes eventos:

  • Alteração significativa de arquitetura ou superfície de exposição da aplicação
  • Incidente de segurança relacionado com inputs ou comportamento em runtime
  • Alteração do nível de risco classificado da aplicação
  • Alteração regulatória ou normativa relevante

A evidência de execução desta política (relatórios, logs de gate, registos de exceção) deve ser auditável por funções de GRC e por auditores externos.


10. Referências normativas e técnicas

ReferênciaRelevância
SbD-ToE Cap. 10 - Testes de SegurançaRequisitos de DAST, fuzzing, gestão de findings
SbD-ToE Cap. 07 - CI/CD SeguroIntegração de gates de segurança no pipeline
SbD-ToE Cap. 02 - Requisitos de SegurançaRastreabilidade requisito → teste → evidência
OWASP Testing Guide (OTG)Metodologia de testes dinâmicos
OWASP Web Security Testing Guide (WSTG)Cobertura de categorias de vulnerabilidades
NIST SP 800-115Technical Guide to Information Security Testing
CWE Top 25Categorização de weaknesses
SSDF PW.8Práticas de testes de segurança no SDLC