오늘은 취약점과 대표적인 취약점 분류(vulnerability taxonomy)들에 대해 공부해 보고자 한다.
제로 데이 취약점을 통한 공격이 많아지고 있지만, 이미 알려진 취약점을 잘 알고 방어하는 것은 제로 데이 취약점을 찾아내는 것만큼 중요하고, 제로 데이 취약점을 막기 위한 기반을 만드는 일이라는 생각이 든다.
보안 취약점(Vulnerability)
- 보안 취약점은 정보시스템이나 소프트웨어 상에 존재하는 보안 상의 약점이다. 공격자는 이러한 취약점들을 이용하여 기업을 해킹하거나 정보 유출 등 악성 행위를 할 수 있게 된다.
취약점과 약점(Vulnerability and Weakness)
보안 취약점과 약점은 동일한 의미를 가지는 단어라고 느껴지지만 사실 차이가 있다고 한다.
-
보안 약점은 개발 단계에서 발생하는 보안관련 오류로, 이론상의 보안 오류이다. 따라서 실제로 발생할 가능성은 낮다.
반면, 취약점은 운영 단계에서 발생하는 보안관련 오류로, 실제로 공격으로 이어질 가능성이 있는 오류들이다.
-
약점을 취약점보다 큰 개념으로 보는 경우도 있는 것 같다. 보안 약점 중 공격자가 실제 공격에 활용할 수 있다면 취약점으로 분류하는 것이다.
약점은 CWE(Commom Weakness Enumeration)로, 취약점은 CVE(Common Vulnerability Enumeration)로 분류되어 관리되고 있다.
CCE(Common Configuration Enumeration)
CCE Official Website
- 시스템의 설정들과 관련된 취약점 리스트이다.
- 허용된 범위 이상의 동작 허용, 필요 이상의 정보 노출 등을 가능하게 하는 시스템 설정 상의 문제와 관련되어 있다
- 정보 시스템의 설정 값(configuration)을 통하여 취약점을 진단한다
CVE(Common Vulnerabilities and Exposures)
CVE Official Website
CVE details
- CVE는 대중에게 알려진 information security vulnerability들과 exposure들의 카탈로그를 제공한다.
출처 : CVE details(CVE details)
CVE에서 정의한 Vulnerability와 Exposure
- Vulnerability : The state of being exposed to an attacker who can maliciously gain full access to a network or system
- Exposures : A mistake in software code or configuration that provides an attacker with indirect access to a network or system
CVE의 목적
- 식별된 vulnerability와 exposure을 알리는 방식을 표준화하기 위해 CVE database를 유지함
- vulnerability와 exposure의 Standard ID는 보안 관리자가 여러 CVE 호환 information sources에 의해 식별되는 특정 위협의 기술적 정보에 빠르게 접근하도록 지원
CVE의 구성
- CVE-ID : 실제 CVE 식별자(Identifier), CVE + Year + arbitrary Digits의 순으로 정의됨
예) CVE-2012-2234
- Description : 문제점에 대한 설명(Text description of the issue), 아직 해결이 되지 않은 취약점인 경우에는 number만 있고 description은 없는 경우가 있을 수 있다
- References : 문제점에 대한 URL 및 다른 정보들
- Date Entry Created
- Phase/Votes/Comments/Proposed
CWE(Common Weakness Enumeration)
CWE Official Website
- A formal catalog of software weakness types
- 설계, 디자인 및 코드에 존재하는 소프트웨어 보안 약점에 대한 표준화된 정보를 제공한다
- CWE의 약점들은 "Research Concepts", "Software Development", "Hardware Design" 등으로 분류된다
CWE에서 정의한 약점(weakness)
-
A "weakness" is a condition in a software, firmware, hardware, or service component that, under certain circumstances, could contribute to the introduction of vulnerabilities.
-
"약점"은 특정 환경에서 취약점의 도입에 도움을 줄 수 있는 소프트웨어, 펌웨어, 하드웨어, 또는 서비스 구성 요소의 상태이다.
Weaknesses in the 2022 CWE Top 25 Most Dangerous Software Weaknesses
CWE 공식 웹사이트를 보다보면, CWE Top25를 비롯한 다양한 보안 약점과 관련된 정보를 얻을 수 있다.
CWE Top 25 2022
2022년에 선정된 CWE에서 가장 위험한 소프트웨어 약점들은 다음과 같다.
- Out-of-bounds Write
- Improper Neutralization of Input During Web Page Generation('Cross-site Scripting')
- Inproper Neutralization of Special Elements used in an SQL Command('SQL Injection')
- Improper Input Validation
- Out-of-bounds Read
- Improper Neutralization of Special Elements used in an OS Command('OS Command Injection')
- Use After Free
- Improper Limitation of a Pathname to a Restricted Directory('Path Traversal')
- Cross-Site Request Forgery(CSRF)
- Unrestricted Upload of File with Dangerous Type
- NULL Pointer Dereference
- Deserialization of Untrusted Data
- Iteger Overflow or Wraparound
- Improper Authentication
- Use of Hard-coded Credentials
- Missing Authorization
- Improper Neutralization of Special Elements used in a Command('Command Injection')
- Missing Authentication for Critical Function
- Improper Restriction of Operations within the Bounds of a Memory Buffer
- Incorrect Default Permissions
- Server-Side Request Forgery(SSRF)
- Concurrent Execution using Shared Resource with Improper Synchronization('Race Condition')
- Uncontrolled Resource Consumption
- Improper Restriction of XML External Entity Reference
- Improper Control of Generation of Code('Code Injection')
참고자료
https://hanwitjus.tistory.com/m/16
https://www.boannews.com/media/view.asp?idx=47656
http://m.boannews.com/html/detail.html?idx=51129
CCE Official Website
CVE Official Website
CVE details
CWE Official Website