CWE (Common Weakness Enumeration) ?

Common Weakness Enumeration의 약자로, 나열된 단어 자체만 본다면 '일반적인 결함의 나열' 이라고 볼 수 있습니다.

 

 

지침서와 같은 'CWE'를 이용하면 정적 분석의 한 부분인 실행시간 오류 ( Runtime Error )를 검출할 수 있습니다. , 프로그램을 실행시키지 않고 분석하면서 오동작을 일으킬 수 있는 코드를 검출 할 수 있게 됩니다. 실제로 방위사업청에서는 무기체계 SW 지침을 통해서 CWE-658 CWE-659를 바탕으로 실행시간 결함에 대한 검출 기준을 요구하고 있습니다.

이러한 CWE SQL 인젝션, 크로스 사이트 스크립팅, 버퍼 오버 플로우 등 다양한 소프트웨어의 결함을 식별하기 위해 결함의 종류(결함의 유형) 목록을 체계화하여 제공하고 있으며, CWE를 사용한다면 소프트웨어 개발자와 보안 전문가 등이 다음과 같은 장점을 얻을 수 있습니다.

 

1. 소프트웨어 아키텍처, 디자인, 코드에 내재 된 결함에 대해 일반적인 검토를 할 수 있게 된다.

2. 결함 검사 도구 등 소프트웨어의 보안을 향상시키기 위한 도구의 표준 척도로 사용할 수 있다.

3. 결함의 원인을 인식하고 결함을 감소시키며, 재발의 방지를 위한 공통의 기준으로서 활용할 수  있다.

 

CWE 지침서의 항목은 https://cwe.mitre.org/에서 확인해 볼 수 있으며 대표적인 항목은 CWE- 658, CWE-659, CWE-660이 있습니다.

덧붙여, CWE 의 간단한 설명을 하자면

 

 

CWE의 결함 유형으로는 뷰(View), 카테고리(Category), 취약점(Weakness), 복합 요인(Compound Element) 4종류로 분류되는데 이 중에 CWE 658 C에서 정적 분석 도구에 의해 검출되는 오류를 규정해 놓은 것으로써 전체 81개의 취약점을 가지고 있으며, 각각 유형에 따라 카테고리(Category) 3, 취약점(Weakness) 76, 복합 요인(Compound Element) 2개를 지니고 있습니다.

 

CWE - 659 C++에서 정적 분석 도구에 의해 검출되는 오류를 규정해 놓은 것으로써 전체 85개의 취약점을 가지고 있으며, 각각 유형에 따라 카테고리(Category) 3, 취약점(Weakness) 81, 복합 요인(Compound Element) 1개를 지니고 있습니다.

CWE 660 Java에서 정적 분석 도구에 의해 검출되는 오류를 규정해 놓은 것으로써 전체 74개의 취약점을 가지고 있으며, 각각 유형에 따라 카테고리(Category) 2, 취약점(Weakness) 72개를 지니고 있습니다.

 

아래의 표를 통해 CWE-658 CWE-659의 차이점을 볼 수 있습니다.

  

 우리는 해당 표를 통해, CWE-658에만 있는 항목은 5, CWE-658에만 있는 항목 8개이고 공통 항목의 개수는 76개로 보여지는 것을 확인할 수 있습니다.

 

 

+ Recent posts