CWE(Common Weakness Enumeration)

CWE는 소프트웨어와 하드웨어의 설계, 디자인, 코드 구현에서 발생할 수 있는 결함, 버그, 에러 등의 보안 약점을 카탈로그화한 것이다.

주요 목적

  1. 보안 약점에 대한 공통 언어 제공
  2. 소프트웨어 보안 도구 간의 호환성 향상
  3. 보안 약점 식별 및 완화를 위한 기준 제공

표기 방식

  1. ID 체계
    CWE는 'CWE-XXX' 형식으로 표기된다.
    예:

    • CWE-119: 버퍼 오버플로우
    • CWE-89: SQL 인젝션
    • CWE-79: 크로스 사이트 스크립팅
  2. 상세 정보 구조
    각 CWE 항목은 다음과 같은 정보를 포함한다:

    • 설명 (Description)
    • 확장된 설명 (Extended Description)
    • 관련 취약점 (Related Vulnerabilities)
    • 약점 메커니즘 (Weakness Mechanism)
    • 적용 가능한 플랫폼 (Applicable Platforms)
    • 일반적인 결과 (Common Consequences)
    • 탐지 방법 (Detection Methods)
    • 잠재적 완화 방법 (Potential Mitigations)

CWE의 주요 구조와 계층

CWE는 계층적 구조로 구성되어 있으며, 크게 세 가지 주요 계층으로 나뉜다:

  1. 상위층: 일반적인 범주로 취약점을 분류하며, 벤더, 기업 관리자, 연구자들 간의 소통을 위한 것.
  2. 중간층: 시스템 관리자, 보안 전문가, 소프트웨어 개발자를 위한 더 구체적인 정의를 제공한다.
  3. 하위층: 일반 사용자와 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)

  1. 추상 레벨 (Abstract): 고수준의 일반적인 취약점 개념을 설명한다.
    예: CWE-664: 부적절한 제어 흐름 관리
  2. 클래스 레벨 (Class): 특정 유형의 취약점 그룹을 정의한다.
    예: CWE-119: 메모리 버퍼 범위 오류
  3. 기본 레벨 (Base): 구체적인 취약점 유형을 설명한다.
    예: CWE-121: 스택 기반 버퍼 오버플로우
  4. 변형 레벨 (Variant): 매우 구체적인 취약점 구현을 설명한다.
    예: CWE-123: 쓰기 가능한 메모리 위치에 대한 쓰기

CWE의 관계 유형

  1. 상속 관계 (ChildOf): 더 일반적인 취약점 유형으로부터 상속받은 관계를 나타낸다.
  2. 멤버십 관계 (MemberOf): 특정 카테고리나 뷰에 속하는 관계를 나타낸다.
  3. 연관 관계 (CanFollow, CanPrecede): 다른 취약점과의 시간적, 인과적 관계를 나타낸다.

CWE의 활용 방법

  1. 보안 요구사항 정의
    개발 초기 단계에서 방지해야 할 취약점 유형을 식별한다.
  2. 코드 리뷰 가이드
    특정 취약점 유형에 대한 코드 리뷰 체크리스트를 작성한다.
  3. 보안 테스트 계획
    테스트 케이스 설계 시 CWE를 참조하여 포괄적인 테스트를 계획한다.
  4. 취약점 분류 및 보고
    발견된 취약점을 표준화된 방식으로 분류하고 보고한다.

CWE의 중요성

  1. 보안 취약점 예방: 개발 초기 단계에서 보안 약점을 식별하고 제거
  2. 표준화된 보안 평가: 소프트웨어 보안성 평가를 위한 공통 기준 제공
  3. 보안 교육: 개발자들에게 일반적인 보안 약점과 방지 방법 교육

CWE Top 25

매년 가장 위험하고 일반적인 소프트웨어 약점 25개를 선정하여 발표한다.
이는 개발자와 보안 전문가들에게 중요한 참고 자료가 된다.


참고 및 출처