Pular para o conteúdo principal

✅ Validação de Requisitos de Segurança

A validação é o mecanismo que converte requisitos definidos em garantia observável. Não basta que um requisito exista no catálogo - é necessário confirmar que foi implementado, que funciona conforme esperado e que existe evidência auditável disso. Este documento prescreve como fazê-lo de forma sistemática, proporcional ao risco e integrada no ciclo de desenvolvimento.


1) Princípios orientadores

A validação de requisitos de segurança deve ser:

  • Sistemática - associada a momentos bem definidos do ciclo de vida, não ad-hoc;
  • Proporcional ao risco - requisitos de maior criticidade exigem validação mais profunda e independente;
  • Rastreável - cada validação produz ligação explícita entre requisito, método, resultado e evidência;
  • Repetível - automatizável ou documentada com suficiente detalhe para replicação;
  • Independente - sempre que possível, realizada por alguém fora da linha de implementação directa.

2) Métodos de validação

A escolha do método depende do tipo de requisito e da fase em que é aplicado. Os métodos não são mutuamente exclusivos - para requisitos críticos, a combinação de dois ou mais é a abordagem correcta.

Análise Estática (SAST)

Aplica-se a requisitos que se traduzem em padrões de código, configurações ou estruturas previsíveis. Deve ser executada durante o desenvolvimento e no pipeline de build, e deve verificar:

  • Presença de validações de entrada;
  • Uso de bibliotecas e algoritmos criptográficos aprovados;
  • Ausência de segredos hardcoded;
  • Controlo de fluxo de autenticação e autorização.

Os resultados devem ser correlacionados com os identificadores de requisitos do projecto (SEC-Lx-*).

Análise Dinâmica (DAST)

Aplica-se a requisitos que se manifestam no comportamento em execução. Deve ser usada em ambiente de teste ou pré-produção. Permite validar:

  • Exposição de endpoints e cabeçalhos de segurança;
  • Comportamento perante entradas maliciosas;
  • Ausência de erros ou divulgações indevidas;
  • Resposta a falhas de autenticação ou autorização mal configurada.

Testes funcionais de segurança

Complementam a análise dinâmica com verificação explícita dos critérios de aceitação de cada requisito. Devem incluir:

  • Verificação do comportamento esperado (caso positivo);
  • Tentativa de contornar o controlo (caso negativo);
  • Cobertura de casos-limite, restrições e falhas previstas.

Revisão técnica estruturada

Realizada por analistas, arquitectos ou elementos de segurança. Adequada para requisitos cujo controlo é distribuído ou implícito - segregação lógica, dependências externas, controlo de sessão transversal. Deve ocorrer após marcos relevantes: release candidate, pull request crítico, auditoria interna.

Validação contínua em CI/CD

Requisitos críticos devem estar ligados a mecanismos de bloqueio no pipeline:

  • Avaliações automáticas de código e configuração;
  • Rejeição de builds que violem critérios mínimos (ausência de MFA, logging, segredos expostos);
  • Revalidação com cada alteração de risco (nova funcionalidade, nova integração).

3) Quando validar

Fase SDLCObjectivo da validaçãoMétodo primário
Planeamento e definiçãoConfirmação da aplicabilidade dos requisitosAnálise técnica + validação manual
DesenvolvimentoDetecção precoce de incumprimentoSAST + revisão de código
TestesVerificação do comportamento previstoTestes funcionais + DAST
Pré-release / entregaValidação de conformidade totalValidação cruzada + CI/CD gates
Produção / operaçãoMonitorização contínua de requisitos activosRevalidação, logging, alertas

4) Plano de validação por domínio

Para cada requisito do catálogo canónico são indicados: a tag operacional de referência, o nível mínimo de aplicação, o método de validação recomendado e a evidência esperada.

Nota: A tag operacional usa SEC-Lx-* com Lx substituído pelo nível efectivo do projecto. Exemplo: SEC-Lx-AUT-MFASEC-L2-AUT-MFA num projecto L2.


AUT - Autenticação e Identidade

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
AUT-001SEC-Lx-AUT-MFAL2+Tentar login sem segundo factor. Confirmar rejeição e logs de falha.Log de autenticação falhada sem MFA. Captura do bloqueio.
AUT-002SEC-Lx-AUT-PWDL1+Rever política activa. Tentar definir password inválida. Confirmar rejeição.Política documentada. Log de erro ou rejeição.
AUT-003SEC-Lx-AUT-BRUTEL1+Simular tentativas repetidas falhadas. Confirmar bloqueio, CAPTCHA ou atraso progressivo.Log com contagem de falhas. Evidência de bloqueio ou atraso.
AUT-004SEC-Lx-AUT-LOGOUTL1+Efectuar logout. Tentar reutilizar sessão ou token. Confirmar rejeição.Log de sessão revogada. Erro de autenticação na reutilização.
AUT-005SEC-Lx-AUT-IDLEL1+Simular inactividade pelo período configurado. Confirmar expiração e redirect.Log de timeout. Captura de expiração automática.
AUT-006SEC-Lx-AUT-CREDL1+Validar hashing com salt. Verificar ausência de credenciais em claro em armazenamento e transmissão.Output de configuração. Resultado de scan. Ausência em repositório.
AUT-007SEC-Lx-AUT-FEDL2+Simular login federado via SAML/OIDC. Confirmar fluxo completo e logging.Log de autenticação via IdP externo. Captura de login bem-sucedido.
AUT-008SEC-Lx-AUT-STEPUPL2+Simular acção sensível. Confirmar exigência de factor adicional.Captura de step-up. Log associado à acção crítica.
AUT-009SEC-Lx-AUT-CHANGEL1+Tentar alterar credenciais sem reautenticação. Confirmar bloqueio.Log da tentativa bloqueada. Evidência de verificação da sessão activa.
AUT-010SEC-Lx-AUT-ALERTL2+Simular login anómalo. Confirmar notificação ao utilizador e registo.Exemplo de notificação enviada. Log do evento crítico detectado.

ACC - Controlo de Acesso

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
ACC-001SEC-Lx-ACC-RBACL1+Testar acesso com role de privilégio reduzido a recurso restrito. Confirmar rejeição.Log de rejeição. Mapeamento de roles documentado.
ACC-002SEC-Lx-ACC-PRIVL1+Auditar permissões de contas de utilizador e serviço. Confirmar ausência de privilégios desnecessários.Relatório de auditoria de permissões.
ACC-003SEC-Lx-ACC-BLOCKL1+Tentar acesso não autorizado. Confirmar bloqueio e registo com contexto suficiente.Log de rejeição com dados de contexto.
ACC-004SEC-Lx-ACC-SEPL1+Verificar separação efectiva de perfis. Confirmar que acções de cada perfil são rastreáveis.Logs com perfil identificado. Teste cruzado de perfis.
ACC-005SEC-Lx-ACC-APIL1+Testar endpoints sem autenticação/autorização. Confirmar rejeição com código adequado.Log de rejeição. Testes automatizados de endpoints.
ACC-006SEC-Lx-ACC-DATAL1+Tentar acesso a dados críticos com role não autorizado. Confirmar bloqueio e log.Evidência de controlo efectivo. Log do evento.
ACC-007SEC-Lx-ACC-MODELL2+Verificar existência de modelo de permissões revisto e documentado.Documentação do modelo. Registo de revisão datada.
ACC-008SEC-Lx-ACC-REVOKEL1+Revogar acesso. Testar imediatamente após revogação. Confirmar falha.Log de tentativa falhada após revogação. Timestamp de revogação.
ACC-009SEC-Lx-ACC-ABACL3Testar decisão de acesso com atributos distintos. Confirmar aplicação de política dinâmica.Logs com avaliação de atributos. Teste com variação de contexto.
ACC-010SEC-Lx-ACC-REVIEWL2+Verificar existência de processo de revisão periódica. Confirmar remoção de permissões obsoletas.Registos de revisão datados. Evidência de limpeza de permissões.

LOG - Registo e Monitorização

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
LOG-001SEC-Lx-LOG-EVENTSL1+Rever configuração de logging. Confirmar cobertura de acessos, alterações e falhas críticas.Logs auditáveis com eventos mapeados por tipo e contexto.
LOG-002SEC-Lx-LOG-ATTRSL1+Analisar estrutura de logs. Confirmar presença de quem, quando, o quê e onde em cada entrada.Amostras de log com todos os atributos obrigatórios.
LOG-003SEC-Lx-LOG-INTEGL1+Tentar alterar log em disco. Verificar mecanismos de protecção (hash, write-once, syslog remoto).Evidência de WORM, syslog remoto ou mecanismo de detecção de tamper.
LOG-004SEC-Lx-LOG-REVIEWL2+Confirmar existência de processo de análise periódica documentado e executado.Registo de análise datado. Procedimento documentado.
LOG-005SEC-Lx-LOG-RETAINL1+Verificar período de retenção efectivo contra política definida.Configuração de retenção. Evidência de logs no período exigido.
LOG-006SEC-Lx-LOG-CENTRALL2+Confirmar envio para agregador central. Verificar configuração de forwarding.Visualização centralizada com logs por aplicação.
LOG-007SEC-Lx-LOG-ALERTL2+Gerar evento anómalo. Confirmar disparo de alerta com threshold e canal configurados.Log do alerta disparado com timestamp e detalhe.
LOG-008SEC-Lx-LOG-FAILL2+Desactivar ou bloquear o sistema de logging. Confirmar que falha é detectada e alertada.Alerta de falha de logging. Log da detecção.
LOG-009SEC-Lx-LOG-IRL2+Simular incidente ou revisão forense. Confirmar que logs têm detalhe suficiente para reconstrução.Capacidade demonstrada de reconstrução de timeline de evento.
LOG-010SEC-Lx-LOG-BIZL3Verificar registo de eventos críticos de negócio (transacções, autorizações de alto impacto).Logs com eventos de negócio identificados e rastreáveis.

SES - Sessões e Estado

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
SES-001SEC-Lx-SES-IDLEL1+Simular inactividade pelo período configurado. Confirmar expiração e redirect.Log de timeout. Captura de sessão terminada.
SES-002SEC-Lx-SES-LOGOUTL1+Efectuar logout. Tentar reutilizar token. Alterar password e tentar usar token anterior.Erro de autenticação na reutilização. Log de invalidação.
SES-003SEC-Lx-SES-ENTROPYL1+Analisar tokens gerados. Confirmar entropia adequada e ausência de padrão previsível.Análise de tokens. Ausência de previsibilidade demonstrada.
SES-004SEC-Lx-SES-TLSL1+Interceptar tráfego com proxy. Confirmar que tokens apenas transitam por TLS. Verificar flags de cookies.Headers de resposta. Flags Secure e HttpOnly confirmados.
SES-005SEC-Lx-SES-BINDL2+Alterar IP ou user-agent durante sessão activa. Confirmar terminação ou exigência de revalidação.Log de terminação de sessão por mudança de contexto.
SES-006SEC-Lx-SES-REVOKEL1+Revogar sessão via interface de gestão. Testar imediatamente após revogação.Erro de autenticação imediato. Log de revogação explícita.
SES-007SEC-Lx-SES-TTLL2+Verificar TTL máximo configurado. Tentar manter sessão para além do limite.Configuração de TTL. Evidência de expiração forçada.
SES-008SEC-Lx-SES-JWTL2+Inspecionar JWTs. Confirmar claims de âmbito e expiração. Testar token após revogação.JWT decoded com claims correctos. Falha após revogação.

VAL - Validação de Dados

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
VAL-001SEC-Lx-VAL-INPUTL1+Rever código de validação. Enviar inputs inválidos (tipo, tamanho, formato). Confirmar rejeição.Testes de input inválido. Código com validações. Logs de rejeição.
VAL-002SEC-Lx-VAL-WLISTL1+Tentar enviar valores fora da lista permitida. Confirmar rejeição e ausência de tratamento implícito.Código com whitelist explícita. Testes com valores não previstos.
VAL-003SEC-Lx-VAL-SCHEMAL2+Enviar payloads malformados ou com campos em falta. Confirmar rejeição automática.Rejeições consistentes. Testes de contrato.
VAL-004SEC-Lx-VAL-SQLIL1+Rever uso de prepared statements. Executar SAST e testes de injecção SQL.Relatórios de scanner. Ausência de concatenação em queries.
VAL-005SEC-Lx-VAL-XSSL1+Testar output em campos renderizados no browser. Confirmar escaping correcto.Testes com payloads XSS. Sanitização de output observável.
VAL-006SEC-Lx-VAL-SAFEL1+Forçar erro de validação. Confirmar que mensagem ao cliente não expõe lógica interna.Mensagens de erro genéricas. Ausência de detalhe técnico no cliente.
VAL-007SEC-Lx-VAL-AUTOL2+Executar testes automatizados com payloads maliciosos (XSS, SQLi, path traversal).Relatórios de execução. Cobertura de casos documentada.

ERR - Gestão de Erros

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
ERR-001SEC-Lx-ERR-LEAKL1+Provocar erros intencionais. Confirmar que cliente recebe mensagem abstrata sem dados internos.Resposta genérica ao cliente. Log interno detalhado separado.
ERR-002SEC-Lx-ERR-MSGL1+Verificar todas as superfícies de erro. Confirmar ausência de stack trace ou informação técnica.Captura de mensagens de erro em diferentes cenários.
ERR-003SEC-Lx-ERR-ENUML1+Testar recursos existentes e inexistentes. Confirmar respostas de erro idênticas (sem enumeração).Respostas iguais para recursos existentes e inexistentes.
ERR-004SEC-Lx-ERR-I18NL1+Verificar mensagens em diferentes locales. Confirmar ausência de conteúdo executável.Mensagens traduzidas sem referências técnicas ou executáveis.
ERR-005SEC-Lx-ERR-CENTRALL2+Rever arquitectura de tratamento de erros. Confirmar centralização.Código com handler centralizado. Ausência de tratamento ad-hoc disperso.
ERR-006SEC-Lx-ERR-TESTL2+Executar testes automáticos de cenários de erro. Confirmar que erros são tratados sem fuga.Cobertura de testes de erro. Relatório de execução.
ERR-007SEC-Lx-ERR-LOGL2+Rever logs de erro. Confirmar ausência de dados pessoais, tokens ou credenciais.Logs sem dados sensíveis. IDs contextuais pseudonimizados.

CFG - Configuração Segura

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
CFG-001SEC-Lx-CFG-DEBUGL1+Tentar aceder a endpoints de debug, tracing ou interfaces admin. Confirmar desactivação ou protecção.Resposta 403/404 ou exigência de autenticação.
CFG-002SEC-Lx-CFG-ENVL1+Verificar separação de ambientes. Confirmar que deploys e testes só ocorrem em ambientes segregados.Logs com ambiente identificado. Confirmação de segregação.
CFG-003SEC-Lx-CFG-HARDL1+Executar scan de segredos no repositório e no código. Confirmar ausência de hardcoded secrets.Relatório de scan limpo. Ausência de segredos no histórico.
CFG-004SEC-Lx-CFG-EXTL1+Verificar que configuração é externa ao código. Confirmar permissões restritivas no repositório de configuração.Configuração externa e versionada. Permissões auditadas.
CFG-005SEC-Lx-CFG-STARTL2+Remover parâmetro obrigatório. Confirmar que arranque falha com erro explícito.Log de falha de arranque com causa identificada.
CFG-006SEC-Lx-CFG-VAULTL2+Rever gestão de segredos. Confirmar uso de cofre e ausência local.Configuração do cofre. Políticas de acesso. Ausência de segredos locais.
CFG-007SEC-Lx-CFG-DRIFTL3Alterar configuração crítica fora do processo normal. Confirmar detecção e alerta.Alerta de drift. Log de alteração inesperada.

API - Segurança de APIs

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
API-001SEC-Lx-API-AUTHL1+Testar endpoints sem credenciais. Confirmar rejeição 401/403.Logs de rejeição. Testes automatizados de endpoints.
API-002SEC-Lx-API-EXPOSEL1+Inventariar endpoints expostos em produção. Confirmar ausência de debug ou legacy.Inventário de endpoints activos. Ausência de endpoints não intencionais.
API-003SEC-Lx-API-INPUTL1+Enviar payloads inválidos. Confirmar rejeição com código adequado.Logs de rejeição. Testes com payloads malformados.
API-004SEC-Lx-API-RATEL2+Executar burst de chamadas. Confirmar resposta 429 ou bloqueio temporário.Evidência de rate limiting em runtime ou logs.
API-005SEC-Lx-API-TLSL1+Verificar certificados e versão TLS. Confirmar cabeçalhos de segurança activos.Scanner TLS. Headers de resposta.
API-006SEC-Lx-API-DEPSL1+Verificar SBOM e dependências documentadas. Confirmar auditoria de vulnerabilidades conhecidas.SBOM. Relatório de auditoria de dependências.
API-007SEC-Lx-API-LOGL2+Verificar logs de chamadas externas. Confirmar presença de dados essenciais.Logs com origem, destino, resultado e timestamp.

INT - Mensagens e Integrações

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
INT-001SEC-Lx-INT-VALL1+Enviar mensagem malformada a integração. Confirmar rejeição ou tratamento controlado.Evidência de rejeição. Sem processamento cego de mensagens inválidas.
INT-002SEC-Lx-INT-AUTHL1+Testar integração sem token ou com token inválido. Confirmar rejeição.Log de rejeição. Teste de token expirado.
INT-003SEC-Lx-INT-TLSL1+Interceptar tráfego entre sistemas. Confirmar cifra TLS activa. Verificar versões suportadas.Scanner de TLS. Logs de conexão cifrada.
INT-004SEC-Lx-INT-PROTOL1+Tentar comunicação por protocolo inseguro. Confirmar rejeição ou redirect.Erro ou redirect para protocolo seguro. Log de rejeição.
INT-005SEC-Lx-INT-SIGNL2+Enviar mensagem com assinatura inválida ou em falta. Confirmar rejeição e log.Evidência de verificação de integridade. Log de falha de validação.
INT-006SEC-Lx-INT-ORIGINL2+Enviar mensagem de origem não autorizada. Confirmar rejeição.Log de rejeição com origem identificada. Lista de origens autorizadas.
INT-007SEC-Lx-INT-ANOMALYL3Simular padrão de comunicação anómalo. Confirmar alerta.Alerta disparado. Log com contexto do padrão detectado.
INT-008SEC-Lx-INT-REVIEWL3Verificar documentação de integrações e cláusulas de segurança nos contratos.Documentação de integração. Cláusulas contratuais de segurança.

REQ - Definição de Requisitos

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
REQ-001SEC-Lx-REQ-INCL1+Verificar existência de requisitos de segurança em backlog/documentação.Requisitos marcados e rastreáveis no backlog.
REQ-002SEC-Lx-REQ-REVL1+Verificar existência de processo de revisão executado e documentado.Registo de revisão com responsável identificado.
REQ-003SEC-Lx-REQ-RISKL1+Confirmar mapeamento entre requisitos e nível de criticidade.Matriz de aplicabilidade actualizada.
REQ-004SEC-Lx-REQ-VERL1+Verificar histórico de alterações ao catálogo do projecto.Controlo de versões activo. Histórico disponível.
REQ-005SEC-Lx-REQ-TML2+Confirmar que alterações relevantes desencadeiam revisão de threat model.Registo de decisão associado à alteração.
REQ-006SEC-Lx-REQ-TRACEL2+Verificar rastreabilidade requisito → ameaça → teste.Matriz ou ferramenta com ligações explícitas.
REQ-007SEC-Lx-REQ-ITERL2+Confirmar existência de ciclos de revisão com equipas.Registos de revisão iterativa datados.

DST - Distribuição de Artefactos

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
DST-001SEC-Lx-DST-REPOL1+Testar acesso a repositório sem autenticação. Confirmar rejeição e logs activos.Rejeição de acesso anónimo. Logs de acesso.
DST-002SEC-Lx-DST-PUBL2+Verificar processo de aprovação para publicação pública. Confirmar documentação.Registo de aprovação. Documentação do processo.
DST-003SEC-Lx-DST-SIGNL2+Verificar assinatura ou checksum dos artefactos. Confirmar verificação automatizada.Artefactos assinados. Script ou pipeline de verificação.
DST-004SEC-Lx-DST-SBOML2+Confirmar geração e anexação de SBOM por release.SBOM disponível e rastreável por versão.
DST-005SEC-Lx-DST-ACCESSL2+Verificar que apenas utilizadores e automações autorizados acedem a artefactos de produção.Políticas de acesso. Auditoria de permissões.
DST-006SEC-Lx-DST-PIPEL2+Tentar deploy manual em produção. Confirmar bloqueio.Evidência de pipeline como único caminho de deploy.
DST-007SEC-Lx-DST-REVOKEL1+Verificar processo de remoção e notificação para artefactos comprometidos.Registo de revogação. Evidência de notificação.

IDE - Ferramentas de Desenvolvimento

IDTag operacionalNívelMétodo de validaçãoEvidência esperada
IDE-001SEC-Lx-IDE-AUTHL1+Verificar lista de ferramentas e IDEs autorizadas e se está actualizada.Lista mantida. Evidência de aprovação das ferramentas em uso.
IDE-002SEC-Lx-IDE-UPDL1+Verificar versões de IDEs e ferramentas em uso. Confirmar actualizações aplicadas.Histórico de actualizações. Versões actuais documentadas.
IDE-003SEC-Lx-IDE-GENL2+Rever amostras de código gerado. Confirmar existência de processo de revisão antes de integração.Evidência de revisão de código gerado. Pull request com revisão documentada.
IDE-004SEC-Lx-IDE-EXTL1+Verificar lista de extensões instaladas. Confirmar que são de fontes reconhecidas.Lista de extensões com origem documentada.
IDE-005SEC-Lx-IDE-PERML2+Verificar permissões concedidas a extensões. Confirmar que apenas as necessárias estão activas.Permissões revistas. Execução sandboxed confirmada.
IDE-006SEC-Lx-IDE-LOCALL2+Verificar controlo sobre uso de ambientes locais. Confirmar existência de logs ou proxy quando aplicável.Política de uso de ambientes locais. Logs de rede ou proxy.

5) Resultados esperados da validação

Cada requisito validado deve produzir:

  • Evidência de execução - relatório, log, artefacto de validação, captura de ecrã;
  • Resultado - conforme / não conforme / parcial, com contexto suficiente para decisão;
  • Ligação ao identificador - tag operacional do projecto (SEC-L2-AUT-MFA) e ID canónico (AUT-001);
  • Medida correctiva, quando aplicável - acção, responsável, prazo.

6) Melhoria contínua

A validação deve ser incorporada num ciclo de melhoria contínua, com os métodos:

  • Revistos com base em incidentes ou findings reais - um finding recorrente indica lacuna no método, não apenas no controlo;
  • Actualizados com novas técnicas ou alterações ao catálogo;
  • Automatizados sempre que possível, para garantir cobertura consistente e escalável;
  • Monitorizados com indicadores - percentagem de requisitos validados por release, tempo médio de detecção de não conformidade.

Referências cruzadas

DocumentoRelação
Catálogo Base de RequisitosDefine os requisitos e critérios de aceitação a validar
Taxonomia e RastreabilidadeDefine IDs canónicos e tags operacionais usadas neste documento
Matriz de Controlos por RiscoIndica aplicabilidade por domínio e nível de risco
Rastreabilidade e ControlosModelo de matriz risco → requisito → controlo → evidência
Gestão de ExcepçõesProcesso para requisitos que não podem ser validados ou cumpridos