CVE CVSS Calculator
Calcola il CVSS v3.1 Base Score per la valutazione della gravità delle vulnerabilità.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HInformazioni sullo strumento
Il Common Vulnerability Scoring System (CVSS) è uno standard aperto per valutare la gravità delle vulnerabilità software su una scala da 0 a 10. Poiché la maggior parte dei team affronta molte più falle divulgate di quante ne possa correggere in una sola volta, un punteggio coerente è essenziale per stabilire le priorità di rimedio e decidere cosa correggere per primo.
Per usare questo calcolatore, seleziona le metriche di base CVSS v3.1 della vulnerabilità che stai valutando: vettore dell'attacco, complessità dell'attacco, privilegi richiesti, interazione dell'utente, ambito e impatto su riservatezza, integrità e disponibilità. Lo strumento restituisce all'istante un punteggio base numerico e la sua gravità qualitativa tra Nessuna, Bassa, Media, Alta o Critica. È un aiuto di lavoro quotidiano per analisti di sicurezza, penetration tester e team di triage.
Tieni presente che il punteggio base riflette le proprietà intrinseche e costanti di una vulnerabilità, mentre le metriche temporali e ambientali si adattano alla maturità dell'exploit e al tuo specifico ambiente. Il punteggio guida le tue decisioni, ma non sostituisce un'analisi del rischio consapevole del contesto relativo ai tuoi asset e alla tua esposizione.
Domande Frequenti
Implementazione del Codice
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.