CVSS 4.0 Preview 살펴보기

CVSS(Common Vulnerability Scoring System)는 시스템, 소프트웨어의 취약성을 평가하기 위해 사용되는 취약성에 대한 스코어링 시스템입니다. Offensive Security 관련하여 현업에 있다면 익숙하지만 반대로 문제점도 많다고 느껴지는 그런 친구죠. 보통 CVSS2 또는 CVSS3를 많이 사용하고 있는 상태인데, 슬슬 CVSS4의 릴리즈가 점점 다가오고 있어 살펴볼 필요가 있긴 합니다.

오늘은 CVSS 4.0의 preview 문서를 보면서 어떤 형태로 변화될지 간략하게 살펴보겠습니다.

CVSS 4.0

from first

Metric group

CVSS3에선 3개의 metric group이 있었는데 CVSS4로 오면서 metric group이 변경되고 총 4개의 group으로 정리됬습니다.

  • CVSS3
    • Base
    • Temporal
    • Environmental
  • CVSS4
    • Base: 취약점의 본질적인 특성을 나타냄
    • Threat: 위협과 관련된 취약점의 특성을 나타냄
    • Environmental: 대상 환경의 고유한 특성을 나타냄
    • Supplemental: 취약점의 추가적인 외적 속성을 나타냄

각각 metrics는 아래와 같은 용어로 정리합니다.

CVSS Nomenclature CVSS Metrics Used
CVSS-B Base metrics
CVSS-BE Base and Environmental metrics
CVSS-BT Base and Threat metrics
CVSS-BTE Base, Threat, Environmental metrics

Interesting things

Attack Requirements (AT)

CVSS-B에 Attack Requirements (AT) 항목이 추가됬습니다. 취약한 시스템의 조건에 따라서 심각도를 조정할 수 있는 항목입니다.

This metric captures the prerequisite deployment and execution conditions or variables of the vulnerable system that enable the attack. These differ from security-enhancing techniques/technologies (ref Attack Complexity) as the primary purpose of these conditions is not to explicitly mitigate attacks, but rather, emerge naturally as a consequence of the deployment and execution of the vulnerable system. If the attacker does not take action to overcome these conditions, the attack may succeed only occasionally or not succeed at all.

예시로 있는건 Race condition인데 여러 조건으로 인해 공격의 성공을 정확하게 통제하지 못하는 경우에 기존에는 Attack Complexity (AC) 등을 통해 스코어를 조정했는데, 이젠 Attack Requirements (AT)를 통해서 조정할 수 있습니다.

User Interaction (UI)

기존에 있던 항목이지만 조금 더 세분화되었습니다. 기존에는 N(None), R(Required)만 지원했다면 CVSS 4.0에선 N(None), A(Active), P(Passive)로 좀 더 세분화되었습니다. Referected XSS와 같이 User Interaction이 살짝 필요한 경우에 CVSS3에선 N/R을 선택하기가 까다로웠다면, 지금은 Passive로 선택하여 기존보다 적절한 값을 세팅할 수 있습니다.

Automatable (AU)

자동화 가능 여부에 대한 항목도 신설되었습니다. 한 1-2년 전부터 버그바운티에서도 nuclei template을 받는 경우가 늘어나고 있었는데, CVSS4로 평가하게 된다면 이러한 부분들도 스코어에 영향을 줄 수 있을 것 같네요.

Vulnerability Response Effort (RE)

취약점을 해결하기 위한 노력의 경중도 CVSS에 포함되었습니다. 단순히 패치나 설정 등을 해결할 수 있는 문제가 있고, 코드나 구조상 어려운 경우들이 있는데 이를 어느정도 반영할 수 있는 요소가 되었네요.

Others

이외에도 엄청나게 많은 항목들이 신설되고 변경되었습니다. 아직 공식 릴리즈도 아니고 모든 케이스를 리뷰하기엔 양이 많아서 개인적으로 살펴보시는 것을 추천드려요.

Metric Group Metric Name (and Abbreviated Form) Possible Values
Base Attack Vector (AV) [N,A,L,P]
Attack Complexity (AC) [L,H] Yes
Attack Requirements (AT) [N,P] Yes
Privileges Required (PR) [N,L,H] Yes
User Interaction (UI) [N,R] Yes
Vulnerable System Confidentiality Impact (VC) [H,L,N] Yes
Subsequent System Confidentiality Impact (SC) [H,L,N] Yes
Vulnerable System Integrity Impact (VI) [H,L,N] Yes
Subsequent System Integrity Impact (SI) [H,L,N] Yes
Vulnerable System Availability Impact (VA) [H,L,N] Yes
Subsequent System Availability Impact (SA) [H,L,N] Yes
Threat Exploit Maturity (E) [X,H,F,P,U]
Environmental Confidentiality Requirement (CR) [X,H,M,L]
Integrity Requirement (IR) [X,H,M,L] No
Availability Requirement (AR) [X,H,M,L] No
Modified Attack Vector (MAV) [X,N,A,L,P] No
Modified Attack Complexity (MAC) [X,L,H] No
Modified Attack Requirements (MAT) [X,N,P] No
Modified Privileges Required (MPR) [X,N,L,H] No
Modified User Interaction (MUI) [X,N,R] No
Modified Vulnerable System Confidentiality (MVC) [X,N,L,H] No
Modified Vulnerable System Integrity (MVI) [X,N,L,H] No
Modified Vulnerable System Availability (MVA) [X,N,L,H] No
Modified Subsequent System Confidentiality (MSC) [X,N,L,H] No
Modified Subsequent System Integrity (MSI) [X,N,L,H,S] No
Modified Subsequent System Availability (MSA) [X,N,L,H,S] No
Supplemental Safety (S) [X,N,P]
Automatable (AU) [X,N,Y] No
Recovery (R) [X,A,U,I] No
Value Density (V) [X,D,C] No
Vulnerability Response Effort (RE) [X,L,M,H] No
Provider Urgency (U) [X,Clear,Green,Amber,Red] No

Calculator

https://www.first.org/cvss/calculator/4.0

Conclusion

아직 preview 버전이라 변경될 수도 있습니다. 아마 올해까지 피드백을 받고 올해 말이나 내년 초에 릴리즈하지 않을까 싶은데요. 개인적으론 세분화된 부분이 많아서 좋다는 인상이 들었습니다. 다만 모든 취약점 케이스에 이걸 적용하면 상당히 힘들겠다란 생각이 들기도 하네요 😭

calculator가 있어도 실무에서 사용해보면 굉장히 손이 많이가기 때문에 도구나 프로세스, 환경적인 측면에서 이를 보조해주는 역할이 있어야 잘 적용될 수 있지 않을까 싶습니다.

그리고 오랜만에 글을 작성하는데, 최근에 여러가지 만들고 있는게 많다보니 조금 소홀해지지 않았나 싶네요 (회사일도 바쁘구요). 만들고 있는 도구들, 그리고 개선중인 블로그 웹 등이 정리되면 다시 한번 달려보겠습니다 :D

References