CWE
더 많은 작업
- Common Weakness Enumeration
- CVE를 관리하는 MITRE 프로젝트로 주요 보안 약점(weakness), 보안 문제 정리 프로젝트
CWE는 소프트웨어와 하드웨어에서 흔히 나타나는 약점(weakness)의 유형을 커뮤니티가 함께 정리한 목록이자 분류 체계이다. CWE 공식 사이트는 약점을 '소프트웨어, 펌웨어, 하드웨어 또는 서비스 구성 요소에 있으면서 특정 조건에서 취약점이 생기는 데 기여할 수 있는 상태'로 정의한다. 즉 CWE는 개별 제품의 구체적 결함이 아니라 "입력값을 검증하지 않은 SQL 생성", "경계 밖 쓰기"처럼 결함의 종류에 번호를 붙인 것이다. 각 항목은 CWE-79(교차 사이트 스크립팅), CWE-89(SQL 주입)처럼 'CWE-번호' 형식의 식별자를 가진다.
CWE 프로그램은 미국 국토안보부 사이버보안·기반시설보안청(CISA)이 후원하고, MITRE가 운영하는 국토안보 시스템 엔지니어링 개발 연구소(HSSEDI)가 관리한다. 목록은 1년에 3~4회 갱신되며, 웹 사이트와 REST API로 전체를 검색하거나 내려받을 수 있다. 약점을 알면 개발자, 하드웨어 설계자, 보안 아키텍트가 배포 전에 그 원인을 없앨 수 있고, 이는 배포 후 고치는 것보다 훨씬 쉽고 싸다는 것이 CWE의 존재 이유이다. CISSP 출제 기준 8.5 '소스 코드 수준의 보안 약점과 취약점' 항목과 직접 연결된다.
| 항목 | CVE | CWE |
|---|---|---|
| 목적 | – 취약점 사전, 코드
– 공통 명칭(혼선 방지) |
– 취약점 분류 체계
– 카테고리 정리 |
| 분류 기준 | – 취약점 발견년도
– 취약점 고유번호 |
– 뷰, 카테고리
– 취약점, 복합 요소 |
| 선정 기준 | – MITRE 심사
– 취약점 수집 및 심사 |
– CWSS(정량 평가)
– 약점, 공격, 환경측면 |
| 내용 | – 보안 취약점 명칭
– 고유번호, 히스토리 |
– 취약점 정의, 설명
– 플랫폼, 빈도, 예제코드 |
| 사례 | – CVE-2017-5753(스펙터)
– CVE-2017-5754(멜트다운) |
– CWE-700 (7PK)
– CWE-928 (OWASP Top10) |
CWE 항목은 추상화 수준에 따라 나뉜다. 위로 갈수록 일반적이고 아래로 갈수록 특정 언어·기술에 가깝다.
| 수준 | 설명 | 예 |
|---|---|---|
| 기둥(Pillar) 약점 | 더 이상 추상화할 수 없는 최상위 약점이다. 연구 개념 뷰(Research Concepts, CWE-1000)의 최상위 항목으로, 그 아래 모든 Class·Base·Variant 약점의 주제를 대표한다. 카테고리와 달리 그 자체가 하나의 실수를 기술하는 약점이다. | 부적절한 접근 통제(CWE-284) |
| 클래스(Class) 약점 | 특정 언어나 기술과 무관하게 매우 추상적으로 기술한 약점이다. 주로 동작, 속성, 자원 중 1~2가지 측면으로 설명한다. | 입력 검증 부적절(CWE-20) |
| 기본(Base) 약점 | 탐지와 예방 방법을 구체적으로 떠올릴 수 있을 만큼 상세한 약점이다. 동작, 속성, 기술, 언어, 자원 중 2~3가지 측면으로 설명한다. 취약점 원인 매핑에 가장 권장되는 수준이다. | SQL 주입(CWE-89), 경계 밖 쓰기(CWE-787) |
| 변형(Variant) 약점 | 특정 언어나 기술 같은 특정 제품 유형에 묶인 약점이다. 3~5가지 측면으로 설명한다. | 공개 메서드가 비공개 자료 구조를 반환(CWE-495) |
이 밖에 공통 특성을 가진 항목을 묶는 카테고리(Category)가 있는데, 카테고리는 약점이 아니라 찾기 쉽게 하려는 구조 항목이다. 특정 목적에 맞게 항목을 모아 보여 주는 뷰(View)도 있다. 대표적인 뷰로는 소프트웨어 개발 개념으로 정리한 소프트웨어 개발 뷰, 하드웨어 설계 뷰, 동작 중심으로 정리한 연구 개념 뷰가 있다. 약점이 다른 약점을 낳는 관계는 사슬(chain)로, 근본 원인이 되는 약점은 1차 약점(primary weakness)으로 표현한다.
'CWE Top 25 가장 위험한 소프트웨어 약점(Most Dangerous Software Weaknesses)'은 한 해 동안 공개된 CVE 레코드의 근본 원인을 분석해, 흔하면서 영향이 큰 약점 25개를 순위로 매긴 목록이다. 2025년판(2025년 12월 공개)은 39,080개 CVE 레코드를 분석 대상으로 했다. 순위 점수에는 해당 약점이 원인인 CVE의 빈도와 심각도가 반영되며, CISA의 악용 확인 취약점 목록(KEV) 포함 건수도 함께 공개된다.
| 순위 | ID | 약점 |
|---|---|---|
| 1 | CWE-79 | 웹 페이지 생성 중 입력 무력화 부적절(교차 사이트 스크립팅, XSS) |
| 2 | CWE-89 | SQL 명령에 쓰이는 특수 요소 무력화 부적절(SQL 인젝션) |
| 3 | CWE-352 | 교차 사이트 요청 위조(CSRF) |
| 4 | CWE-862 | 인가 누락(Missing Authorization) |
| 5 | CWE-787 | 경계 밖 쓰기(Out-of-bounds Write) |
| 6 | CWE-22 | 제한된 디렉터리로의 경로 이름 제한 부적절(경로 조작) |
| 7 | CWE-416 | 해제 후 사용(Use After Free) |
| 8 | CWE-125 | 경계 밖 읽기(Out-of-bounds Read) |
| 9 | CWE-78 | 운영체제 명령에 쓰이는 특수 요소 무력화 부적절(OS 명령 주입) |
| 10 | CWE-94 | 코드 생성 통제 부적절(코드 주입) |
11위부터는 고전적 버퍼 오버플로(CWE-120), 위험한 유형의 파일 무제한 업로드(CWE-434), 널 포인터 역참조(CWE-476), 스택 기반 버퍼 오버플로(CWE-121), 신뢰할 수 없는 데이터의 역직렬화(CWE-502), 힙 기반 버퍼 오버플로(CWE-122), 부정확한 인가(CWE-863), 입력 검증 부적절(CWE-20), 부적절한 접근 통제(CWE-284), 민감 정보 노출(CWE-200), 중요 기능 인증 누락(CWE-306), 서버 측 요청 위조(CWE-918), 명령 주입(CWE-77), 사용자 제어 키를 통한 인가 우회(CWE-639), 제한 없는 자원 할당(CWE-770) 순이다.
순위는 해마다 바뀐다. 2025년판에서는 인가 누락(CWE-862)이 전년보다 다섯 계단 올라 4위가 되었고, 경계 밖 쓰기(CWE-787)는 세 계단 내려왔다. 주입 계열과 메모리 안전 계열, 인가·접근 통제 계열이 계속 상위권을 차지한다는 흐름을 보는 것이 순위 암기보다 중요하다. CWE 프로그램은 같은 해에 KEV 기반 상위 10대 약점과 25위권 바로 밖의 15개 약점('On the Cusp') 목록도 함께 공개했다.
- 공통 언어: 개발자, 보안 테스터, 도구 공급자가 같은 약점을 같은 번호로 부른다. SAST·DAST 도구는 탐지 결과에 CWE ID를 붙여 보고한다.
- 코딩 표준의 기준: 조직의 시큐어 코딩 지침을 CWE Top 25나 관련 뷰에 매핑해 어떤 약점을 금지·검사할지 정한다. CWE 사이트는 OWASP Top 10, SEI CERT 코딩 표준 같은 외부 자료와의 매핑도 제공한다.
- 근본 원인 분석: 취약점이 발견되면 원인 CWE를 기록해, 어떤 약점 유형이 반복되는지 통계로 보고 교육과 도구 규칙을 보강한다. NVD도 CVE마다 원인 CWE를 표시한다.
- 도구 평가와 조달: 보안 테스트 도구가 어떤 CWE를 탐지하는지 비교하거나, 공급업체에 특정 CWE 부류가 없음을 요구하는 근거로 쓴다.
- 우선순위: 모든 약점을 한 번에 없앨 수 없으므로 Top 25와 KEV 기반 목록으로 실제 악용되는 부류부터 막는다.
- CWE는 약점의 유형, CVE는 특정 제품의 개별 취약점, CVSS는 취약점의 심각도 점수이다. 세 가지를 구분하는 문제가 자주 나온다.
- 소스 코드 수준의 약점을 없애는 것이 가장 비용 효율적인 시점은 설계·구현 단계이다. CWE Top 25는 개발자 교육과 코드 리뷰 우선순위 설정에 쓴다.
- CWE 계층은 Pillar → Class → Base → Variant 순으로 구체화된다. 취약점 원인 매핑에는 Base 수준이 권장된다.
- 상위권의 주입(XSS, SQL, OS 명령)과 메모리 안전(경계 밖 쓰기·읽기, 해제 후 사용) 약점은 입력 검증·출력 인코딩·매개변수화 쿼리와 메모리 안전 언어로 대응한다.
- About CWE – MITRE
- CWE Top 25 Most Dangerous Software Weaknesses – MITRE
- 2025 CWE Top 25 Most Dangerous Software Weaknesses – MITRE
- CWE Glossary – MITRE