"CVSS 10.0" e "um RCE CVSS 9.8" aparecem em quase toda manchete de vulnerabilidade. Esses números não são inventados: vêm de um conjunto definido de métricas e de uma fórmula. Veja como lê-los, do zero.
O guia de pontuação
| Pontuação | Classificação | Sensação |
|---|---|---|
| 9.0 – 10.0 | Crítica | Aja agora; muitas vezes classe de domínio total |
| 7.0 – 8.9 | Alta | Trate em breve |
| 4.0 – 6.9 | Média | Planeje no roadmap |
| 0.1 – 3.9 | Baixa | Fique de olho |
Se um CVE é o nome de uma vulnerabilidade, o CVSS é a sua pontuação de severidade. "Um RCE CVSS 10.0" significa uma execução remota de código da classe mais alta — pior classe.
O critério de pontuação do CVSS
Uma pontuação CVSS é construída a partir de três grupos de métricas. O que é publicado como "CVE-XXXX é 9.8" é quase sempre a pontuação Base.
Base
A vulnerabilidade em si. O valor publicado.
Threat
Ajustada ao longo do tempo pela disponibilidade de exploit.
Environmental
Recalculada para a sua própria configuração e prioridades.
① Explorabilidade
② Impacto
A pontuação Base é, grosso modo, "① quão fácil de explorar" × "② quão grande o impacto". As duas próximas tabelas são essas métricas.
① Explorabilidade (quão facilmente pode ser atacada)
| Métrica | Valores | Pior caso (eleva a pontuação) |
|---|---|---|
| Attack Vector (AV) | Network / Adjacent / Local / Physical | Network (pela internet) é o mais perigoso |
| Attack Complexity (AC) | Low / High | Low (sem condições especiais) é perigoso |
| Privileges Required (PR) | None / Low / High | None (sem login necessário) é perigoso |
| User Interaction (UI) | None / Required | None (a vítima não faz nada) é perigoso |
② Impacto (o que acontece se tiver sucesso)
CIA = os três pilares da segurança: Confidencialidade, Integridade, Disponibilidade.
| Métrica | Valores | "High" significa |
|---|---|---|
| Scope (S) | Unchanged / Changed | Changed = a invasão cruza sua fronteira de privilégio original |
| Confidentiality (C) | High / Low / None | os dados podem ser lidos por completo |
| Integrity (I) | High / Low / None | os dados podem ser alterados livremente |
| Availability (A) | High / Low / None | o serviço pode ser totalmente parado |
'Scope: Changed' é o que empurra a pontuação para cima
Por exemplo, dano confinado dentro de um contêiner (Unchanged) versus dano que se espalha dali para o host ou outros serviços (Changed). Cruzar ou não essa fronteira move muito a pontuação para condições no mais idênticas.
A vector string: a composição da pontuação em uma linha
Toda pontuação CVSS vem com uma vector string — um registro de quais métricas foram escolhidas, ou seja, o motivo do número.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H → 10.0 (Critical)Detalhada, tudo está no "mais perigoso":
| Segmento | Significado | Neste exemplo |
|---|---|---|
AV:N | Attack Vector = Network | atingida pela internet |
AC:L | Attack Complexity = Low | fácil de concretizar |
PR:N | Privileges Required = None | sem autenticação |
UI:N | User Interaction = None | sem ação da vítima |
S:C | Scope = Changed | cruza a fronteira |
C:H / I:H / A:H | CIA = tudo High | lido, escrito e parado |
O que separa um 10.0 de um 9.8
Mude o Scope para "Unchanged" (S:U) naquele exemplo e as mesmas condições pontuam 9.8. Se ele cruza a fronteira (S:C) é o que alcança o máximo 10.0. Então 9.8 vs 10.0 = "ambos pior classe, mas o dano se espalha um passo além".
v3.1 vs v4.0: ambos em circulação agora
A versão atual é a v4.0 (2023), mas a maioria dos CVEs ainda é pontuada com a v3.1 (2019), então as duas coexistem por enquanto.
| CVSS v3.1 | CVSS v4.0 | |
|---|---|---|
| Lançada | 2019 | 2023 |
| Notação | pontuação + vetor | CVSS-B / BT / BE / BTE, propósito explícito |
| User Interaction | None / Required (2) | None / Passive / Active (3) |
| Scope | Scope(S), uma métrica | separa o impacto no "sistema vulnerável" e no "sistema subsequente" |
| Extras | nenhum | adiciona métricas suplementares (automatizável, recuperação, segurança…) |
Exemplos: pontuações reais de vulnerabilidades conhecidas
Estas são as pontuações reais registradas no NVD. Elas mostram que o número nem sempre corresponde ao dano no mundo real, e que a pontuação pode mudar conforme o avaliador ou a versão do CVSS.
| Vulnerabilidade | CVSS v3.1 | Destaques do vetor | O que ela mostra |
|---|---|---|---|
| Log4Shell (CVE-2021-44228) | 10.0 Crítica | todas as métricas no pior valor, S:C | Um 10.0 típico, dentro de um componente amplamente usado |
| Apache Struts (CVE-2017-5638) | 9.8 Crítica | S:U (escopo inalterado) | 10.0 na antiga v2 — a versão muda o número |
| Uma falha de appliance VPN (CVE-2018-13379) | NVD 9.8 / fabricante do produto 9.1 | os avaliadores classificam a integridade I de forma diferente | Mesmo CVE, pontuação diferente conforme a fonte; apontada como porta de entrada no incidente do Hospital Handa (em inglês) |
| Heartbleed (CVE-2014-0160) | 7.5 Alta | só confidencialidade C:H, sem adulteração nem interrupção | Não é Crítica, mas virou um grande incidente que podia expor chaves privadas |
As quatro estão no catálogo da CISA (EUA) de vulnerabilidades sabidamente exploradas (KEV). O Heartbleed, com 7.5, também foi explorado — por isso a pontuação sozinha não diz que algo pode esperar.
O que verificar além da pontuação
O critério torna o CVSS poderoso. Mas a pontuação é um valor teórico de pior caso. Na prática, multiplique-a por dois fatores.
Verifique se está sendo explorada (KEV)
Vulnerabilidades observadas sob ataque real (KEV — Known Exploited Vulnerabilities) são prioridade máxima, independentemente da pontuação. "Estar sendo atacada agora" supera o número teórico.
Verifique se você usa o recurso afetado
Um CVSS 10.0 tem pouco impacto real se você não usa o componente; uma pontuação média é prioridade máxima se você a atinge em produção. Julgue pela versão de fato em execução.
Um CVSS 10.0 público descartado como "não é problema meu" levou a um incidente de cobrança fraudulenta. Uma pontuação nunca é motivo para negligenciar. → O CVSS 10.0 negligenciado
Como verificar a sua própria configuração
Consulte os CVEs e as pontuações do que você usa
Confira os avisos de segurança do fabricante, o NVD ou o JVN. Se você tiver o identificador do CVE, o CVE / KEV Lookup deste site mostra CVSS, EPSS e KEV em um só lugar.
Leia o vetor e pergunte se ele se aplica a você
Mesmo com AV:N (pela rede), o risco cai se o recurso não estiver exposto à internet. Com PR:L (login necessário), verifique quem consegue fazer login. Cole um vetor na Calculadora CVSS e leitura do vetor para ver o que cada parte significa.
Deixe uma máquina cruzar as suas dependências
Para o seu próprio app web, analise o lockfile com o Dependency Vulnerability Scanner ou o Dependabot para listar os CVEs e as pontuações correspondentes. Isso é mais confiável do que acompanhar tudo a olho.
Fontes (primárias)
- FIRST, "CVSS v3.1 Specification Document" — first.org (em inglês; métricas e faixas de severidade)
- FIRST, "CVSS v4.0 Specification Document" — first.org (em inglês)
- NIST NVD, "CVE-2014-0160" — nvd.nist.gov (em inglês; as pontuações e vetores de CVE-2021-44228, CVE-2017-5638 e CVE-2018-13379 foram conferidos da mesma forma em suas páginas no NVD)
- CISA, "Known Exploited Vulnerabilities Catalog" — cisa.gov (em inglês)
- FIRST, "Exploit Prediction Scoring System (EPSS)" — first.org (em inglês)
Leia a seguir
- Ferramenta: Calculadora CVSS e leitura do vetor (cole um vetor e veja a pontuação e o significado de cada métrica)
- Glossário: O que é um CVE · O que é RCE
- Defesa: Incorpore CVE/CVSS ao seu fluxo de trabalho
- Na prática: Qual CVE corrigir primeiro (CVSS, EPSS e KEV — por que a pontuação sozinha não decide)