CVSS v3.1 기본 점수 계산 쉽게 이해하기 — 개념과 원리
CVSS(공통 취약점 점수 체계)는 소프트웨어 취약점의 기술적 심각도를 0.0~10.0의 숫자로 나타냅니다. 기본 점수는 시간이나 환경에 따라 바뀌지 않는 여덟 가지 지표로 계산합니다. 보안 담당자, 제조사, 취약점 데이터베이스가 취약점을 설명·비교하고 패치 우선순위를 정할 때 참고합니다.
계산 방법
FIRST의 CVSS v3.1 명세는 두 하위 점수를 합칩니다.
- 영향 하위 점수: ISS = 1 − (1 − C) × (1 − I) × (1 − A)이며, 기밀성·무결성·가용성은 높음 0.56, 낮음 0.22, 없음 0입니다.
- 영향도: 범위가 변경되지 않으면 6.42 × ISS, 변경되면 7.52 × (ISS − 0.029) − 3.25 × (ISS − 0.02)¹⁵입니다.
- 악용 가능성: 8.22 × AV × AC × PR × UI입니다. 공격 벡터는 네트워크 0.85, 인접 0.62, 로컬 0.55, 물리 0.2, 복잡도는 낮음 0.77, 높음 0.44, 권한은 없음 0.85, 낮음 0.62(범위 변경 시 0.68), 높음 0.27(변경 시 0.5), 사용자 상호작용은 없음 0.85, 필요 0.62입니다.
- 기본 점수: 영향도가 0 이하이면 0입니다. 아니면 범위 미변경 시 Roundup(min(영향도 + 악용 가능성, 10)), 변경 시 Roundup(min(1.08 × (합), 10))입니다. Roundup은 소수 첫째 자리로 올림하는 것입니다.
원리
점수는 '얼마나 쉽게 악용되는가'와 '결과가 얼마나 심각한가'를 묻습니다. 악용 가능성은 요소를 곱하므로 물리적 접근이나 높은 권한 같은 조건이 하나만 있어도 전체가 낮아집니다. ISS는 세 영향을 독립 확률처럼 합쳐 셋을 모두 잃으면 더 커지지만 1을 넘지 않습니다. 범위 변경은 샌드박스 탈출처럼 공격이 취약한 구성 요소 밖까지 미친다는 뜻이라 1.08배를 곱하고 권한 가중치도 커집니다.
예제 풀이
- 입력값은 네트워크, 낮은 복잡도, 권한 없음, 상호작용 없음, 범위 미변경, 기밀성·무결성·가용성 모두 높음입니다.
- ISS = 1 − 0.44³ = 0.914816입니다.
- 영향도 = 6.42 × 0.914816 = 5.8731입니다.
- 악용 가능성 = 8.22 × 0.85 × 0.77 × 0.85 × 0.85 = 3.8870입니다.
- 합은 9.7602이고 올림하면 9.8입니다.
- 심각도는 Critical(긴급)입니다.
결과 해석
v3.1 등급은 없음 0.0, 낮음 0.1~3.9, 중간 4.0~6.9, 높음 7.0~8.9, 긴급 9.0~10.0입니다. 9.8은 인증 없이 원격으로 시스템 전체를 장악할 수 있는 취약점의 전형적인 점수입니다. 다만 기본 점수는 위험도가 아니며, 실제 악용 여부와 내 환경에서의 노출 정도가 시급성을 결정합니다.
흔한 실수
- 반올림을 씁니다. 9.71은 9.7이 아니라 9.8입니다.
- 범위 변경 시 권한 가중치가 커진다는 점을 잊습니다.
- 기본 점수를 위험 평가의 전부로 여깁니다.
자주 묻는 질문
CVSS v3.1과 v4.0은 무엇이 다릅니까?
2023년 FIRST가 발표한 v4.0은 지표와 계산 방식이 달라 두 점수를 직접 비교하면 안 됩니다.
공식 점수는 누가 매깁니까?
보통 제조사나 CVE 번호 부여 기관이 매기며, NVD 같은 데이터베이스가 별도 평가를 내기도 합니다.
출처: FIRST, Common Vulnerability Scoring System v3.1: Specification Document · FIRST, CVSS v3.1 User Guide