CVSS (Common Vulnerability Scoring System) v3.1 là hệ thống chấm điểm mức độ nghiêm trọng của lỗ hổng bảo mật, được dùng rộng rãi trong phân tích lỗ hổng (CVE). Hãy cài đặt công thức tính Base Score theo đúng đặc tả chính thức của FIRST.org, dựa trên 8 chỉ số (metric):
AV (Attack Vector): N=0.85, A=0.62, L=0.55, P=0.2AC (Attack Complexity): L=0.77, H=0.44PR (Privileges Required), phụ thuộc S: nếu S=U thì N=0.85, L=0.62, H=0.27; nếu S=C thì N=0.85, L=0.68, H=0.5UI (User Interaction): N=0.85, R=0.62S (Scope): U (Unchanged) hoặc C (Changed)C, I, A (Confidentiality/Integrity/Availability Impact): H=0.56, L=0.22, N=0Công thức:
ISS=1−(1−C)(1−I)(1−A)
Nếu S=U: Impact=6.42×ISS. Nếu S=C: Impact=7.52×(ISS−0.029)−3.25×(ISS−0.02)15.
Exploitability=8.22×AV×AC×PR×UI
Nếu Impact≤0: BaseScore=0. Nếu S=U: BaseScore=Roundup(min(Impact+Exploitability, 10)). Nếu S=C: BaseScore=Roundup(min(1.08×(Impact+Exploitability), 10)).
Trong đó hàm Roundup(x) làm tròn lên tới 1 chữ số thập phân theo đúng thuật toán FIRST.org (tránh sai số dấu phẩy động):
def roundup(x):
int_input = round(x * 100000)
if int_input % 10000 == 0:
return int_input / 100000.0
else:
return (int_input // 10000 + 1) / 10.0
Ví dụ: AV:N AC:L PR:N UI:N S:U C:H I:H A:H (lỗ hổng RCE không cần xác thực) cho Base Score =9.8.
Một dòng gồm 8 ký hiệu cách nhau bởi khoảng trắng, theo đúng thứ tự AV AC PR UI S C I A (mỗi giá trị là một chữ cái viết hoa hợp lệ của chỉ số tương ứng).
In ra Base Score với đúng 1 chữ số thập phân.
Ví dụ: input N L N N U H H H → output 9.8.
Ví dụ:
Đầu vào:
N L N N U H H N
Đầu ra:
9.1
Đầu vào:
N L N N U H H H
Đầu ra:
9.8
Đang tải editor...