Pular para o conteúdo principal

Política de Exceções a CVEs

1. Objetivo

Esta política define os requisitos para a formalização, aprovação, controlo e reavaliação de exceções a vulnerabilidades conhecidas (CVEs) detetadas em dependências de software.

A existência de um CVE num componente utilizado não implica necessariamente exploitabilidade imediata - pode tratar-se de uma vulnerabilidade sem vetor de ataque acessível no contexto da aplicação, de um componente que não está exposto, ou de uma situação em que o fix disponível introduz regressões que inviabilizam a atualização imediata. Contudo, a ausência de exploitabilidade direta não dispensa a formalização: exceções não registadas são risco invisível.

O objetivo desta política é garantir que:

  • Toda a exceção a um CVE é formalizada, aprovada por alçada adequada e rastreável
  • O controlo compensatório que justifica a aceitação é verificável e monitorizado
  • Os prazos de reavaliação são definidos por severidade e nível de criticidade da aplicação
  • Exceções expiradas ou inválidas são detetadas automaticamente e não persistem silenciosamente

2. Âmbito

Esta política aplica-se a todas as vulnerabilidades conhecidas (CVEs, GHSA, OSV, ou equivalente) identificadas por ferramentas SCA em dependências de software, incluindo:

  • Dependências diretas e transitivas de aplicações
  • Componentes presentes em imagens de container
  • Módulos e providers em artefactos IaC quando sujeitos a SCA

Não se aplica a vulnerabilidades de código próprio (SAST findings) - essas são cobertas pela Política de Gestão de Exceções de Segurança.


3. Definição de exceção a CVE

Uma exceção a CVE é o registo formal que documenta a decisão de manter um componente com uma vulnerabilidade conhecida em produção durante um período limitado, com base em:

  • Análise de impacto que demonstra não-exploitabilidade no contexto específico da aplicação, ou
  • Inexistência de fix disponível (upstream ainda não corrigiu), ou
  • Fix disponível que introduz regressões inaceitáveis com plano de resolução temporal definido
aviso

A ausência de exploit público conhecido não é, por si só, justificação suficiente para uma exceção. É necessário demonstrar que o vetor de ataque não está acessível no contexto da aplicação, com evidência técnica verificável.

Uma exceção não é uma dispensa permanente. É uma aceitação temporária de risco residual, com prazo e controlo compensatório.


4. Tipos de exceção

TipoSituaçãoRequisito adicional
Not affectedCVE existe mas o componente vulnerável não é utilizado no caminho de código acessívelEvidência técnica de code path analysis
Fix not availableUpstream não disponibilizou patch; sem versão alternativaPlano de monitorização e prazo de reavaliação obrigatório
Fix deferredFix disponível mas a atualização requer trabalho de compatibilidadePlano de atualização com data e owner definidos
Risk acceptedCVE exploitável mas risco mitigado por controlo compensatórioControlo compensatório verificável e documentado

Cada tipo tem requisitos distintos de aprovação e prazo máximo (ver secções 5 e 6).


5. Processo formal de exceção

5.1 Etapas obrigatórias

EtapaResponsávelArtefacto
Identificação do findingScanner SCA (automatizado)CVE + componente + severidade
Análise de impacto e exploitabilidadeDeveloper + AppSec EngineerJustificação técnica documentada
Definição de controlo compensatórioAppSec Engineer / ArquitetoEvidência do controlo alternativo
Aprovação formalAlçada conforme secção 5.2Registo em excecoes.yaml ou vex.yaml
Agendamento de reavaliaçãoAppSec EngineerCalendário de revisão com alertas

5.2 Alçadas de aprovação

Nível da aplicaçãoSeveridade CVEAprovador mínimo
L1Low / MediumTech Lead
L1High / CriticalTech Lead + AppSec Engineer
L2Low / MediumAppSec Engineer
L2HighAppSec Engineer + gestor de aplicação
L2CriticalAppSec Engineer + gestor de aplicação + Security Officer
L3QualquerAppSec Engineer + Security Officer + CISO (ou delegado)

5.3 Conteúdo mínimo do registo de exceção

Cada exceção deve ser registada em excecoes.yaml (ou equivalente, ex: vex.yaml em formato VEX) com os seguintes campos:

  • Identificador CVE (ex: CVE-2024-XXXXX) ou GHSA equivalente
  • Componente afetado, versão e ecossistema
  • Tipo de exceção (conforme secção 4)
  • Justificação técnica (exploitabilidade no contexto da aplicação)
  • Controlo compensatório aplicado (se tipo "Risk accepted")
  • Aprovador e data de aprovação
  • Data de expiração da exceção
  • Referência ao finding SCA que originou a exceção

6. Prazos máximos e reavaliação

6.1 TTL por severidade e tipo

Severidade CVETipoL1L2L3
CriticalFix deferred / Risk accepted30 dias15 dias7 dias
HighFix deferred / Risk accepted60 dias30 dias15 dias
MediumQualquer180 dias90 dias45 dias
LowQualquer365 dias180 dias90 dias
Fix not availableQualquer90 dias60 dias30 dias
Not affected-Sem TTL*Sem TTL*Sem TTL*

*Exceções do tipo "Not affected" devem ser reavaliadas sempre que o componente é atualizado ou quando é publicada nova informação sobre o CVE que altere o contexto de exploitabilidade.

6.2 Reavaliação

Antes da expiração de cada exceção, deve ser realizada uma reavaliação que determine:

  • Mantém-se: a situação não mudou; controlo compensatório continua eficaz; nova data de expiração é definida (requer nova aprovação da mesma alçada)
  • Resolve-se: o fix foi aplicado; a exceção é encerrada
  • Escala: a situação agravou (ex: exploit público publicado); a exceção é reclassificada e a alçada de aprovação sobe
aviso

Uma exceção expirada sem reavaliação documentada é tratada como não-conformidade. O pipeline deve detetar exceções expiradas em excecoes.yaml e bloquear o build em L2/L3 até que a reavaliação seja concluída.


7. Controlos compensatórios

Quando o tipo de exceção é "Risk accepted", deve ser definido e verificado um controlo compensatório que reduza a probabilidade ou o impacto de exploração. Exemplos de controlos compensatórios aceites:

ControloDescrição
WAF / filteringFiltragem de payloads associados ao vector de exploração na camada de rede ou aplicação
Isolamento de redeComponente vulnerável sem acesso externo direto; tráfego controlado por firewall ou service mesh
Desativação de featureFuncionalidade vulnerável desativada na configuração da aplicação
Runtime protectionRASP ou eBPF-based monitoring com deteção de tentativas de exploração
Acesso restritoComponente acessível apenas por utilizadores autenticados e autorizados, com MFA ativo

Os controlos compensatórios devem ser verificáveis - a sua eficácia deve poder ser demonstrada em auditoria.


8. Integração no pipeline

O pipeline CI/CD deve verificar o estado das exceções ativas em cada build:

GateL1L2L3
Bloquear build se CVE Critical/High sem exceção aprovadaNãoSimSim
Bloquear build se exceção expirada sem reavaliaçãoNãoSimSim
Alertar se exceção com menos de 7 dias para expirarRecomendadoObrigatórioObrigatório
Gerar relatório de exceções ativas por buildRecomendadoObrigatórioObrigatório

9. Artefactos

ArtefactoDescriçãoRetenção
excecoes.yaml / vex.yamlRegisto de exceções ativas com aprovações e prazosEnquanto a exceção estiver ativa + 1 ano
sca-report.*Relatório SCA com findings e estado de exceções90 dias (L2), 1 ano (L3)
Histórico de reavaliaçõesRegistos de reavaliações anteriores com decisões2 anos (L3), 1 ano (L2)

10. Responsabilidades

RoleResponsabilidade
DeveloperIdentificar e comunicar CVEs sem fix imediato; propor justificação e tipo de exceção
AppSec EngineerAnalisar impacto e exploitabilidade; validar controlos compensatórios; aprovar/rejeitar exceções; gerir calendário de reavaliação
Tech LeadDefinir plano de atualização para "Fix deferred"; garantir reavaliação dentro do prazo
Security Officer / CISOAprovar exceções Critical em L2/L3; ser notificado de exceções expiradas sem resolução
DevOps / SREConfigurar gate de exceções no pipeline; integrar alertas de expiração
GRC / ComplianceAuditar registo de exceções; verificar conformidade com prazos; reportar exceções persistentes

11. Revisão e auditoria desta política

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

  • Incidente com origem em CVE com exceção ativa (independentemente de expiração)
  • Alteração regulatória que imponha prazos mais restritivos
  • Alteração das ferramentas SCA que afete a forma de gestão de exceções (ex: suporte a VEX)

12. Referências normativas e técnicas

ReferênciaRelevância
SbD-ToE Cap. 05 - Dependências, SBOM e SCAProcesso SCA, gates, exceções formais
SbD-ToE Cap. 14 - Governança e ContrataçãoAlçadas de exceção por nível de risco
Política de Dependências (10_policy-dependencias.md)SCA gates e bloqueios por severidade
Política de SBOM (11_policy-sbom.md)Inventário de componentes e correlação CVE-runtime
Política de Gestão de Exceções (05_policy-gestao-excecoes.md)Framework transversal de exceções de segurança
CycloneDX VEXFormato de declaração de exploitabilidade
CVSS v3.1 / v4.0Sistema de pontuação de severidade de vulnerabilidades
EPSS (Exploit Prediction Scoring System)Complemento ao CVSS para avaliação de probabilidade de exploração
NIST NVDBase de dados de referência para CVEs
OSV (Open Source Vulnerabilities)Base de dados alternativa para vulnerabilidades em OSS
SSDF PW.4.2Review software for vulnerabilities and remediate