Ir ao contido

Clasificación do risco (CVSS)

A Clasificación do risco nun informe de pentesting refírese á avaliación da gravidade das vulnerabilidades atopadas, coa finalidade de priorizar a súa corrección.

O sistema máis estendido para cuantificar esa gravidade é o CVSS (Common Vulnerability Scoring System).

Que é o CVSS?

CVSS proporciona unha puntuación numérica entre 0.0 e 10.0, baseada en factores como:

  • Vectores de ataque: remoto, local, requírese ou non autenticación, etc.
  • Impacto: sobre a confidencialidade, integridade e dispoñibilidade.
  • Complexidade do ataque: se é sinxelo ou require pasos intermedios.
Puntuación CVSS Nivel de risco
0.0 Ningún
0.1 – 3.9 Baixo
4.0 – 6.9 Medio
7.0 – 8.9 Alto
9.0 – 10.0 Crítico

Exemplo de vector CVSS explicado

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Campo Código Valor Significado
Versión CVSS 3.1 Versión do estándar utilizada
Vector de ataque AV N Network: ataque remoto vía rede
Complexidade do ataque AC L Low: o ataque é sinxelo, sen condicións especiais
Privilexios requiridos PR N None: non require autenticación previa
Interacción do usuario UI N None: a vítima non ten que facer nada
Ámbito S U Unchanged: o ataque non afecta a outros sistemas
Confidencialidade afectada C H High: pode acceder a información sensible
Integridade afectada I H High: pode modificar ou corromper datos
Dispoñibilidade afectada A H High: pode bloquear ou derrubar servizos

📊 Esta combinación representa un risco crítico (10.0), xa que o ataque é remoto, automático e con consecuencias severas.

Calculadora CVSS

A calculadora oficial de CVSS permite introducir manualmente as características dunha vulnerabilidade e obter automaticamente a súa puntuación CVSS. Esta ferramenta é útil para:

  • Validar se a puntuación asignada nun informe é coherente cos factores reais.
  • Simular diferentes escenarios de ataque e o seu impacto.
  • Explicar visualmente a directivos ou técnicos como se determina a gravidade dunha vulnerabilidade.
  • Obter o vector exacto CVSS dunha vulnerabilidade detectada localmente (cando non ten CVE asignado).

Onde se emprega CVSS?

O CVSS é un estándar adoptado por múltiples bases de datos de vulnerabilidades e plataformas de seguridade:

Plataforma / BD Usa CVSS
NVD (National Vulnerability Database)
VulnDB (Risk Based Security)
Exploit Database ❌ (pero adoita referenciar CVEs)
MITRE CVE ✅ (referencia a NVD para puntuación)
Tenable / Nessus
Rapid7 / InsightVM

💡 VulnDB, en concreto, ofrece clasificacións CVSS e tamén puntuacións propias adicionais baseadas en contexto comercial.


Como se calcula a puntuación CVSS base (v3.1)

A puntuación CVSS base non é a suma directa dos valores das métricas. Cada opción dentro dunha métrica ten unha ponderación numérica interna, que se usa nunha fórmula estándar para calcular o impacto e a explotabilidade da vulnerabilidade.

Conversión de valores cualitativos a numéricos

Métrica Valor Ponderación interna
AV (Attack Vector) Network (N) 0.85
Adjacent (A) 0.62
Local (L) 0.55
Physical (P) 0.20
AC (Attack Complexity) Low (L) 0.77
High (H) 0.44
PR (Privileges Required) None (N) 0.85
Low (L) 0.62 / 0.68
High (H) 0.27 / 0.50
UI (User Interaction) None (N) 0.85
Required (R) 0.62
C / I / A High (H) 0.56
Low (L) 0.22
None (N) 0.00

⚠️ O valor de PR depende do campo Scope (Unchanged ou Changed)


Fórmula (Scope Unchanged)

Impact = 1 - [(1 - C) × (1 - I) × (1 - A)]
Exploitability = 8.22 × AV × AC × PR × UI
Base Score = round_up(min(Impact + Exploitability, 10))

Aplicación ao CVE-2011-2523

Usando os seguintes valores:

  • AV:N (0.85), AC:L (0.77), PR:N (0.85), UI:N (0.85)
  • C:H (0.56), I:H (0.56), A:H (0.56)
  • Scope: Unchanged

Cálculos:

  • Impact = 1 - (1 - 0.56)^3 ≈ 0.843
  • Exploitability ≈ 8.22 × 0.85 × 0.77 × 0.85 × 0.85 ≈ 3.9
  • Base Score = round_up(min(0.843 + 3.9, 10)) = 10.0

Esta puntuación indica un risco crítico segundo o estándar CVSS v3.1.


Exemplo aplicado: cálculo CVSS real para unha vulnerabilidade coñecida

Vulnerabilidade exemplo: CVE-2021-44228 (Log4Shell)

  • Descrición: Execución remota de código en Apache Log4j 2
  • Impacto: Permite a atacantes executar código arbitrario vía xestión de logs
  • Afecta: múltiples aplicacións Java
  • CVSS Base Score: 10.0 (Crítico)

🔗 https://nvd.nist.gov/vuln/detail/CVE-2021-44228

Vector CVSS completo

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Descomposición:

Campo Código Valor Significado
Vector de ataque AV N Network: pode atacarse remotamente
Complexidade do ataque AC L Low: moi sinxelo de explotar
Privilexios requiridos PR N None: non require login
Interacción do usuario UI N None: a vítima non fai nada
Ámbito S C Changed: o ataque pode afectar outros sistemas ou dominios
Confidencialidade afectada C H High: acceso completo á información
Integridade afectada I H High: modificación total de datos posibles
Dispoñibilidade afectada A H High: pode derrubar o sistema

Uso no informe

Vulnerabilidade detectada: Uso de Log4j vulnerable (v2.14.1)
CVE: CVE-2021-44228
Gravidade: Crítica
CVSS: 10.0
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Recomendación: Actualizar inmediatamente a versión segura (2.17.0 ou superior)


Exemplo aplicado: vulnerabilidade de gravidade media

Vulnerabilidade: CVE-2020-10560 (phpMyAdmin CSRF)

  • Descrición: phpMyAdmin 4.9.1 é vulnerable a un ataque de tipo CSRF que permite cambiar a configuración do servidor
  • Impacto: Modificacións non autorizadas mediante interacción do usuario
  • CVSS Base Score: 6.5 (Gravidade media)

🔗 https://nvd.nist.gov/vuln/detail/CVE-2020-10560

Vector CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Campo Código Valor Significado
Vector de ataque AV N Network: pode atacarse remotamente
Complexidade do ataque AC L Low: o ataque é sinxelo
Privilexios requiridos PR N None: non require login previo
Interacción do usuario UI R Required: a vítima debe facer clic ou acceder a un link
Ámbito S U Unchanged: afecta só ao sistema atacado
Confidencialidade afectada C N None: non se accede a información
Integridade afectada I H High: pode cambiar a configuración ou contido
Dispoñibilidade afectada A N None: non afecta ao funcionamento do sistema

Uso no informe

Vulnerabilidade detectada: phpMyAdmin vulnerable a CSRF
CVE: CVE-2020-10560
Gravidade: Media
CVSS: 6.5
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Recomendación: Actualizar phpMyAdmin á versión máis recente ou aplicar token CSRF e políticas de orixe


Exemplo aplicado: vulnerabilidade de risco baixo

Vulnerabilidade: CVE-2020-26160 (JWT token sin firma)

  • Descrición: A biblioteca Java JWT (com.auth0:java-jwt antes da v3.4.0) permite a creación de tokens sen firma ao usar o algoritmo 'none'
  • Impacto: Permite a un atacante autenticar sen clave se o servidor non verifica a firma do token
  • CVSS Base Score: 3.7 (Baixo)

🔗 https://nvd.nist.gov/vuln/detail/CVE-2020-26160

Vector CVSS

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
Campo Código Valor Significado
Vector de ataque AV N Network: o ataque é remoto
Complexidade do ataque AC H High: require coñecementos específicos e condicións raras
Privilexios requiridos PR N None: non require login previo
Interacción do usuario UI N None: non precisa acción da vítima
Ámbito S U Unchanged: afecta só ao sistema atacado
Confidencialidade afectada C L Low: posible acceso limitado a datos
Integridade afectada I L Low: pode modificar datos de maneira limitada
Dispoñibilidade afectada A N None: non afecta á dispoñibilidade do sistema

Interpretación

Esta vulnerabilidade representa un risco baixo, xa que:

  • Require condicións específicas para ser explotada
  • O impacto é limitado tanto na confidencialidade como na integridade
  • Non afecta á dispoñibilidade do sistema

Uso no informe

Vulnerabilidade detectada: Uso da biblioteca Java JWT con soporte para tokens sen firma
CVE: CVE-2020-26160
Gravidade: Baixa
CVSS: 3.7
Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
Recomendación: Actualizar a biblioteca a versión 3.4.0 ou superior e verificar que a validación da firma está activada


CVSS: 9.8 vs 10.0 — Que significa realmente?

1) O que mide o número (10 vs 9.8)

O número CVSS é unha medida técnica e normalizada do risco base (combinación de vectores: AV, AC, PR, UI, S, C, I, A). É unha puntuación numérica para axudar a priorizar; non é unha medida absoluta do “dano real” nin da facilidade de explotación en todos os contextos.

  • 10.0 significa que, coas métricas escollidas, a fórmula estándar devolve o máximo arredondado.
  • 9.8 é moi próximo ao máximo e segue estando na categoría Critical — e na práctica o resultado operativo é o mesmo: sistema comprometido, prioridade máxima.

2) Entón 10.0 é “máis perigoso” que 9.8?

Non en termos prácticos. Ambos indican risco crítico. A diferenza 10.0 → 9.8 é só un valor aritmético pequeno que se pode deber, por exemplo a eleccións de métricas (S:U vs S:C),

Non supón que con 9.8 “sexas menos root” — se obtés root, o impacto real é maximal e o tratamento operativo debe ser idéntico.

3) Para que serve entón ter este número?

O número serve para cousas prácticas e administrativas:
- Priorización/triaxe: agrupar vulnerabilidades en Critical / High / Medium / Low.
- SLA e reporting: facer métricas (ex.: corrixir todas as CRITICAL nun prazo de 7 días).
- Comparación entre activos e tendencias ao longo do tempo.
- Automatización de workflows (tickets, escalados) segundo thresholds numéricos.

Conclusión

A puntuación CVSS serve para priorizar vulnerabilidades de maneira estandarizada, pero non recolle toda a realidade dun ataque. Unha diferenza de décimas (9.8 vs 10.0) non debería condicionar a decisión técnica, porque ambas pertencen á categoría Crítica e indican risco moi alto. O número orienta, pero non determina por si só o nivel de resposta.

O que realmente importa é o impacto práctico da vulnerabilidade: se permite execución de código como root, acceso completo ao sistema ou compromete información sensible, a prioridade debe ser máxima. Neses casos, máis alá do valor CVSS, o equipo de seguridade debe aplicar medidas urxentes como o illamento do sistema, a aplicación de parches, a restauración desde copias seguras e a investigación da posible intrusión.

En resumo, o xuízo humano complementa o CVSS: a métrica é útil para comparacións e informes, pero a resposta real depende do contexto técnico e empresarial. Así, vulnerabilidades cun 9.8 ou un 10 requiren exactamente a mesma reacción: tratarse como críticas e actuar de inmediato para minimizar o risco.