Home CWE(Common Weakness Enumeration) 구조 및 표기 방식
Post
Cancel

CWE(Common Weakness Enumeration) 구조 및 표기 방식

  • 소프트웨어 및 하드웨어 보안 취약점을 분류한 CWE(Common Weakness Enumeration) 구조 및 표기 방식을 소개한다.

  • CWE는 다음 URI에서 확인할 수 있다. Link: https://cwe.mitre.org/

CWE 구조

  • View를 제외한 다른 약점들은 다른 유형의 약점들과 1:N 관계를 가지는 그래프로 구성된다. 이러한 그래프 구조를 통해 약점들을 세분화된 단계로 분류할 수 있다.

image

CWE 유형

  • Type을 통하여 약점의 특성을 파악 할 수 있다.

image

View

  • CWE를 소개하는 가장 큰 집합이다.
  • 관점(View by Software Development 등)에 따라, 외부 규칙과의 매핑(CWE Top 25 등)에 따라, 특정 도메인 또는 사용 유형(Software Written in C, Weakenss in Mobile Applications 등)에 따라, 과거에 제작된 view에 따라 분류된다.
  • 모든 View 리스트에 대한 정보는 다음 URL을 참고하면 된다. 출처: https://cwe.mitre.org/data/index.html

Category

  • 공통된 특성을 공유하고 다른 집합을 포함하는 집합으로, 사용자가 약점을 검색하고 식별하는데 도움이 되는 구조화된 분류 항목이다. Weakness - Class
  • 범위가 넓고 일반화된 약점으로, 구체적이지 않고 추상적으로 설명되어 있다.

ex) Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’): 동시에 실행되는 스레드들이 공유 자원에 접근하려고 할 때 발생하는 현상을 ‘Race Condition’이라고 한다. Race Condition의 원인은 다양하기에 이를 구체적으로 설명하기 어렵다. 해당 규칙은 구체적인 설명이 없기에, Weakness - Class에 포함된다.

Weakness - Base

  • 추상적으로 설명되어 있지만 구체적인 방법을 유추하기에 필요한 세부 정보가 설명되어 있다. Weakness - Class 보다 구체적이다.

ex) CWE-478: Missing Default Case in Switch Statement: switch … case 문에서 default 구문을 추가하여 예상치 못한 상황을 대비해야 한다. 추상적인 약점 설명이지만, default 문을 추가해야 한다는 구체적인 설명이 있으므로, Weakness - Base에 포함된다.

Weakness - Variant

  • 특정 프로그래밍 언어 또는 기술에 대한 약점이다. Weakness - Base 보다 구체적이다.

ex) CWE-415: Double Free: C와 C++에서는 개발자가 직접 메모리를 할당하고 해제(free)할 수 있다. free 함수는 특정 언어(C와 C++)에서만 사용하기에, Weakness - Variant에 포함된다.

Compound Element - Composite

  • 두 개 이상의 약점이 동시에 존재하는 경우, 잠재적으로 취약점이 발생할 수 있다. 약점을 제거하면 위험이 제거되거나 발생 확률이 감소한다. Compound Element - Named Chain
  • 서로 연결될 수 있는 두 개 이상의 약점들이다. 하나의 약점은 또 다른 약점으로 이어질 수 있는 필요 조건이며, 취약점이 발생할 수 있다.

ex) CWE-689: Permission Race Condition During Resource Copy: 자원 복사가 완료될 때까지 자원의 권한과 접근 제어를 설정하지 않는 경우, 자원이 다른 영역이 노출된다. CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’) 즉, 경쟁 상태 약점과 CWE-732: Incorrect Permission Assignment for Critical Resource 즉, 공유 가능한 자원의 잘못된 권한 약점으로 인하여 발생할 수있다.(해당 약점은 필요 조건) 경쟁 상태와 권한 설정으로 인한 약점을 해결하는 경우, CWE-689 약점을 해결할 수 있다.

Compound Element - Named Chain

  • 서로 연결될 수 있는 두 개 이상의 약점들이다. 하나의 약점은 또 다른 약점으로 이어질 수 있는 필요 조건이며, 취약점이 발생할 수 있다.

ex) CWE-690: Unchecked Return Value to NULL Pointer Dereference: NULL 포인터 역 참조에 대한 체크되지 않은 반환 값은 취약점이 발생하게 된다. CWE-252: Unchecked Return Value 즉, 체크되지 않은 반환 값을 사용하게 되면 CWE-690 약점이 발생할 수 있다. 또한 CWE-690 약점이 수정되지 않으면 뒤이어 CWE CWE-476: NULL Pointer Dereference 즉, NULL 포인터 역참조 약점으로 이어지게 된다.

CWE Nature

  • Nature을 통하여 약점 간의 관계를 파악 할 수 있다.

  • MemberOf -> HasMember: 소프트웨어 개발 관련 view(CWE-699)에 포함된 category와의 관계를 표현
  • CanPrecede -> CanFollow: 다른 악점과의 원인 결과
  • StartsChain -> StartsWith: 복잡하게 얽힌 약점 구조
  • ParentOf: 낮은 수준의 추상화 약점 -> ChildOf: 높은 수준의 추상화 약점
  • PeerOf: 다른 약점과의 유사성
  • CanAlsoBe: 특정 환경과 상황에서 약점이 발생할 수 있음
  • Requires -> RequiredBy: 약점이 발생하기 위해서 필요한 필요 조건

  • 예를 들어 CWE-476: NULL Pointer Dereference는 부모 노드, CWE-690: Unchecked Return Value to NULL Pointer Dereference는 자식 노드다. CWE-476은 NULL 포인터 역참조를 사용할 때 발생하는 약점이다. CWE-690는 함수가 NULL 포인터를 반환하고 해당 반환 값을 사용하는 경우 충돌이 발생하거나 종료되는 약점으로 CWE-476을 구체화 하였으므로 자식 노드가 된다.

출처: https://m.blog.naver.com/PostView.nhn?blogId=suresofttech&logNo=221238390435&referrerCode=0&searchKeyword=CWE
https://cwe.mitre.org/documents/schema/#RelatedNatureEnumeration
https://cwe.mitre.org/data/reports/chains_and_composites.html

This post is licensed under CC BY 4.0 by the author.

Project Lab 21. 사용자 페이지 개발 - 1

Project Lab 22. 사용자 페이지 개발 - 2

Comments powered by Disqus.

Trending Tags