Pular para o conteúdo principal

🧪 Validação dos Requisitos de Segurança

Este documento constitui uma extensão normativa prática do Capítulo 2, focada não na definição dos requisitos de segurança, mas na sua validação concreta.

É o equivalente a perguntar:
“Dado o requisito REQ-XYZ, como o validamos na prática, com que profundidade, em que contexto, e com que evidência?”

O objetivo é garantir que todos os requisitos definidos:

  • São efetivamente implementados;
  • São verificáveis por métodos objetivos e rastreáveis;
  • Produzem evidência concreta e auditável;
  • Podem ser mapeados aos ciclos de desenvolvimento, controlo de qualidade e auditoria.

🔐 AUT - Autenticação e Gestão de Identidade

IDTagNome resumidoNívelValidação RecomendadaEvidência Esperada
AUT-001SEC-Lx-AUT-MFAMFA obrigatórioL2+Verificar exigência de MFA em ambiente real. Tentar login sem segundo fator. Confirmar logs de falha e fallback.Captura de ecrã ou log de falha de autenticação sem MFA.
AUT-002SEC-Lx-AUT-PWDPolítica de passwords seguraL1+Rever política ativa. Tentar alterar password inválida. Confirmar rejeição e logging.Exemplo de política. Log de erro ou alerta de falha.
AUT-003SEC-Lx-AUT-BRUTEProteção contra brute forceL2+Simular várias tentativas erradas. Confirmar bloqueio, CAPTCHA ou atraso.Log com contagem de falhas. Evidência de bloqueio.
AUT-004SEC-Lx-AUT-LOGOUTLogout revoga sessãoL1+Efetuar logout. Tentar reusar sessão. Confirmar falha e pedido de nova autenticação.Captura de revalidação ou erro. Log de sessão revogada.
AUT-005SEC-Lx-AUT-IDLETimeout por inatividadeL2+Simular inatividade. Confirmar expiração da sessão e redirect.Log de timeout ou sessão terminada automaticamente.
AUT-006SEC-Lx-AUT-STORAGEProteção de credenciaisL1+Validar uso de hashing + salting e TLS. Verificar ausência de senhas em claro.Excertos de configuração, outputs de scan ou inspeção manual.
AUT-007SEC-Lx-AUT-FEDSuporte a autenticação federadaL3Simular login federado via SAML/OIDC. Confirmar fluxo e logging.Log de autenticação via fornecedor externo. Captura de login bem-sucedido.
AUT-008SEC-Lx-AUT-REAUTHReautenticação para ações críticasL3Simular ação sensível (ex: alteração de perfil). Confirmar exigência de MFA adicional ou password.Captura de reautenticação. Log associado à ação.
AUT-009SEC-Lx-AUT-CHANGEReautenticação prévia à alteração de cred.L2+Alterar credenciais sem sessão válida. Confirmar bloqueio ou erro.Log da tentativa bloqueada. Evidência de sessão verificada.
AUT-010SEC-Lx-AUT-ALERTAlertas de segurança para eventos críticosL3Simular login anómalo. Confirmar notificação ao utilizador e registo no sistema.Exemplo de notificação enviada. Log do evento crítico detetado.

🔐 ENC - Dados Sensíveis e Criptografia

IDTagNome resumidoNívelValidação RecomendadaEvidência Esperada
ENC-001SEC-Lx-ENC-TRANSEncriptação de dados em trânsitoL1+Rever configuração de TLS. Testar downgrade de protocolo. Interceptar tráfego com proxy para verificar cifragem.TLS ativo. Resultado de scanner. Logs de conexão cifrada.
ENC-002SEC-Lx-ENC-RESTEncriptação de dados em repousoL2+Verificar configuração de bases de dados, discos, buckets, backups. Rever políticas de encriptação.Provas de configuração (ex: screenshots, policies, outputs de comandos).
ENC-003SEC-Lx-ENC-ALGUso de algoritmos criptográficos robustosL2+Rever código e configs. Verificar ausência de algoritmos fracos (ex: MD5, RC4). Validar presença de AES, RSA, etc.Auditoria de código/config. Saída de scanner de criptografia.
ENC-004SEC-Lx-ENC-HASHProteção de passwords com hashing seguroL1+Verificar uso de algoritmos como bcrypt, PBKDF2, scrypt. Confirmar uso de sal e parâmetros de iteração suficientes.Código com funções de hashing. Logs ou base de dados com hashes adequados.
ENC-005SEC-Lx-ENC-KEYMGMTGestão segura de chaves e segredosL3Verificar uso de cofres de segredos (ex: Vault, AWS Secrets Manager). Confirmar rotação e acesso mínimo.Configuração do cofre. Políticas de acesso. Log de acesso a segredos.
ENC-006SEC-Lx-ENC-EXPORTPrevenção de exportação indevida de dadosL2+Tentar extrair dados sensíveis através de logs, dumps, erros ou endpoints. Rever políticas de exportação e anonimização.Logs controlados. Dumps limpos. Evidência de anonimização ou bloqueio.
ENC-007SEC-Lx-ENC-LOGMascaramento de dados sensíveis em logsL1+Forçar erro com dados sensíveis. Rever logs e confirmar ausência ou máscara de dados (ex: passwords, tokens, cartões).Captura de logs limpos. Política de logging aplicada.
ENC-008SEC-Lx-ENC-ROTATERotação periódica de segredos e chavesL3Rever configuração de rotação automática. Verificar data de criação/expiração dos segredos. Simular rotação manual.Evidência de rotação. Logs de expiração/substituição. Política de validade.
ENC-009SEC-Lx-ENC-LEAKDeteção de segredos expostosL2+Executar ferramentas de scanning de segredos em repositórios (ex: TruffleHog, GitLeaks). Rever histórico e validação por branch/tag.Relatório de scan. Issues abertas. Logs de deteção e correção.
ENC-010SEC-Lx-ENC-BROWSERPrevenção de caching de dados sensíveis no browserL2+Verificar headers HTTP (ex: Cache-Control, Pragma, Expires). Testar comportamento com ferramentas de inspeção e refresh do browser.Headers corretos. Captura de rede. Confirmação de comportamento.

⚙️ CFG - Configuração Segura e Gestão de Parâmetros

IDTagNome resumidoNívelValidação RecomendadaEvidência Esperada
CFG-001SEC-Lx-CFG-CENTRALConfiguração centralizada e rastreávelL2+Verificar que configurações estão em repositório ou sistema central. Auditar existência de histórico e versionamento.Ficheiros versionados. Histórico de alterações. Config server ou repo de config.
CFG-002SEC-Lx-CFG-NOCODESeparação entre código e configuraçãoL1+Rever código para ausência de parâmetros embutidos. Confirmar uso de variáveis externas, ficheiros ou cofres.Ausência de hardcoded configs. Uso de .env, appsettings.json, Vault, etc.
CFG-003SEC-Lx-CFG-NOVARAusência de segredos em variáveis públicasL1+Validar que variáveis com segredos não estão expostas em UI, consola ou ambiente público.Auditoria de ambiente. Evidência de limpeza de output.
CFG-004SEC-Lx-CFG-ENVSeparação de configurações por ambienteL2+Confirmar que existem configurações distintas para dev, staging, prod. Rever uso de feature flags e config por contexto.Configs por ambiente. Feature flags ou ficheiros separados.
CFG-005SEC-Lx-CFG-DEFAULTRemoção de configurações e credenciais por omissãoL2+Rever configurações padrão de frameworks, plataformas e containers. Confirmar ausência de users/ports/passwords default.Evidência de hardening. Scanner ou auditoria manual a configs.
CFG-006SEC-Lx-CFG-TRACEDesativação de debug, tracing e interfaces adminL1+Tentar aceder a endpoints de debug, tracing ou interfaces de gestão. Verificar se estão desativados ou autenticados.Captura de resposta 403/404 ou login. Evidência de proteção.
CFG-007SEC-Lx-CFG-VERSGestão de versões de bibliotecas e componentesL2+Rever se versões utilizadas são explícitas e auditáveis (ex: lockfile). Confirmar ausência de versões flutuantes (latest, *).Ficheiros de lock (package-lock.json, requirements.txt, etc.). SBOM.
CFG-008SEC-Lx-CFG-RUNTIMEProteção contra runtime config injectionL3Tentar modificar configs em tempo de execução via API, UI ou ambiente. Rever proteção contra overrides.Teste negativo. Logs de tentativa bloqueada. Documentação da proteção.

🧱 VAL - Validação e Sanitização de Dados

IDTagNome resumidoNívelValidação RecomendadaEvidência Esperada
VAL-001SEC-Lx-VAL-INPUTValidação de campos de entradaL1+Rever código de backend e frontend. Confirmar existência de validações explícitas por tipo, comprimento, formato e regras de negócio.Testes de input inválido. Código com validações. Logs de erros controlados.
VAL-002SEC-Lx-VAL-CROSSValidação cruzada entre camposL2+Confirmar que campos relacionados (ex: data início/fim, username/email) são validados em conjunto. Simular inconsistências e verificar rejeição.Casos de teste de inconsistência. Código com validação composta.
VAL-003SEC-Lx-VAL-BLACKRejeição de listas negras e padrões inválidosL2+Simular entradas conhecidas como perigosas (ex: <script>, comandos SQL). Confirmar bloqueio explícito e logging.Logs de rejeição. Evidência de bloqueios e validações negativas.
VAL-004SEC-Lx-VAL-SQLIPrevenção contra SQL InjectionL1+Rever código para uso de prepared statements. Executar testes automatizados (ex: via scanner SAST/DAST ou manual).Relatórios de scanner. Logs de execução. Ausência de concatenação em queries.
VAL-005SEC-Lx-VAL-XSSPrevenção contra Cross-Site Scripting (XSS)L1+Testar output em campos editáveis/renderizados no browser. Confirmar que dados são corretamente escapados ou codificados.Testes com payloads XSS. Sanitização de output observável.
VAL-006SEC-Lx-VAL-UPLOADValidação de uploads de ficheirosL2+Testar upload de ficheiros com tipos e extensões alteradas. Confirmar que sistema verifica conteúdo, MIME type, tamanho e extensões permitidas.Evidência de rejeição de uploads inválidos. Logs. Código de validação.
VAL-007SEC-Lx-VAL-ENCODINGNormalização e codificação coerente de inputL3Rever sistema para evitar ataques por codificação ambígua (ex: %c0%ae, UTF-7). Confirmar normalização consistente antes de validar.Código com normalização. Testes com payloads ambíguos. Logs de erro.
VAL-008SEC-Lx-VAL-ENUMValidação de valores fixos ou enumeradosL1+Confirmar que listas fechadas (ex: roles, países) são validadas contra conjuntos explícitos e não inferidos.Código com enum ou listas fixas. Testes com valores inválidos.
VAL-009SEC-Lx-VAL-CLIENTValidação não depende apenas do lado clienteL1+Verificar que todas as validações aplicadas no frontend são também aplicadas no backend. Simular request direto via API com dados inválidos.Rejeição pelo backend. Logs de erro. Código com duplicação de validações.

🧾 LOG - Registo, Auditoria e Monitorização

IDTagNívelDescrição resumidaValidação RecomendadaEvidência Esperada
LOG-001SEC-L1-LOG-GERALL1+Atividade relevante deve ser registadaRever código/configuração para confirmar que ações críticas (login, alteração, erro, acesso) são registadas. Validar cobertura de logs em runtime.Logs auditáveis com eventos mapeados por tipo e contexto.
LOG-002SEC-L2-LOG-INTEGL2+Logs devem ser íntegros e não manipuláveisValidar presença de mecanismos de proteção (hash, write-once, syslog remoto). Tentar alterar log em disco e detetar alteração.Evidência de WORM, syslog remoto, ou mecanismos de detecção de tamper.
LOG-003SEC-L2-LOG-ALERTL2+Deve existir alerta para eventos de segurançaGerar evento anómalo (ex: login falhado repetido) e verificar se alerta é enviado. Confirmar thresholds e canais de alerta (email, SIEM, etc).Logs + registo de alerta disparado com timestamp e detalhe.
LOG-004SEC-L3-LOG-CORRL3Deve existir correlação entre eventos em diferentes fontesSimular evento distribuído (ex: acesso seguido de alteração suspeita). Confirmar correlação por ID de sessão, IP ou user ID em central de logs.Dashboards ou queries que agregam eventos correlacionados.
LOG-005SEC-L2-LOG-DADOSL2+Dados sensíveis não devem ser registados em logsRever código e logs gerados. Confirmar ausência de dados sensíveis (passwords, tokens, dados pessoais). Executar testes com inputs sensíveis.Logs limpos + testes automatizados com inputs sensíveis.
LOG-006SEC-L2-LOG-CONTL2+Logs devem ser centralizados e acessíveisConfirmar envio de logs para sistema central (ex: ELK, CloudWatch, SIEM). Rever configuração de forwarding e estrutura de logs.Visualização centralizada com logs por aplicação.
LOG-007SEC-L3-LOG-TIMEL3Logs devem ter timestamp com precisão e timezoneRever estrutura de logs e confirmar presença de timestamp ISO 8601 + timezone. Validar ordenação em dashboards e auditorias.Logs com timestamps precisos e normalizados.

📮 API - Segurança de APIs e Serviços Externos

IDTagNívelDescrição resumidaValidação RecomendadaEvidência Esperada
API-001SEC-L1-API-AUTHL1+Todas as APIs devem exigir autenticação ou controlo de acessoTestar endpoints sem credenciais. Confirmar rejeição com erro 401/403. Rever documentação OpenAPI.Logs de rejeição, testes automatizados, documentação atualizada.
API-002SEC-L2-API-RATEL2+Implementar controlo de taxa de pedidos (rate limiting)Efetuar testes com bursts de chamadas. Confirmar resposta 429 ou mecanismo de bloqueio temporário. Rever config de gateway/API proxy.Evidência de rate limiting em runtime ou logs.
API-003SEC-L2-API-SCHEMAL2+Validar requests/responses contra schema esperadoTestar com payloads inválidos (missing fields, tipos errados). Confirmar rejeição automática. Rever testes de contrato e OpenAPI.Rejeições consistentes + testes de schema/documentação.
API-004SEC-L3-API-INTL3Validar chamadas entre sistemas com autenticação mútuaRever configuração de autenticação mútua (MTLS, tokens entre serviços). Testar chamadas cruzadas sem identidade.Evidência de autenticação cruzada bem-sucedida + falhas controladas.
API-005SEC-L2-API-METHODL2+Apenas métodos autorizados devem estar expostosValidar que endpoints não expõem métodos não utilizados (ex: PUT/DELETE). Verificar controlo por método no gateway ou backend.Inventário de métodos ativos + testes negativos.
API-006SEC-L2-API-VERSAOL2+As APIs devem ter versionamento explícitoConfirmar presença de /v1/, headers ou outro mecanismo de versionamento. Validar impacto de alterações não compatíveis.Documentação de versão + testes de regressão por versão.


🧩 Notas complementares

  • A coluna Nível indica os níveis de risco em que o requisito é obrigatório:
    • L1+ → aplica-se a todas as aplicações (nível baixo, médio e elevado);
    • L2+ → aplica-se a aplicações de risco médio ou elevado;
    • L3 → aplica-se apenas a aplicações de risco elevado.
  • Esta tabela deverá ser complementada com os restantes domínios técnicos (ex: ACC, VAL, ENC, CFG, etc.).
  • Todos os identificadores devem estar presentes nas matrizes de aplicação e podem ser referenciados em checklists e artefactos técnicos.

📌 Esta estrutura permite rastrear, validar e comprovar a aplicação prática de cada requisito, em qualquer projeto, de forma objetiva, proporcional e auditável. 📌 A validação descrita aqui deve ser integrada no ciclo de desenvolvimento, nas pipelines CI/CD, e mantida como evidência para controlo contínuo de conformidade.