CWE로 정리하는 소프트웨어 취약점 분류와 보안 관리

CWE의 계층 구조와 주요 약점 유형, CVE·CVSS·OWASP Top 10과의 관계를 바탕으로 SDLC 보안 관리에 활용하는 방법을 정리한다.

2026-08-14 · 최초 발행 2025-06-28

취약점을 같은 언어로 다루기 위한 CWE

CWE(Common Weakness Enumeration)는 소프트웨어와 하드웨어에서 발견되는 보안 취약점을 식별하고 분류하며 열거하는 공통 언어이자 표준화된 분류 체계다. 취약점을 이해하고 찾고 완화하며 예방하는 과정에 통일된 기준을 제공하는 것이 목적이다.

MITRE가 이 체계를 관리·유지보수하며, 소프트웨어 개발 라이프사이클, 보안 테스트, 취약점 관리, 보안 교육 등에서 활용된다. 개발자·테스터·보안 전문가가 같은 약점 유형을 같은 이름으로 지칭할 수 있다는 점이 핵심이다.

CWE는 2006년에 MITRE에서 최초 개발을 시작했고, 2008년에 버전 1.0이 공식 발표됐다. 이후 수천 개의 다양한 소프트웨어 취약점을 분류하는 표준으로 발전했다. 이 배경에는 소프트웨어 취약점에 일관된 분류 체계가 필요하다는 요구가 있었다.

ID와 계층으로 약점 유형을 연결하는 방식

각 CWE 항목에는 CWE-79, CWE-89처럼 고유한 CWE ID가 부여된다. 체계는 넓은 개념에서 세부 약점으로 내려가는 계층 구조를 갖는다.

  • 범주(Categories)
  • 클래스(Classes)
  • 기본 유형(Base Types)
  • 변형(Variants)

CWE Views는 동일한 체계를 여러 관점에서 볼 수 있게 한다. 개발 개념(Development Concepts), 연구 개념(Research Concepts), 약점 유형(Weakness Types), 아키텍처 개념(Architectural Concepts)이 여기에 포함된다.

CWE 체계범주-Categories클래스-Classes기본 유형-Base Types변형-VariantsCWE Views개발 개념연구 개념약점 유형아키텍처 개념

현장에서 자주 마주치는 약점 유형

입력 검증과 표현 처리 영역에서는 CWE-79 크로스 사이트 스크립팅(XSS), CWE-89 SQL 인젝션, CWE-78 OS 명령어 인젝션이 대표적이다. 웹 애플리케이션이 사용자 입력을 적절히 검증하지 못하면 대규모 개인정보 유출 사고로 이어질 수 있다.

인증과 접근 제어에서는 CWE-287 부적절한 인증, CWE-306 중요 기능에 대한 인증 누락, CWE-798 하드코딩된 자격 증명을 살핀다. 약한 패스워드 정책에 따른 계정 탈취나 관리자 페이지의 부적절한 접근 제어에 따른 무단 접근이 이 범주와 맞닿아 있다.

암호화 관련 약점에는 CWE-327 안전하지 않은 암호화 알고리즘 사용과 CWE-311 민감 데이터 암호화 부재가 있다. MD5나 SHA-1과 같은 약한 해시 알고리즘 사용은 패스워드 유출 문제로 이어질 수 있다.

메모리 관리 영역에서는 CWE-119 부적절한 메모리 경계 제어, CWE-416 해제된 메모리 사용(Use After Free), CWE-120 버퍼 오버플로우가 중요하다. C/C++ 프로그램의 버퍼 오버플로우는 원격 코드 실행 취약점의 원인이 될 수 있다.

우선순위 판단에 쓰는 CWE Top 25

CWE Top 25는 가장 위험하고 빈번하게 발생하는 상위 25개 취약점 목록이다. 발생 빈도, 심각도, 영향도 등을 고려해 점수화하며, 개발자와 보안 전문가가 우선 관리해야 할 취약점 정보를 제공한다.

2021년 기준 상위 5개 항목은 다음과 같다.

  1. CWE-787: Out-of-bounds Write (경계를 벗어난 쓰기)
  2. CWE-79: Cross-site Scripting (XSS)
  3. CWE-125: Out-of-bounds Read (경계를 벗어난 읽기)
  4. CWE-20: Improper Input Validation (부적절한 입력 검증)
  5. CWE-78: OS Command Injection (운영체제 명령어 삽입)
30%21%19%15%14%"CWE Top 5 분포 (2021)"CWE-787 (Out-of-bounds Write)CWE-79 (XSS)CWE-125 (Out-of-bounds Read)CWE-20 (Improper Input Validation)CWE-78 (OS Command Injection)

CVE·CVSS·OWASP와 함께 읽는 CWE

CVE(Common Vulnerabilities and Exposures)는 특정 보안 취약점에 고유 식별자를 부여하는 목록이다. 반면 CWE는 취약점의 유형과 분류를 정의한다. 즉 CVE가 특정 제품에서 발생한 구체적 취약점을 가리킨다면, CWE는 그 취약점이 어떤 종류의 약점인지 설명한다. CVE-2021-44228(Log4Shell)은 CWE-20(부적절한 입력 검증) 유형의 취약점이다.

CVSS(Common Vulnerability Scoring System)는 취약점의 심각도를 수치로 평가하는 시스템이다. CWE로 분류한 취약점에 CVSS 점수를 함께 적용하면 보안팀은 약점 유형과 심각도를 함께 고려해 대응 우선순위를 정할 수 있다.

OWASP Top 10은 웹 애플리케이션에서 가장 위험한 10가지 보안 위험을 다룬다. 각 항목은 여러 CWE를 포함할 수 있다. 예를 들어 OWASP의 Injection 항목에는 CWE-89(SQL 인젝션), CWE-78(OS 명령어 인젝션) 등이 포함된다.

보안 취약점CVE: 특정 취약점 식별CWE: 취약점 유형 분류CVSS: 취약점 심각도 평가OWASP Top 10CWE Top 25

SDLC의 각 지점에 약점 분류를 반영하기

CWE는 개발 과정 전체에 적용할 수 있다. 요구사항 분석 단계에서는 보안 요구사항을 정의할 때 참조하고, 설계 단계에서는 알려진 CWE를 고려해 보안 아키텍처를 설계한다. 구현 단계에서는 코딩 표준과 가이드라인에 반영하며, 테스트 단계에서는 CWE 기반 보안 테스트 케이스를 만든다. 유지보수 단계에서는 취약점 관리와 패치 적용 시 활용한다.

보안 테스트에서도 CWE는 분류 기준으로 기능한다.

  • 정적 애플리케이션 보안 테스트(SAST)는 CWE를 기준으로 코드 취약점을 분석한다.
  • 동적 애플리케이션 보안 테스트(DAST)는 CWE 관련 취약점을 동적으로 탐지한다.
  • 침투 테스트에서는 CWE 지식을 활용해 취약점 익스플로잇을 시도한다.

개발자 교육과 코드 리뷰에도 적용할 수 있다. CWE를 바탕으로 실제 취약점 사례를 학습하고, CWE 기반 체크리스트로 보안 코드 리뷰를 수행하며, 주요 약점 유형에 대한 인식을 통해 취약점을 사전에 예방한다.

국내 가이드와 취약점 관리 체계에서의 활용

행정안전부 소프트웨어 개발보안 가이드는 CWE를 참조해 개발됐다. 금융보안원 애플리케이션 보안 가이드라인은 CWE 기반 취약점 관리를 권고하며, 국내 보안 취약점 신고 제도도 CWE를 활용해 취약점을 분류하고 관리한다. 국내 소프트웨어 개발 보안 정책에서는 주요 CWE 취약점에 대한 대응 방안을 마련한다.

CWE를 적용한 보안 개선 사례

대규모 금융 시스템 개발 프로젝트에서는 CWE Top 25를 기반으로 보안 요구사항을 정의했다. 그 결과 개발 초기 단계의 보안 취약점은 82% 감소했고, 운영 후 보안 사고 발생률은 91% 감소했다.

환자 데이터를 처리하는 레거시 의료 시스템에서는 CWE 기반 코드 리뷰와 취약점 분석을 수행했다. 심각한 인증 관련 취약점인 CWE-287, CWE-306을 발견해 조치했고, 개인의료정보 보호를 강화했다.

대량 생산되는 스마트홈 IoT 기기에서는 CWE-119와 CWE-120 등 메모리 관리 관련 취약점을 중점 검토했다. 원격 코드 실행이 가능한 버퍼 오버플로우 취약점을 제품 출시 전에 제거해 안전한 제품 출시에 활용했다.

새로운 기술 환경으로 넓어지는 분류 범위

CWE는 AI/ML 분야의 새로운 취약점 유형을 추가하는 방향으로 확장되고 있다. 컨테이너와 서버리스 같은 클라우드 네이티브 환경의 취약점 분류도 강화 대상이며, 연결 기기가 늘어나는 IoT 및 임베디드 시스템에서는 보안 취약점 유형을 더 세분화할 필요가 있다.

CWE 기반 자동 취약점 탐지·분류 도구도 발전하고 있으며, 보안 취약점 분류의 글로벌 표준으로서 국제 표준화의 위치도 강화되고 있다. CWE는 CVE, CVSS 등 다른 보안 표준과 함께 사용될 때 취약점 관리의 식별·분류·우선순위 판단을 연결하는 기준이 된다.

CWE소프트웨어 보안취약점 관리보안 코딩MITRE