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
| 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.843Exploitability ≈ 8.22 × 0.85 × 0.77 × 0.85 × 0.85 ≈ 3.9Base 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
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
| 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
| 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.