CWE(Common Weakness Enumeration)
CWE는 소프트웨어와 하드웨어의 설계, 디자인, 코드 구현에서 발생할 수 있는 결함, 버그, 에러 등의 보안 약점을 카탈로그화한 것이다.
주요 목적
- 보안 약점에 대한 공통 언어 제공
- 소프트웨어 보안 도구 간의 호환성 향상
- 보안 약점 식별 및 완화를 위한 기준 제공
표기 방식
ID 체계
CWE는'CWE-XXX'
형식으로 표기된다.
예:- CWE-119: 버퍼 오버플로우
- CWE-89: SQL 인젝션
- CWE-79: 크로스 사이트 스크립팅
상세 정보 구조
각 CWE 항목은 다음과 같은 정보를 포함한다:- 설명 (Description)
- 확장된 설명 (Extended Description)
- 관련 취약점 (Related Vulnerabilities)
- 약점 메커니즘 (Weakness Mechanism)
- 적용 가능한 플랫폼 (Applicable Platforms)
- 일반적인 결과 (Common Consequences)
- 탐지 방법 (Detection Methods)
- 잠재적 완화 방법 (Potential Mitigations)
CWE의 주요 구조와 계층
CWE는 계층적 구조로 구성되어 있으며, 크게 세 가지 주요 계층으로 나뉜다:
- 상위층: 일반적인 범주로 취약점을 분류하며, 벤더, 기업 관리자, 연구자들 간의 소통을 위한 것.
- 중간층: 시스템 관리자, 보안 전문가, 소프트웨어 개발자를 위한 더 구체적인 정의를 제공한다.
- 하위층: 일반 사용자와 IT 분야 전반에 유용한 상세한 취약점 목록을 포함한다.
CWE는 또한 다음과 같은 구성 요소로 이루어져 있다:
- 뷰(View): 특정 관점이나 목적에 따라 CWE 항목들을 그룹화한 것.
- 개발 개념 뷰 (Development Concepts) 소프트웨어 개발 관점에서 취약점을 분류.
- 연구 개념 뷰 (Research Concepts) 학술적/연구적 관점에서 취약점을 분류.
- 아키텍처 뷰 (Architectural Concepts) 시스템 설계 관점에서 취약점을 분류.
- 카테고리(Category): 관련된 취약점들의 집합.
- 약점(Weakness): 개별적인 소프트웨어 취약점을 나타낸다.
- 필러 약점(Pillar Weakness): 가장 추상화된 최상위 수준의 약점
- 클래스 약점(Class Weakness): 언어나 기술에 독립적인 추상적 약점
- 기본 약점(Base Weakness): 구체적인 탐지 및 예방 방법을 유추할 수 있는 수준의 약점
- 약점 변형(Weakness Variant): 특정 언어나 기술에 한정된 매우 구체적인 약점
- 복합 요소(Compound Element): 여러 약점이 결합된 복잡한 시나리오를 설명한다.
CWE의 깊이 표현 (Depth Representation)
- 추상 레벨 (Abstract): 고수준의 일반적인 취약점 개념을 설명한다.
예: CWE-664: 부적절한 제어 흐름 관리 - 클래스 레벨 (Class): 특정 유형의 취약점 그룹을 정의한다.
예: CWE-119: 메모리 버퍼 범위 오류 - 기본 레벨 (Base): 구체적인 취약점 유형을 설명한다.
예: CWE-121: 스택 기반 버퍼 오버플로우 - 변형 레벨 (Variant): 매우 구체적인 취약점 구현을 설명한다.
예: CWE-123: 쓰기 가능한 메모리 위치에 대한 쓰기
CWE의 관계 유형
- 상속 관계 (ChildOf): 더 일반적인 취약점 유형으로부터 상속받은 관계를 나타낸다.
- 멤버십 관계 (MemberOf): 특정 카테고리나 뷰에 속하는 관계를 나타낸다.
- 연관 관계 (CanFollow, CanPrecede): 다른 취약점과의 시간적, 인과적 관계를 나타낸다.
CWE의 활용 방법
- 보안 요구사항 정의
개발 초기 단계에서 방지해야 할 취약점 유형을 식별한다. - 코드 리뷰 가이드
특정 취약점 유형에 대한 코드 리뷰 체크리스트를 작성한다. - 보안 테스트 계획
테스트 케이스 설계 시 CWE를 참조하여 포괄적인 테스트를 계획한다. - 취약점 분류 및 보고
발견된 취약점을 표준화된 방식으로 분류하고 보고한다.
CWE의 중요성
- 보안 취약점 예방: 개발 초기 단계에서 보안 약점을 식별하고 제거
- 표준화된 보안 평가: 소프트웨어 보안성 평가를 위한 공통 기준 제공
- 보안 교육: 개발자들에게 일반적인 보안 약점과 방지 방법 교육
CWE Top 25
매년 가장 위험하고 일반적인 소프트웨어 약점 25개를 선정하여 발표한다.
이는 개발자와 보안 전문가들에게 중요한 참고 자료가 된다.