CVE CVSS Calculator
Calcula CVSS v3.1 Base Score para evaluación de gravedad de vulnerabilidades.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HAcerca de esta herramienta
El Sistema Común de Puntuación de Vulnerabilidades (CVSS) es un estándar abierto para valorar la gravedad de las vulnerabilidades de software en una escala de 0 a 10. Como la mayoría de los equipos se enfrenta a más fallos divulgados de los que puede corregir a la vez, una puntuación coherente resulta esencial para priorizar la remediación y decidir qué parchear primero.
Para usar esta calculadora, selecciona las métricas base de CVSS v3.1 de la vulnerabilidad que evalúas: vector de ataque, complejidad del ataque, privilegios requeridos, interacción del usuario, alcance y el impacto en la confidencialidad, la integridad y la disponibilidad. La herramienta devuelve al instante una puntuación base numérica y su gravedad cualitativa de Ninguna, Baja, Media, Alta o Crítica. Es una ayuda de trabajo diaria para analistas de seguridad, pentesters y equipos de clasificación.
Ten en cuenta que la puntuación base refleja las propiedades intrínsecas y constantes de una vulnerabilidad, mientras que las métricas temporales y ambientales se ajustan según la madurez del exploit y tu despliegue concreto. La puntuación orienta tus decisiones, pero no sustituye un juicio de riesgo consciente del contexto sobre tus propios activos y exposición.
Preguntas Frecuentes
Implementación de Código
import math
# CVSS v3.1 Base Score Calculator
WEIGHTS = {
'AV': {'N': 0.85, 'A': 0.62, 'L': 0.55, 'P': 0.20},
'AC': {'L': 0.77, 'H': 0.44},
'PR_U': {'N': 0.85, 'L': 0.62, 'H': 0.27}, # Unchanged scope
'PR_C': {'N': 0.85, 'L': 0.68, 'H': 0.50}, # Changed scope
'UI': {'N': 0.85, 'R': 0.62},
'CIA': {'N': 0.00, 'L': 0.22, 'H': 0.56},
}
def roundup(x: float) -> float:
"""CVSS-specific roundup to 1 decimal place."""
return math.ceil(x * 10) / 10
def calculate_cvss_base(av, ac, pr, ui, scope, c_impact, i_impact, a_impact) -> tuple[float, str]:
"""Calculate CVSS v3.1 Base Score."""
scope_changed = scope == 'C'
pr_w = WEIGHTS['PR_C'][pr] if scope_changed else WEIGHTS['PR_U'][pr]
iss = 1 - (1 - WEIGHTS['CIA'][c_impact]) * (1 - WEIGHTS['CIA'][i_impact]) * (1 - WEIGHTS['CIA'][a_impact])
if scope_changed:
impact = 7.52 * (iss - 0.029) - 3.25 * (iss - 0.02) ** 15
else:
impact = 6.42 * iss
exploitability = 8.22 * WEIGHTS['AV'][av] * WEIGHTS['AC'][ac] * pr_w * WEIGHTS['UI'][ui]
if impact <= 0:
score = 0.0
elif scope_changed:
score = roundup(min(1.08 * (impact + exploitability), 10))
else:
score = roundup(min(impact + exploitability, 10))
# Severity
severity = 'None' if score == 0 else 'Low' if score < 4 else 'Medium' if score < 7 else 'High' if score < 9 else 'Critical'
return score, severity
# Example: Critical vulnerability (Log4Shell-like)
score, severity = calculate_cvss_base(
av='N', ac='L', pr='N', ui='N', # Network, Low complexity, No privileges, No user interaction
scope='C', # Scope Changed
c_impact='H', i_impact='H', a_impact='H' # High CIA impact
)
print(f"Log4Shell-like score: {score} ({severity})")
# Example: Local privilege escalation
score, severity = calculate_cvss_base('L', 'L', 'L', 'N', 'U', 'H', 'H', 'N')
print(f"Local privesc: {score} ({severity})")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.