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 30 dias (L1), 90 dias (L2) ou 1 ano (L3)
  • 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 conforme a Política 19 §4.3 (180 / 90 / 45 dias em L1 / L2 / L3)
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)30 dias (L1), 90 dias (L2), 1 ano (L3)
Evidência de gate (pass/fail) em log de pipeline30 dias (L1), 90 dias (L2), 1 ano (L3)
Findings abertos na plataforma centralizadaAté fecho ou aceitação formal
Registo de exceções1 ano (L1), 2 anos (L2), 3 anos (L3) após encerramento (Política 06 §10)

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 fuzzing30 dias (L1), 90 dias (L2), 1 ano (L3)
Corpora de inputs (versionados)Permanente
Casos reproduzíveis (PoC) na plataforma de findingsAté fecho
Registo de exceções1 ano (L1), 2 anos (L2), 3 anos (L3) após encerramento (Política 06 §10)

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​

Conforme a escada única da Política 19 §4.3 (triagem: Critical 24 horas, High 48 horas, em qualquer nível):

SeveridadeL1L2L3
Critical30 dias7 dias3 dias
High90 dias30 dias15 dias
Medium180 dias90 dias45 dias
Low365 dias180 dias90 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 conforme a Política 05 §7, por nível e severidade (L1 90 dias; L2 60 / 30 dias; L3 30 / 14 dias; Critical 7 dias com plano, não aceitável em L3), 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