보안의 표준화를 위한 노력 / CVSS의 역사
일상에서 수치화된 지표는 우리의 이해를 돕는 강력한 도구입니다. 개인의 건강을 BMI로, 학생의 성취도를 학점으로, 경제 상황을 GDP로 측정하듯이, 소프트웨어 보안 취약점 또한 수치로 측정할 수 있습니다. 바로 CVSS(Common Vulnerability Scoring System)라는 객관적인 척도로 측정할 수 있습니다.
이렇게 쉽게 알아볼 수 있도록 돕는 수치는 보안에 대한 지식이 많지 않은 엔지니어들 또한 비교적 쉽게 이게 얼마나 큰 문제이고, 어떤 우선순위로 접근해야 할지 인지하게 하는 좋은 수단이 됩니다. 하지만, 현대의 변화무쌍한 공격에 고정된 지표로 취약점을 평가할 수 있을까요?
아닙니다. 이렇게 정의된 CVSS도 2005년에 최초로 정의된 이후 요구사항에 의하여 많은 변경을 거쳐왔습니다. 오늘 글을 통하여 CVSS의 변천사에 대하여 이야기를 해보고자 합니다.
⚠️ 해당 글은 필자가 찾아보고 이해한 내용을 바탕으로 작성했습니다. 필자는 보안 전문가가 아니므로 틀린 내용이 있을 수 있습니다.
CVSS v1
2005년, CVSS 1.0은 취약점을 평가하기 위한 첫 표준으로 등장했습니다. (CVSS v1 archive)
이는 미국 국토안보부(DHS)의 요청으로 NIST가 주도하여 개발되었으며, 취약점을 점수화하기 위해 기본 메트릭(Base Metrics), 시간 메트릭(Temporal Metrics), 환경 메트릭(Environmental Metrics)이라는 세 가지 주요 요소를 도입했습니다. 보안 취약점을 일관되게 평가하고, 그 심각성을 측정하기 위한 표준화된 방식으로 개발되었습니다.
하지만 단순한 가중치 기반 계산 방식은 실제 환경을 충분히 반영하지 못했고, 여러 취약점을 일관되게 평가하기 어려웠습니다. 이로 인하여 실제 사용하는 업계에서 상당한 문제가 있다는 평을 받게 되었고, 2개월 뒤인 2005년 4월부터 CVSS v2에 대한 회의를 시작하게 됩니다.
CVSS v2
2005년 4월에 시작한 v2에 대한 논의는 2007년에 발표된 CVSS 2.0은 1.0의 한계를 보완하여, 사용자 친화성을 대폭 강화했습니다. 점수 계산 방식이 더 직관적이고 일관되게 변경되었으며, 각 메트릭의 정의가 구체화되어 실질적인 보안 취약점 관리에서 활용도가 높아졌습니다. 이를 통해 CVSS는 기업과 보안팀이 취약점을 우선순위에 따라 관리할 수 있는 도구로 자리 잡기 시작했습니다.
하지만, Scoring System이 정확한 영향에 대한 너무 자세한 지식을 요구한다고 지적받았습니다. 또한, Scope를 고려하지 않았기 때문에 여러 가지 지표가 서로 다른 유형의 취약점을 구별하기에 충분하지 않다는 불만이 있었습니다. 2013년에 Risk-based Security는 CVSSv2의 문제점과 단점을 설명하는 서한을 FIRST에 보내기도 했고, Oracle은 이런 문제를 해결하기 위하여 Partial+라는 Rating을 추가하기도 했습니다. (Oracle)
CVSS v3
위에서 언급한 문제를 해결하기 위하여 2015년 6월에 CVSS v3를 출시했습니다. CVSS v3에서는 새로운 지표들을 추가 및 수정하여 문제를 해결하고자 하였습니다.
1. User Interaction(UI) 및 Privileges Required(PR)을 추가하여 사용자의 상호작용이 필요한 취약성과 사용자 또는 관리자 권한이 필요한 취약성에 대하여 측정할 수 있도록 하였습니다. 기존 Access Complexity로 함께 계산되던 사용자 상호작용 여부를 분리해내어 명확히 하였고, 기존 v2에서 Authentication을 대체하여 인증이 필요한 횟수 대신 필요한 권한에 대한 지표를 반영합니다. (기존 사용하던 Access Complexity는 Attack Complexity로 변경되어 하드웨어 및 소프트웨어의 조건을 다룹니다.)
2. Scope(S)라는 새로운 지표를 추가하여 취약점이 단일 시스템에 국한되지 않고 다른 시스템이나 컴포넌트에 영향을 미칠 수 있음을 평가할 수 있도록 하였습니다.
3. 이 외에 Confidentiality, Integrity, Availability의 영향을 좀 더 유연하게 할 수 있도록 value를 변경하였고, Attack Vector에 Physical 값을 추가하며 장치나 시스템에 물리적으로 접근해야 작동하는 취약성을 설명할 수 있게 되었습니다. (USB와 같은)
이외에 많은 변화들이 있었는데, 추가적인 정보가 궁금하시다면 공식 유저 가이드를 통하여 확인하시기를 바랍니다.
CVSS v3.1
이후 2019년에 CVSS v3에 대한 작은 업데이트가 발표되었습니다. CVSS v3.1은 v3에 새로운 지표나 지표 값을 도입하지 않고 정의와 가이드라인을 명확히 하는 데 초점을 맞춘 업데이트였습니다. 공식 유저 가이드에 따르면 CVSS는 위험성이 아닌 심각성을 측정하는 지표이며, 이를 명확하게 하기 위한 변화라고 언급하고 있습니다.
업데이트에서는 Attack Vector, Scope, Privileges Required, Security Requirements과 같은 기본 지표의 정의를 명확히 하고, 세 가지 지표 그룹(Base, Temporal, and Environmental)에 대한 정의를 더 명확하게 했습니다.
CVSS v4
2024년, 또 한번의 CVSS의 메이저 업데이트가 이루어집니다. 주요 업데이트 사항만 정리해 봅니다.
1. 명명법의 수정
Base Score가 취약성의 심각도에 대한 완전한 평가가 아니라는 표현을 하고, Base만 사용되는 현상을 해결하려 했습니다.
- CVSS-B = CVSS Base
- CVSS-BT = CVSS Base + Threat
- CVSS-BE = CVSS Base + Environmental
- CVSS-BTE = CVSS Base + Threat + Environmental
2. Scope의 삭제
v3에 들어왔던 Scope 지표는 제거되고, 이 개념을 Confidentiality, Integrity, Availability에 각각 나누어 사용하는 형식으로 변경됩니다.
Impact 지표 그룹에 아래와 같은 지표들이 추가됩니다.
- Confidentiality Impact to the Vulnerable System (VC)
- Integrity Impact to the Vulnerable System (VI)
- Availability Impact to the Vulnerable System (VA)
- Confidentiality Impact to Subsequent Systems (SC)
- Integrity Impact to Subsequent Systems (SI)
- Availability Impact to Subsequent Systems (SA)
이외에 Attack Requirements와 같은 지표가 추가되고, UI의 새로운 value가 추가되는 등 더욱더 명확하게 평가하기 위한 변화들이 있었습니다. 앞으로 꽤 오래 함께할 지표라고 생각이 드니 변경 사항은 공식 유저 가이드 문서에서 확인해 보시면 더욱 좋을 것 같습니다.
오늘 글에서는 CVSS의 변천사를 이야기해보았습니다. 이 글을 통해 보안이 조금 더 친숙해지셨다면 좋을 것 같,, 지만 글을 쓴 필자 또한 아직 너무나 어려운 영역이라고 생각합니다. 글을 적으면서 변화무쌍한 보안이라는 분야를 어떠한 지표에 맞춘다는 것 자체가 상당히 어려운 일이라 생각했습니다. 그렇기에 CVSS는 계속 도전을 받고 있고 계속 변화하는 것이라는 생각이 들었습니다.
제가 이 영역을 잘 알지 못하고, 오히려 알기 위하여 적은 글이라서 틀린 점이 많을 수 있습니다. 읽다가 오류가 있다고 느껴지신다면 댓글로 알려주시면 더 찾아보고 수정해 두겠습니다 :) 감사합니다.
Reference
https://www.first.org/cvss/
https://en.wikipedia.org/wiki/Common_Vulnerability_Scoring_System
https://yozm.wishket.com/magazine/detail/2009/
https://avd.aquasec.com/nvd/2018/cve-2018-1000613/
https://www.oracle.com/security-alerts/cvssscoringsystemprior.html
https://www.mend.io/blog/cvss-v3-1/