"CVSS 10.0", "CVSS 9.8 RCE" — 모든 취약점 헤드라인에 등장하는 숫자들입니다. 지어낸 것이 아니라, 정의된 지표 집합과 공식에서 나옵니다. 그 읽는 법을 바닥부터 살펴봅니다.
먼저, 점수 가이드
| 점수 | 등급 | 체감 |
|---|---|---|
| 9.0 – 10.0 | Critical | 즉시 조치; 흔히 장악 등급 |
| 7.0 – 8.9 | High | 곧 대응 |
| 4.0 – 6.9 | Medium | 계획에 포함 |
| 0.1 – 3.9 | Low | 주시 |
CVE가 취약점의 이름이라면, CVSS는 그 심각도 점수입니다. "CVSS 10.0 RCE"는 최고 등급의 원격 코드 실행을 뜻합니다 — 최악 등급.
정말로 기준이 있다
CVSS 점수는 세 가지 지표 그룹으로 구성됩니다. "CVE-XXXX는 9.8"처럼 공개되는 값은 거의 항상 Base 점수입니다.
Base
취약점 그 자체. 공개되는 값.
Threat
익스플로잇 가용성에 따라 시간이 지나며 보정.
Environmental
내 환경과 우선순위에 맞게 재계산.
① 익스플로잇 용이성
② 영향
Base 점수는 대략 **"① 익스플로잇이 얼마나 쉬운가" × "② 영향이 얼마나 큰가"**입니다. 다음 두 표가 그 지표들입니다.
① 익스플로잇 용이성(얼마나 쉽게 공격되는가)
| 지표 | 값 | 최악(점수를 높임) |
|---|---|---|
| 공격 벡터(AV) | Network / Adjacent / Local / Physical | Network(인터넷 너머)가 가장 위험 |
| 공격 복잡도(AC) | Low / High | Low(특별 조건 불필요)가 위험 |
| 필요 권한(PR) | None / Low / High | None(로그인 불필요)이 위험 |
| 사용자 상호작용(UI) | None / Required | None(피해자가 아무것도 안 함)이 위험 |
② 영향(성공하면 무슨 일이 일어나는가)
CIA = 보안의 세 기둥: 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability).
| 지표 | 값 | "High"의 의미 |
|---|---|---|
| 범위(S) | Unchanged / Changed | Changed = 침해가 원래의 권한 경계를 넘음 |
| 기밀성(C) | High / Low / None | 데이터를 통째로 읽을 수 있음 |
| 무결성(I) | High / Low / None | 데이터를 마음대로 변조할 수 있음 |
| 가용성(A) | High / Low / None | 서비스를 완전히 멈출 수 있음 |
'Scope: Changed'가 점수를 끌어올린다
예를 들어 컨테이너 안에 갇힌 피해(Unchanged)와 거기서 호스트나 다른 서비스로 번지는 경우(Changed)의 차이입니다. "상자를 넘느냐"가 다른 조건이 동일할 때 점수를 크게 움직입니다.
벡터 문자열: 점수의 '레시피'를 한 줄로
모든 CVSS 점수에는 벡터 문자열이 따라옵니다 — 어떤 지표를 골랐는지의 기록, 즉 그 숫자의 이유입니다.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H → 10.0 (Critical)분해해 보면 모두 "가장 위험"으로 설정되어 있습니다:
| 구간 | 의미 | 이 예시 |
|---|---|---|
AV:N | 공격 벡터 = Network | 인터넷 너머로 공격 |
AC:L | 공격 복잡도 = Low | 성공시키기 쉬움 |
PR:N | 필요 권한 = None | 인증 불필요 |
UI:N | 사용자 상호작용 = None | 피해자 행동 불필요 |
S:C | 범위 = Changed | 경계를 넘음 |
C:H / I:H / A:H | CIA = 모두 High | 읽히고, 쓰이고, 멈춤 |
10.0과 9.8을 가르는 것
그 예시에서 범위를 "Unchanged"(S:U)로 바꾸면 같은 조건이 9.8이 됩니다. 경계를 넘느냐(S:C)가 최대치 10.0에 도달하게 합니다. 즉 9.8 vs 10.0 = "둘 다 최악 등급이지만, 피해 반경이 한 단계 다름"입니다.
v3.1 vs v4.0: 지금은 둘 다 유통 중
현재 버전은 **v4.0(2023)**이지만, 대부분의 CVE는 여전히 **v3.1(2019)**로 채점되므로 둘이 당분간 공존합니다.
| CVSS v3.1 | CVSS v4.0 | |
|---|---|---|
| 출시 | 2019 | 2023 |
| 표기 | 점수 + 벡터 | CVSS-B / BT / BE / BTE, 목적 명시 |
| 사용자 상호작용 | None / Required (2) | None / Passive / Active (3) |
| 범위 | Scope(S), 단일 지표 | "취약 시스템"과 "후속 시스템" 영향으로 분리 |
| 추가 | 없음 | 보충 지표 추가(자동화 가능성, 복구, 안전성…) |
점수만으로 휘둘리지 마라
기준이 있다는 점이 CVSS를 강력하게 만듭니다. 하지만 점수는 최악의 이론값입니다. 실무에서는 두 가지 요소를 곱하세요.
악용되고 있는지 확인(KEV)
실제 공격이 관측된 취약점(KEV — Known Exploited Vulnerabilities)은 점수와 무관하게 최우선입니다. "지금 총탄이 날아오고 있음"이 이론적 숫자를 압도합니다.
해당 기능을 쓰는지 확인
해당 구성요소를 쓰지 않는다면 CVSS 10.0도 실제 영향이 작고, 운영에서 그것을 건드린다면 중간 점수가 최우선입니다. 실제로 구동 중인 버전으로 판단하세요.
공개된 CVSS 10.0을 "내 문제 아님"으로 치부한 것이 부정 과금 사고로 이어졌습니다. 점수는 결코 방치의 이유가 될 수 없습니다. → 방치된 CVSS 10.0
다음으로 읽기
- 용어집: CVE란 · RCE란
- 방어: CVE/CVSS를 워크플로에 녹이기
FAQ
QCVSS에는 실제 채점 기준이 있나요, 아니면 추측인가요?
정의된 기준이 있습니다. 지표 — 공격 벡터(AV), 공격 복잡도(AC), 필요 권한(PR), 사용자 상호작용(UI), 범위(S), 기밀성/무결성/가용성(CIA) — 를 선택해 공개 공식에 넣으면 0.0–10.0이 나옵니다. 재현 가능하도록 설계되어 있어, 같은 입력은 같은 점수를 냅니다.
Q점수는 누가 부여하나요?
표준은 FIRST가 관리합니다. 개별 CVE 점수는 기준을 따라 NVD(NIST)나 벤더가 부여합니다. 같은 취약점이라도 평가자에 따라 약간 다르게 채점될 수 있습니다.
Q몇 점부터 위험한가요?
기준으로: 9.0–10.0 Critical, 7.0–8.9 High, 4.0–6.9 Medium, 0.1–3.9 Low. 다만 점수는 최악의 이론값이므로 — 실제로 내 환경에 해당하는지도 함께 확인하세요.
Q높은 CVSS는 항상 먼저 고쳐야 하나요?
대개 그렇지만, 더 중요한 것은 활발히 악용되는가(KEV)와 해당 기능을 쓰는가입니다. 쓰지 않는 10.0은 영향이 0일 수 있고, 활발히 악용되는 중간 점수가 최우선입니다.