O que é um CVE? Estrutura, gravidade e como corrigir vulnerabilidades

Os patches do php2shell (CVE-2026-109618 e CVE-2026-109619) para o PHP em fim de vida (EOL) já estão disponíveis. Como as respostas do atendimento de vendas estão mais demoradas do que o normal devido à alta demanda, a maneira mais rápida de obter os pacotes corrigidos é adquirir o ELS para Runtimes on-line (abre em uma nova aba). Leia as perguntas frequentes sobre os patches

Vá direto para um resumo gerado por IA desta postagem do blog

  • Resuma esta postagem com o Perplexity
  • Resuma esta postagem com o Gemini

Já viu códigos “CVE-” aparecerem rapidamente durante a instalação de um software e se perguntou o que eles significavam? Você não é o único; todos nós já passamos por isso. Esses códigos são importantes sinais de alerta em matéria de segurança cibernética. Vou orientá-lo sobre a composição de um identificador CVE, explicar sua estrutura e explorar conceitos como “dependências transitivas” e as melhores práticas para corrigir vulnerabilidades.

 

O que é um CVE?

 

As vulnerabilidades costumavam ter nomes específicos para cada falha, como “traversal de caminho no IIS”, mas, à medida que as vulnerabilidades se acumularam ao longo de décadas, tornou-se necessário adotar um identificador padronizado.

Um identificador de Vulnerabilidades e Exposições Comuns (CVE) fornece um nome padronizado para falhas de segurança cibernética identificadas e de conhecimento público. Essa terminologia comum permite que profissionais de segurança e fornecedores se comuniquem de forma rápida e precisa sobre pontos fracos específicos. Identificar CVEs em softwares é essencial — especialmente em ambientes com muitos componentes externos —, pois permite que as equipes de segurança priorizem a aplicação de patches, avaliem riscos e corrijam rapidamente os defeitos antes que sejam explorados, protegendo assim os dados e a disponibilidade do sistema.

Você pode pensar em um CVE como um número de rastreamento, assim como quando você faz um pedido de um pacote na sua loja favorita. É uma forma de acompanhar o(s) bug(s) e manter-se a par de quais versões de um pacote foram afetadas pela vulnerabilidade.

Para ter uma visão geral completa das melhores práticas, você pode se informar mais sobre a aplicação de patches para vulnerabilidades CVE em nosso guia detalhado.

 

A estrutura de um CVE

 

Um CVE tem o seguinte formato: ‘CVE-2025-1111’ – o prefixo CVE, seguido do ano em que a falha foi descoberta e, em seguida, um identificador exclusivo. 

Esse número é atribuído pela MITRE Corporation e por uma rede global de mais de 490 CNAs. Essas CNAs (Autoridades de Numeração de CVE) incluem fornecedores de TI, como Microsoft, Red Hat e Oracle, além de diversas organizações e pesquisadores de segurança.

O Banco de Dados Nacional de Vulnerabilidades (NVD) tem a função de enriquecer cada CVE assim que ele é publicado na lista de CVEs. Na prática, isso significa que há uma transferência entre o MITRE e o NVD, que então enriquece o CVE com metadados adicionais. Há um processo pelo qual ele passa assim que essa transferência é concluída. De acordo com NIST, o processo inclui: 

 

  1. Analisar o material fornecido junto com o CVE.
  2. Um CWE (CEnumeração de Pontos Fracos Comuns) é atribuído à vulnerabilidade para classificá-la.
  3. São atribuídas métricas de explorabilidade (segundo as métricas do CVSS v3.1 ou v4.0) e de impacto.
  4. Uma declaração do CPE (Common Platform Enumerator) está associada à vulnerabilidade.
  5. Por fim, um analista sênior realiza uma verificação de controle de qualidade antes que os dados enriquecidos sejam publicados.

 

Assim que o CVE for publicado, poderá haver mais trabalhos de manutenção daqui para frente. Podem ocorrer modificações, adição de material de referência, atualização de descrições, etc.

Compreendendo a vulnerabilidade

 

Ao executar o comando `npm audit` ou simplesmente instalar um pacote no seu projeto, você pode ver uma saída como esta: 7 vulnerabilidades de alta gravidade. Você pode estar se perguntando: “O que são essas vulnerabilidades e como elas se apresentam?” A saída inicial não lista os CVEs; em vez disso, ela lista os pacotes afetados e suas versões. Aqui está um exemplo da saída do `npm audit` ao instalar o Angular v18 (a imagem fica mais confusa em versões mais antigas, como o Angular 16, onde a acumulação de dependências obsoletas já dura mais de um ano):


resumo  4.0.0 - 4.58.0

Gravidade: alta

Rollup 4 apresenta vulnerabilidade de gravação arbitrária de arquivos via traversal de caminho - https://github.com/advisories/GHSA-mw96-cpmx-2vgc

Correção disponível via `npm audit fix --force`

Instalará @angular-devkit/build-angular@19.2.22, o que representa uma alteração compatibilidade

node_modules/rollup

  @angular/build  18.1.0-next.0 - 19.2.21 || 20.0.0-próximo.0 - 20.2.0-rc.1 || 20.3.4 - 20.3.17

  Depende das versões vulneráveis do rollup

  node_modules/@angular/build

    @angular-devkit/build-angular  *

    Depende de versões vulneráveis do @angular/build

    Depende de versões vulneráveis do copy-webpack-plugin

    node_modules/@angular-devkit/build-angular

 

Isso significa que o pacote de atualizações foi instalado como uma dependência transitiva. As versões afetadas são 4.0.0 – 4.58.0. Essas versões apresentam uma vulnerabilidade de segurança de alta gravidade. A vulnerabilidade é conhecida como falha de “Gravação Arbitrária de Arquivo por meio de Traversal de Caminho”. Isso significa que um agente mal-intencionado pode criar uma entrada que induza o rollup a gravar um arquivo em locais nos quais você não pretendia gravar. Esse é um exemplo clássico de vulnerabilidade na cadeia de suprimentos de software. Você instalou um pacote, mas o rollup veio junto, e você não o instalou intencionalmente.

 

@angular-devkit/build-angular

  └── @angular/build (versões vulneráveis)

        └── rollup (4.0.0 - 4.58.0) ← o pacote vulnerável

Corrigindo falhas

 

Se continuarmos a trabalhar com base no exemplo do rollup , há algumas maneiras diferentes de corrigir essa vulnerabilidade, caso você não esteja escrevendo ativamente correções CVE como desenvolvedor de aplicativos de segurança. Você pode executar npm audit fix –force, e isso poderia resolver o problema, mas essa abordagem traz suas próprias desvantagens...

Se você executar esse comando, ele também atualizará @angular-devkit/build-angular para a versão 19.2.22. Essa versão está marcada como uma alteração compatibilidade e pode afetar as configurações de compilação e as APIs. Isso pode exigir alterações no código mais adiante, e quem tem tempo para isso?

Algumas coisas que você pode fazer para descobrir como resolver o problema:

 

  1. Verifique qual é a sua versão do Angular para avaliar qual seria a magnitude da mudança para a nova versão.
  2. Consulte o registro de alterações do @angular-devkit/build-angular para a versão atualizada.
  3. Crie um novo branch e execute a correção nesse branch, nunca no branch principal.
  4. Reconheça a mudança e adie-a caso ela seja muito arriscada.

Substituições

Usar uma substituição é uma solução temporária que pode ajudar você a seguir em frente, mas também apresenta riscos. Isso pode forçar o uso de uma versão específica e corrigida do pacote de atualizações sem precisar recorrer à atualização incompatível do @angular-devkit/build-angular.

Você pode adicionar a versão corrigida ao seu package.jsoda seguinte maneira. A versão no exemplo JSON é a versão corrigida mais recente, de fevereiro de 2026.

 

{

  "overrides": {

    "rollup": "^4.59.0"

  }

}


  

Certifique-se de executar npm install para instalar a versão corrigida e verifique novamente se ela foi instalada executando npm audit. Você deverá verificar que a vulnerabilidade foi eliminada.

A razão pela qual essa solução funciona é que o campos de substituição está dizendo ao npm: “seja como for, sem exceções, instale este pacote”. Ele ignorará completamente a árvore de dependências transitivas usando o overrides.

 

As substituições são uma boa abordagem quando:

 

  1. Você realmente precisa enviar o produto, mas está impedido pela atualização que está em andamento
  2. Como a vulnerabilidade está em uma ferramenta de compilação e não em uma ferramenta de produção, o risco é menor
  3. A versão foi testada e confirmou-se que tudo está funcionando corretamente

 

Existem maneiras melhores de lidar com isso, já que o substituições é apenas temporário. Você pode aceitar a alteração que causa quebra de compatibilidade, desde que a teste em um branch e os testes sejam aprovados. Se não houver problemas e a alteração tiver sido revisada, siga em frente. Se houver um patch disponível que não cause quebra de compatibilidade, use-o. Verifique o changelog em busca de patches principais/secundários que não prejudiquem a compilação. Uma última coisa a fazer é avaliar o risco real. 

Conforme mencionado acima, o rollup é uma ferramenta de compilação, não uma ferramenta de produção, portanto o risco é menor. Normalmente, ela não é executada em ambientes de produção. O uso de substituições pode acabar criando uma falsa sensação de segurança. Você deixará de receber avisos do npm audit, mas também estará introduzindo alterações não testadas em seu projeto/compilação.

A conclusão é simples: se você puder aceitar a mudança que causa incompatibilidade, faça isso. Se não puder, use substituições.

 

Resumo
O que é um CVE? Estrutura, gravidade e como corrigir vulnerabilidades
Nome do artigo
O que é um CVE? Estrutura, gravidade e como corrigir vulnerabilidades
Descrição
Já viu códigos CVE no seu terminal e os ignorou? Veja aqui o que eles significam, como são estruturados e como corrigi-los
Autor
Nome da editora
TuxCare
Logotipo da editora

Junte-se a mais de 4.500 profissionais de Linux e código aberto!

2 vezes por mês. Sem spam.

Índice
Obtenha as respostas sobre segurança de código aberto de que você precisa

Junte-se a mais de 4.500 profissionais de Linux e código aberto!

2 vezes por mês. Sem spam.