콘텐츠로 건너뛰기
Home » SW 보안약점과 보안취약점의 차이|CWE·CVE 완벽 정리

SW 보안약점과 보안취약점의 차이|CWE·CVE 완벽 정리

소프트웨어 보안약점과 보안취약점, CVE 등록 취약점 및 CWE Top 25의 관계를 나타낸 개념도
그림 1. SW 보안약점과 보안취약점의 개념적 관계

※ 이 그림은 보안 관련 개념의 관계를 이해하기 위한 참고 자료입니다.
CWE 목록은 약점 유형을 분류하고 CVE는 공개된 취약점을 식별하므로, 두 목록을 단순한 포함 관계로 해석해서는 안 됩니다.

소프트웨어 보안 분야에서 자주 등장하는 용어가 보안약점(Weakness)과 보안취약점(Vulnerability)입니다.

두 용어는 비슷해 보이지만 의미와 활용 목적에 차이가 있습니다. 특히 소프트웨어 개발 과정에서 발생할 수 있는 보안 문제를 예방하려면 보안약점과 보안취약점의 차이를 정확하게 이해하는 것이 중요합니다.

여기에 보안약점을 분류하는 CWE(Common Weakness Enumeration)와 공개된 보안취약점을 식별하는 CVE(Common Vulnerabilities and Exposures)까지 함께 이해하면 소프트웨어 보안 분석 및 취약점 관리에 도움이 됩니다.

이번 글에서는 SW 보안약점과 보안취약점의 차이, CWE와 CVE의 주요 특징, 그리고 SPARROW를 활용한 정적 코드 분석 및 보안약점 진단 방법을 살펴보겠습니다.

SW 보안약점과 보안취약점의 차이는 무엇인가?

SW 보안약점과 보안취약점은 모두 소프트웨어 보안과 관련된 문제를 의미하지만, 구분하는 기준이 다릅니다.

보안약점(Weakness)은 보안취약점으로 이어질 수 있는 설계, 구현 또는 코드상의 문제 유형이나 조건을 의미합니다.

반면 보안취약점(Vulnerability)은 특정 소프트웨어 또는 시스템에서 악용될 수 있는 구체적인 보안 결함을 의미합니다.

즉, 보안약점이 취약점 발생의 원인이 될 수 있다면, 보안취약점은 실제 제품이나 시스템에서 식별된 보안 문제라고 이해할 수 있습니다.

SW 보안약점과 보안취약점 비교

구분SW 보안약점SW 보안취약점
영문 명칭WeaknessVulnerability
핵심 개념취약점으로 이어질 수 있는 문제 유형이나 조건특정 제품에서 악용될 수 있는 보안 결함
발생 또는 식별 영역설계, 구현, 소스코드 등실제 소프트웨어, 시스템 및 제품
대표 분류·식별 체계CWECVE
주요 관리 목적보안 결함 예방 및 개선식별된 취약점의 영향 평가와 대응
주요 대응 방법시큐어 코딩, 정적 분석, 설계 개선패치, 설정 변경, 완화 조치 등

모든 보안약점이 실제로 악용 가능한 보안취약점으로 이어지는 것은 아닙니다. 그러나 보안약점이 특정 제품의 실행 환경이나 조건과 결합하면 보안취약점이 발생할 수 있습니다.

SW 보안약점(Weakness)이란?

SW 보안약점은 소프트웨어나 하드웨어의 설계, 개발, 구현 과정에서 발생할 수 있으며 특정 조건에서 보안취약점으로 이어질 가능성이 있는 문제를 의미합니다.

보안약점은 개발 단계에서 발견되는 경우가 많으며, 이를 조기에 식별하고 개선하면 향후 발생할 수 있는 보안 위험을 줄이는 데 도움이 됩니다.

대표적인 SW 보안약점 유형

1. 입력값 검증 부족

외부에서 전달되는 입력값을 적절하게 검증하지 않으면 예상하지 못한 데이터 처리나 보안 문제가 발생할 수 있습니다.

2. 메모리 관리 오류

메모리 경계 검사 부족이나 잘못된 메모리 접근은 프로그램 오류 및 보안취약점으로 이어질 수 있습니다.

3. 부적절한 접근 제어

사용자 권한을 올바르게 검증하지 않으면 허가되지 않은 기능이나 데이터에 접근할 수 있는 문제가 발생할 수 있습니다.

4. 민감정보 처리 문제

암호나 인증정보 등 민감한 정보를 안전하게 관리하지 않으면 정보 노출 위험이 발생할 수 있습니다.

이러한 보안약점은 정적 코드 분석과 시큐어 코딩 활동을 통해 개발 단계에서 식별하고 개선할 수 있습니다.

CWE란? 소프트웨어 보안약점 분류 체계

CWE(Common Weakness Enumeration)는 소프트웨어와 하드웨어에서 발생할 수 있는 보안약점을 분류하고 설명하는 공개 목록입니다.

MITRE가 운영하는 CWE 프로그램은 다양한 보안약점에 고유한 식별번호를 부여하여 개발자와 보안 담당자가 공통된 기준으로 보안 문제를 이해하도록 돕습니다.

CWE는 주로 보안약점의 유형과 특성을 파악하고, 개발 과정에서 발생할 수 있는 보안 문제를 사전에 예방하는 데 활용됩니다.

CWE의 주요 특징

  • 소프트웨어 및 하드웨어 보안약점 유형 분류
  • 보안약점별 고유 식별번호(CWE ID) 제공
  • 보안약점의 원인과 영향 설명
  • 보안약점 예방 및 완화 방법 안내
  • 정적 분석 도구 및 보안 점검 기준으로 활용

대표적인 CWE 항목으로는 다음과 같은 유형이 있습니다.

CWE ID보안약점 유형
CWE-79웹 페이지 생성 과정의 입력값 처리 미흡으로 인한 크로스 사이트 스크립팅(XSS)
CWE-89SQL 명령어 구성 과정의 입력값 처리 미흡으로 인한 SQL 인젝션
CWE-787메모리 버퍼 범위를 벗어난 쓰기
CWE-798하드코딩된 인증정보 사용

CWE는 개발자가 어떤 유형의 보안 실수를 예방해야 하는지 이해하는 데 유용한 기준입니다.

 

MITRE CWE의 C 언어 소프트웨어 보안약점 분류 목록과 CWE ID를 보여주는 화면
그림2. CWE 리스트
출처: https://cwe.mitre.org/

위 그림은 CWE에 등록된 보안약점 유형을 확인할 수 있는 목록 화면입니다.

CWE ID를 활용하면 보안약점을 일관된 기준으로 분류하고, 코드 분석 및 보안 점검 결과를 관리하는 데 도움이 됩니다.

최신 보안약점 정보는 CWE 공식 웹사이트에서 확인할 수 있습니다.

SW 보안취약점(Vulnerability)이란?

SW 보안취약점은 특정 소프트웨어나 시스템에 존재하며, 공격자가 악용하여 정보 유출이나 권한 상승, 서비스 장애 등의 보안 영향을 발생시킬 수 있는 결함을 의미합니다.

보안취약점은 설계 또는 구현 과정에서 발생한 하나 이상의 보안약점과 관련될 수 있습니다.

예를 들어 개발 과정에서 입력값을 적절하게 검증하지 않는 보안약점이 존재한다면, 특정 웹 애플리케이션에서 공격자가 이를 악용할 수 있는 SQL 인젝션 취약점으로 나타날 수 있습니다.

이처럼 보안약점은 취약점의 원인이 될 수 있으며, 실제 제품에서 악용 가능한 문제로 확인되면 보안취약점으로 다뤄질 수 있습니다.

CVE란? 공개된 보안취약점 식별 체계

CVE(Common Vulnerabilities and Exposures)는 공개적으로 알려진 보안취약점을 고유한 식별번호로 관리하는 프로그램입니다.

CVE 프로그램은 특정 제품이나 시스템에서 발견된 보안취약점에 식별번호를 부여하여 보안 담당자와 개발자가 동일한 취약점을 일관되게 참조할 수 있도록 지원합니다.

CVE의 주요 특징

  • 공개된 보안취약점에 고유 식별번호 부여
  • 취약점의 영향을 받는 제품과 문제점 식별 지원
  • 보안 도구 및 취약점 관리 시스템 간 정보 연계
  • 패치 및 보안 대응 정보 추적을 위한 기준 제공

CVE 식별번호는 일반적으로 CVE-연도-번호 형식으로 구성됩니다.

CVE 레코드에는 취약점 설명과 참고 자료 등의 정보가 제공될 수 있습니다. 다만 CVE 자체가 모든 취약점의 상세한 위험도 평가와 대응 방법을 완전하게 제공하는 것은 아닙니다.

취약점의 심각도나 영향 범위를 분석할 때는 CVSS 평가, 공급업체 보안 공지, 패치 정보 등 추가 자료를 함께 확인하는 것이 좋습니다.

CVE 보안취약점 식별번호와 취약점 설명 및 참고 정보를 보여주는 상세 화면
그림3. CVE 예시
출처: https://www.cve.org/

위 그림은 특정 보안취약점에 부여된 CVE ID와 관련 설명, 참고 자료 등을 확인할 수 있는 화면입니다.

개발자와 보안 담당자는 CVE 정보를 활용하여 제품에서 발견된 취약점을 식별하고, 해당 취약점에 대한 보안 대응 활동을 수행할 수 있습니다.

CWE와 CVE의 차이점은 무엇인가?

CWE와 CVE는 모두 소프트웨어 보안 분야에서 사용되지만 목적과 관리 대상이 다릅니다.

CWE는 보안약점의 유형을 분류하는 체계이며, CVE는 특정 제품에서 발견된 보안취약점을 식별하는 체계입니다.

CWE vs CVE 비교

구분CWECVE
정식 명칭Common Weakness EnumerationCommon Vulnerabilities and Exposures
주요 대상보안약점 유형공개된 개별 보안취약점
식별번호 예시CWE-79CVE-2021-44228
주요 목적보안약점 분류 및 예방특정 취약점 식별 및 정보 공유
주요 활용 단계설계 및 개발, 코드 분석취약점 발견 이후 대응 및 관리
활용 대상개발자, 보안 분석가개발자, 보안 담당자, 운영 관리자

CWE와 CVE의 관계

하나의 보안취약점은 하나 이상의 보안약점과 관련될 수 있습니다.

예를 들어 특정 제품에서 발견된 취약점은 CVE ID로 식별하고, 그 취약점의 근본 원인이 되는 보안약점 유형은 CWE ID로 분류할 수 있습니다.

다만 모든 CVE 레코드에 정확한 CWE 정보가 포함되어 있는 것은 아닙니다. 따라서 CWE와 CVE를 항상 일대일로 연결할 수 있는 것은 아닙니다.

SW 보안약점과 보안취약점을 관리하는 방법

소프트웨어 보안을 강화하려면 개발 단계에서 보안약점을 사전에 확인하고, 실제 제품에서 발견된 보안취약점을 적절하게 관리해야 합니다.

이를 위해서는 정적 코드 분석, 시큐어 코딩, 취약점 점검과 같은 다양한 보안 활동을 함께 수행하는 것이 중요합니다.

1. 정적 코드 분석으로 보안약점 식별

정적 코드 분석(Static Application Security Testing, SAST)은 프로그램을 실행하지 않고 소스코드를 분석하여 잠재적인 보안 문제를 식별하는 방법입니다.

코드에서 발생할 수 있는 보안약점을 개발 단계에서 확인할 수 있다는 장점이 있습니다.

주요 활용 분야는 다음과 같습니다.

  • 소스코드 내 잠재적인 보안약점 탐지
  • CWE 기반 보안약점 유형 분석
  • 시큐어 코딩 규칙 준수 여부 확인
  • 분석 결과에 따른 코드 개선 활동

2. 시큐어 코딩을 통한 보안약점 예방

시큐어 코딩(Secure Coding)은 소프트웨어 개발 과정에서 보안약점이 발생하지 않도록 안전한 코딩 규칙과 개발 원칙을 적용하는 활동입니다.

입력값 검증, 접근 권한 관리, 민감정보 보호, 안전한 메모리 사용 등 다양한 보안 요구사항을 개발 단계에 반영할 수 있습니다.

3. 보안취약점 진단 및 대응

실제 제품에서 식별된 보안취약점은 해당 취약점이 미치는 영향을 확인하고 적절한 보안 조치를 수행해야 합니다.

공개된 CVE 정보, 제품 공급업체의 보안 공지, 취약점 점검 결과 등을 활용하면 보안취약점을 체계적으로 관리하는 데 도움이 됩니다.

SPARROW를 활용한 소프트웨어 보안약점 분석

SW 보안약점을 효과적으로 관리하려면 개발 과정에서 소스코드의 잠재적인 보안 문제를 지속적으로 분석하는 것이 중요합니다.

SPARROW는 정적 코드 분석을 기반으로 소프트웨어의 잠재적인 보안약점과 코드 품질 문제를 진단하는 솔루션입니다.

SPARROW를 활용하면 소스코드에 존재할 수 있는 보안 관련 문제를 분석하고, 검출된 결과를 바탕으로 개선 활동을 수행할 수 있습니다.

SPARROW를 활용한 보안 분석의 주요 목적
1. 개발 초기 보안약점 탐지

소프트웨어 구현 단계부터 정적 코드 분석을 적용하여 잠재적인 보안약점을 식별할 수 있습니다.

2. 보안약점 분석 결과 관리

분석 결과를 확인하고 우선순위를 정해 보안약점 수정 및 개선 활동을 수행할 수 있습니다.

3. 시큐어 코딩 지원

보안 관련 코딩 규칙과 점검 기준을 기반으로 소스코드의 보안 문제를 검토하는 데 활용할 수 있습니다.

4. 지속적인 소프트웨어 품질 및 보안 개선

코드 변경에 따라 정적 분석을 반복 수행함으로써 개발 과정에서 발생할 수 있는 보안 관련 문제를 지속적으로 점검할 수 있습니다.

단, 정적 코드 분석만으로 모든 보안취약점을 발견할 수 있는 것은 아닙니다. 소프트웨어 보안 수준을 높이려면 동적 테스트, 종속성 분석, 취약점 관리 등 다른 보안 활동도 함께 고려해야 합니다.

FAQ

Q1. SW 보안약점과 보안취약점은 같은 의미인가요?

아닙니다. 보안약점은 특정 조건에서 취약점으로 이어질 수 있는 문제 유형이나 조건을 의미하며, 보안취약점은 실제 제품이나 시스템에서 악용될 수 있는 구체적인 보안 결함을 의미합니다.

Q2. CWE와 CVE의 가장 큰 차이점은 무엇인가요?

CWE는 보안약점 유형을 분류하는 목록이고, CVE는 공개된 개별 보안취약점을 식별하는 체계입니다. CWE는 취약점의 근본 원인을 이해하는 데, CVE는 특정 제품의 취약점을 식별하고 관리하는 데 활용됩니다.

Q3. CWE 목록에 등록된 보안약점은 모두 실제 취약점인가요?

아닙니다. CWE는 보안취약점으로 이어질 수 있는 약점 유형을 정의합니다. 특정 CWE 유형에 해당하는 코드나 설계 문제가 발견되더라도 실제 악용 가능성은 제품의 실행 환경과 조건에 따라 달라질 수 있습니다.

Q4. CVE가 없는 보안취약점도 존재하나요?

네. 모든 보안취약점에 CVE 번호가 부여되는 것은 아닙니다. 아직 공개되지 않았거나 CVE 식별번호가 할당되지 않은 취약점도 존재할 수 있습니다.

Q5. 정적 코드 분석으로 모든 보안취약점을 발견할 수 있나요?

아닙니다. 정적 코드 분석은 소스코드에서 잠재적인 보안약점을 식별하는 데 유용하지만, 실행 환경이나 시스템 구성에 의존하는 모든 보안 문제를 검출할 수는 없습니다. 필요한 경우 다른 보안 테스트와 함께 활용해야 합니다.

결론: SW 보안약점과 보안취약점의 차이와 관리 방법

SW 보안약점과 보안취약점은 서로 밀접한 관계가 있지만 의미와 관리 목적이 다릅니다.

보안약점은 보안취약점으로 이어질 수 있는 문제 유형이나 조건이며, 보안취약점은 실제 제품이나 시스템에서 악용될 수 있는 구체적인 결함입니다.

또한 CWE는 보안약점을 분류하고, CVE는 공개된 보안취약점을 식별하는 역할을 수행합니다.

안전한 소프트웨어를 개발하기 위해서는 개발 단계부터 보안약점을 분석하고, 실제 제품에서 발견된 보안취약점을 체계적으로 관리하는 것이 중요합니다.

SPARROW는 정적 코드 분석을 통해 개발 과정의 잠재적인 보안약점을 진단하고 개선 활동을 지원하는 솔루션입니다.

SPARROW 솔루션 및 교육 문의

모아소프트는 SPARROW 솔루션 및 관련 교육을 통해 소프트웨어 보안약점 분석과 품질 개선 활동을 지원합니다.

Send us a message!

앞선 품질, 끊임없는 도전, 정직한 기술로 함께합니다.
문의 글을 작성해 주시면, 담당자 확인 후 빠르게 연락드립니다.

대표전화: (+82)02-420-3203

FAX: (+82)02-407-3511

05770 서울특별시 송파구 오금로 422, 연암빌딩 4F~6F




FAMILY SITE

advanced-floating-content-close-btn