CVSS(Common Vulnerability Scoring System)는 소프트웨어 취약점의 특성과 심각도를 전하는 공개 프레임워크로, 심각도를 0.0에서 10.0까지의 수치 점수로 나타낸다. FIRST가 소유하고 관리한다.[1] FIRST의 CVSS SIG(Special Interest Group)가 명세를 고치고 갱신한다.[2]
범위
CVSS v4.0 명세는 지표 그룹과 그룹마다의 지표, 지표 값으로 점수를 내는 방법, 점수에 맞는 심각도 등급을 정한다.[1]
지표 그룹
이 명세는 지표를 네 그룹으로 나눈다.[1]
| 그룹 | 담는 것 |
|---|---|
| Base | 시간과 사용자 환경에 따라 바뀌지 않는 취약점 고유의 특성 |
| Threat | PoC(Proof of Concept) 코드나 실제 악용 여부처럼 시간에 따라 바뀔 수 있는 위협의 특성 |
| Environmental | 사용자 환경에 따라 달라지는 특성 |
| Supplemental | 점수를 바꾸지 않는 추가 정보 |
Base 그룹은 exploitability 지표와 impact 지표로 이뤄진다.[1] Threat 그룹은 CVSS v3.1의 temporal 그룹 이름을 바꾼 것이다.[3] CVSS v3.1의 temporal 그룹은 공격 코드의 성숙도처럼 시간에 따라 바뀌는 특성을 담았다.[4]
Exploitability 지표
CVSS v4.0의 exploitability 지표는 다섯이다.[1]
- Attack vector(AV): 취약점을 악용할 수 있는 맥락
- Attack complexity(AC): 공격자가 ASLR(Address Space Layout Randomization)이나 DEP(Data Execution Prevention) 같은 내장 보안 강화 조건을 피하거나 우회해야 하는지
- Attack requirements(AT): 공격을 가능하게 하는 취약 시스템의 배포·실행 조건. 공격을 막으려고 둔 것이 아니라 시스템을 배포하고 실행하면서 생기는 조건이라는 점에서 attack complexity가 다루는 보안 강화 기법과 다르다.
- Privileges required(PR): 공격 전에 공격자가 가져야 할 권한 수준
- User interaction(UI): 공격자 말고 다른 사람이 공격에 참여해야 하는지[1]
이 명세가 지표마다 두는 값은 다음과 같다.[1]
| 지표 | 값 | 뜻 |
|---|---|---|
| AV | Network | 네트워크 너머 원격에서 악용할 수 있다. |
| AV | Adjacent | Bluetooth, NFC(Near Field Communication), IEEE 802.11 같은 근접 범위나 같은 논리 네트워크, 또는 제한된 관리 도메인에서 악용할 수 있다. |
| AV | Local | 대상의 로컬 접근이나 다른 사람의 사용자 상호작용으로 악용할 수 있다. |
| AV | Physical | 대상을 물리적으로 만지거나 조작해야 악용할 수 있다. |
| AC | Low | 공격자가 따로 해야 할 일도, 대상별 우회도 없이 공격이 되풀이해 성공한다. |
| AC | High | ASLR이나 DEP 같은 악용 완화 기법을 피하거나, 정찰로는 얻을 수 없는 대상별 비밀을 손에 넣어야 공격이 성공한다. |
| AT | None | 공격의 성공이 배포·실행 조건에 달려 있지 않아, 취약점이 있는 경우 모두 또는 대부분에서 악용할 수 있다. |
| AT | Present | 이겨야 하는 경쟁 상태나 피해자와 대상 사이 통신 경로에 끼어드는 네트워크 주입처럼, 특정한 조건이 갖춰져야 공격이 성공한다. |
| PR | None | 인증되지 않은 공격자가 취약 시스템의 설정이나 파일에 접근하지 않고도 공격할 수 있다. |
| PR | Low | 권한이 낮은 사용자 한 명이 가진 설정과 자원 정도의 기본 권한이 필요하다. |
| PR | High | 관리자 권한처럼 취약 시스템의 설정과 파일 전체에 접근할 수 있는 권한이 필요하다. |
| UI | None | 공격자 말고는 아무도 관여하지 않아도 악용할 수 있다. |
| UI | Passive | 악성 내용이 심어진 웹사이트를 이용하는 것처럼, 대상 사용자가 의도하지 않게 제한적으로 상호작용하면 악용된다. 사용자가 보호 장치를 일부러 무력화할 필요는 없다. |
| UI | Active | 파일을 특정한 방식으로 가져오거나 보안 경고를 넘기는 것처럼, 대상 사용자가 구체적이고 의식적인 행동을 하거나 그 행동이 보호 장치를 무력화해야 악용된다. |
CVSS v3.1의 exploitability 지표는 AV, AC, PR, UI 넷이었고, CVSS v4.0은 attack requirements(AT)를 더해 다섯을 둔다.[1][4] CVSS v3.1의 attack complexity는 공격자가 통제할 수 없는 조건이 있어야 하는지를 low와 high로 나타냈고, CVSS v4.0은 이를 attack complexity와 attack requirements로 나눴다.[3][4] CVSS v3.1의 user interaction 값은 none과 required였고, CVSS v4.0은 이를 none, passive, active로 나눈다.[1][4]
점수 계산
CVSS v4.0은 대수식이 아니라, 전문가 비교로 정한 MacroVector 점수표와 그 안의 보간으로 점수를 정한다.[1] CVSS v3.1은 exploitability 하위 점수를 네 지표의 가중치를 곱해 로 구했고, 가중치는 다음과 같았다.[4]
| 지표 | 값 | 가중치 |
|---|---|---|
| AV | Network | 0.85 |
| AV | Adjacent | 0.62 |
| AV | Local | 0.55 |
| AV | Physical | 0.2 |
| AC | Low | 0.77 |
| AC | High | 0.44 |
| PR | None | 0.85 |
| PR | Low | 0.62(scope가 바뀌면 0.68) |
| PR | High | 0.27(scope가 바뀌면 0.5) |
| UI | None | 0.85 |
| UI | Required | 0.62 |
심각도 구간
CVSS v4.0은 점수를 심각도 등급으로 옮기는 척도를 둔다. 0.0은 none, 0.1~3.9는 low, 4.0~6.9는 medium, 7.0~8.9는 high, 9.0~10.0은 critical이다. 등급은 쓰지 않아도 된다.[1]
개정 이력
- 2004년: v1 보고서. NIAC(National Infrastructure Advisory Council)의 CVSS 최종 보고서는 10월 12일 자다.[5] NIAC의 연구 프로젝트에서 나온 이 보고서는 2005년 2월 23일 DHS(Department of Homeland Security) 웹사이트에 올라왔다.[6]
- 2007년: v2. 6월에 나왔고[7], access vector, access complexity, authentication 지표로 취약점에 어떻게 접근하는지를 나타냈다.[8]
- 2015년: v3.0. 6월에 나왔다.[9] Access vector의 이름을 attack vector로 바꾸고 그 안에서 local과 physical을 나눴으며, authentication을 privileges required로 바꾸고, access complexity에서 user interaction을 떼어 내고, scope를 새로 넣었다.[10]
- 2019년: v3.1. 6월에 나왔다.[9] 새 지표나 지표 값 없이 기존 정의와 설명을 고쳤다.[11]
- 2023년: v4.0이자 현행판. 11월 1일에 나왔다.[1] Attack requirements를 더하고, temporal 그룹의 이름을 threat로 바꾸고, supplemental 그룹을 새로 넣고, scope를 없앴다.[3]