취약점?

mntly·2024년 8월 8일
0

SegFau1t

목록 보기
1/5

목차

1. 취약점 분류 유형

1. CCE (Common Configuration Enumeration)

사용자에게 허용된 권한 이상의 동작을 허용하거나, 범위 이상의 정보 열람 · 변조 · 유출 등을 가능하게 하는 시스템 설정 상의 취약점

  • 정보 시스템의 설정 값으로 진단
  • 관리자의 환경 설정 변경으로 자체 개선 가능
    +) 정보 시스템 : 서버, 네트워크, DBMS, WEB/WAS, PC 등

2. CVE (Common Vulnerabilities and Exposures)

컴퓨터 하드웨어 또는 소프트웨어 결함이나 체계, 설계 상의 취약점

  • 공개적으로 알려진 보안 취약점에 대한 공통 식별자 목록
    • 해커가 시스템이나 네트워크에 접근하기 위해 직접 사용할 수 있는 소프트웨어 취약점
    • 보안 약점 중 침해 사고로 연결되는 위험
  • 표준화된 CVE 항목 : 서비스 적용 범위 평가할 수 있는 기준 제공
  • 명명 : CVE-연도-순서

CVE 공식 사이트

CVE 통합 정보 사이트

3. CWE (Common Weakness Enumeration)

다양한 언어 및 아키텍처, 디자인 설계, 코딩 등 개발 단계에서 발생 가능한 약점

  • 소스 코드 보안 약점
    • 소프트웨어 취약점으로 이어질 수 있는 오류 (잠재적 위험)
  • 7대 CWE
    1. 입력 값 부적절한 검증 혹은 검증 누락
    2. 부적절한 보안 구현
    3. 시간 및 상태
    4. 에러 처리 미흡 혹은 정보 유출
    5. 코드 오류 ⇒ 데이터 노출
    6. 중요 데이터 불충분한 캡슐화
    7. 의도적이지 않은 방법으로 혹은 보안에 취약한 API 사용

CWE 목록

1. CWE 구조

VIEW를 제외한 다른 약점들은 다른 유형의 약점과 1:N 관계를 가지는 그래프로 구성됨

CWE 구조

2. CWE 유형

CWE 유형

  1. View
    • CWE를 소개하는 가장 큰 집합
    • 관점, 외부 규칙과의 매핑, 특정 도메인 또는 사용 유형, 과거의 VIEW에 따라 분류
  2. Category
    • 공통 특성 공유, 다른 집합 포함하는 집합, Weakness - Class
    • 범위 넓고 일반화된 약점 (추상적인 설명)
  3. Weakness - Base
    • 추상적이지만 구체적인 방법 유추하기에 필요한 세부 정보 설명
    • Weakness - Class 보다 구체적
  4. Weakness - Variant
    • 특정 프로그래밍 언어 또는 기술에 대한 약점
    • Weakness - Base 보다 구체적
  5. Compound Element - Composite, Compound Element - Name Chain
    • 서로 연결될 수 있는 두 개 이상의 약점
    • 약점 A → 약점 B … ⇒ 취약점 발생 가능

3. CWE Nature

  1. ParentOf → ChildOf

    : ParentOf가 ChildOf 취약점 포함할 수 있는 일반적인 결함

  2. MemberOf → HasMember

    : 소프트웨어 개발 관련 view에 포함된 category와의 관계 표현

  3. CanPrecede → CanFollow

    : 다른 약점과의 원인 결과

  4. StartsChain → StartsWith

    : 복잡하게 얽힌 약점 구조

  5. PeerOf

    : 다른 약점과의 유사성

  6. CanAlsoBe

    : 특정 환경, 상황에서 약점 발생 가능

  7. Requires → RequireBy

    : 약점이 발생하기 위한 필요 조건

4. CVSS (Common Vulnerability Scoring System)

  • 취약점의 심각성을 평가하고 점수화하는 표준 메트릭스
  • 취약점에 대한 취약성 및 영향 고려 ⇒ 계산

CVSS 정보
CVSS 계산기

2. 취약점 종류

Weaknesses in the 2023 CWE Top 25 Most Dangerous Software Weaknesses에 기술된 약점 위주로 정리

1. Out-Of-Bound

  • Weakness-Base (1. Write, 7. Read)

의도하지 않은 버퍼의 위치에 선택적으로 접근할 수 있는 약점
(ex: 음수 인덱스, 길이 초과, …)

CWE - CWE-787: Out-of-bounds Write (4.14)

CWE - CWE-125: Out-of-bounds Read (4.14)

2. XSS (Cross-Site Scripting)

  • Weakness-Base
  • PeerOf CSRF (Cross-Site Request Forgery; CWE-352)

스크립트 코드 삽입 ⇒ 개발자가 의도하지 않은 기능 동작

  • Reflected XSS (Non-Persistent)

    웹의 지정된 파라미터 혹은 이메일로 보내는 URL로 공격자의 공격 코드 실행

  • Stored XSS (Persistent)

    게시글 등의 형태로 악의적인 스크립트, 서버에 저장
    ⇒ 관리자가 접근하며 중요 데이터 접근

  • DOM-based XSS

    • DOM : 문서 객체 모델
      웹에 있는 모든 객체 조작, 관리할 수 있는 계층 구조 형태 모델
    • 클라이언트의 브라우저에서 DOM 환경 수정
      ⇒ 웹 페이지에 삽입 ⇒ 공격 페이로드 실행
    • 서버가 수정 DOM 환경을 수정하는 경우도 존재

CWE - CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') (4.14)

3. SQL Injection

  • Weakness-Base

SQL Query 검증 미흡으로 인한 공격자가 원하는 동작 실행

CWE - CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') (4.14)

4. UAF (Use-After-Free)

  • Weakness-Variant

동적 할당된 메모리 관리 미흡으로 인한 약점
: 해제한 메모리를 다시 사용하려는 경우 발생 (C, C++)

CWE - CWE-416: Use After Free (4.14)

5. OS Command Injection

  • Weakness-Variant

웹 애플리케이션이 구동 중인 서버에서 임의의 OS 명령을 수행하도록 하는 약점

  • 발생 조건
    1. system(), exec()처럼 시스템 쉘에 사용자 입력 데이터를 인자로 전달
    2. 전달된 인자를 정상적인 명령으로 인식
    3. 여러 명령 실행 가능

CWE - CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') (4.14)

6. Improper Input Validation

  • Weakness - Class

⇒ Path Traversal, …

CWE - CWE-20: Improper Input Validation (4.14)

7. Path Traversal

  • Weakness - Base

⇒ File Inclusion

CWE - CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') (4.14)

8. CSRF (Cross-Site Request Forgery)

  • Composite
  • PeerOf XSS

무결성 검증 실패 ⇒ 공격자의 요청 위조 ⇒ 데이터 노출, 코드 실행, …

CWE - CWE-352: Cross-Site Request Forgery (CSRF) (4.14)

9. Unrestricted Upload of File with Dangerous Type (.php, …)

  • Weakness - Base

CWE - CWE-434: Unrestricted Upload of File with Dangerous Type (4.14)

10. Missing Authorization

  • Weakness - Class

CWE - CWE-862: Missing Authorization (4.14)

11. NULL Pointer Dereference

  • Weakness - Base

CWE - CWE-476: NULL Pointer Dereference (4.14)

12. Improper Authentication

  • Weakness - Class

CWE - CWE-287: Improper Authentication (4.14)

13. Integer Overflow or Wraparound

  • Weakness - Base

Wraparound : MIN보다 더 작은 값 할당 ⇒ 매우 큰 값으로 인식

CWE - CWE-190: Integer Overflow or Wraparound (4.14)

14. Deserialization of Untrusted Data

  • Weakness - Base

공격 코드 삽입하여 직렬화
⇒ 역 직렬화 과정에서 변조된 데이터 삽입 ⇒ 공격

  • 직렬화 : 텍스트 형태가 아닌 다른 데이터 구조 or 상태를 다른 컴퓨터에 저장해 나중에 다시 사용할 수 있는 포멧으로 변환하는 과정

CWE - CWE-502: Deserialization of Untrusted Data (4.14)

15. Command Injection

  • Weakness - Class
  • ParrentOf OS Command Injection

사용자 입력을 조작해 임의의 명령 수행

CWE - CWE-77: Improper Neutralization of Special Elements used in a Command ('Command Injection') (4.14)

16. Improper Restriction of Operations within the Bounds of a Memory Buffer

  • Weakness - Class
  • ParentOf Out-Of-Bound, Buffer OverFlow, …

작업 수행하는 메모리 버퍼에 대한 범위 제한 미흡
⇒ 경계 외부의 데이터 조작

CWE - CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer (4.14)

17. Use of Hard-coded Credentials

  • Weakness - Base

CWE - CWE-798: Use of Hard-coded Credentials (4.14)

18. SSRF (Server-Side Request Forgery)

  • Weakness - Base

서버에 위조된 요청 전달 ⇒ 서버 내부 자원 접근, 외부로 유출 및 오동작 발생

  • ex:) 외부로 노출된 호스트 : 내부로 접근하기 위한 다리로 사용

CWE - CWE-918: Server-Side Request Forgery (SSRF) (4.14)

19. Missing Authentication for Critical Function

  • Weakness - Base
  • ChildOf Improper Authentication

CWE - CWE-306: Missing Authentication for Critical Function (4.14)

20. Race Condition

  • Weakness - Class

두 코드가 동시에 실행될 수 있고, 두 코드 모두 동일한 데이터(공유 리소스)를 참조할 때 코드에 의해 의도하지 않은 동작을 일으키는 것

  • 아래 그림에서 Code A 이후 Code B가 실행되어 SharedValue에서 1을 두 번 더한 7이 반환되어야 하지만 동시에 실행되어 각각 6을 반환
  • Race Condition은 다음을 위반
    • 독점성
      • 각 코드는 참조하는 자원에 대해 독점적인 권한을 가진다. 한 코드의 실행이 종료되기 전에 다른 코드가 값을 변경할 수 없다.
    • 원자성
      • 동일한 코드를 동시에 실행시킬 수 없다.

CWE - CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') (4.14)

21. Improper Privilege Management

  • Weakness - Class

CWE - CWE-269: Improper Privilege Management (4.14)

22. Code Injection

  • Weakness - Base

서버로 보내는 코드의 일부에 외부의 입력 값 포함 ⇒ 코드 수정 가능

  • 가장 전형적인 약점은 SQL Injection

CWE - CWE-94: Improper Control of Generation of Code ('Code Injection') (4.14)

23. Incorrect Authorization

  • Weakness - Class

CWE - CWE-863: Incorrect Authorization (4.14)

24. Incorrect Default Permissions

  • Weakness - Base

CWE - CWE-276: Incorrect Default Permissions (4.14)

REFERENCE

[1] 보안 취약점 관련 용어 (CCE, CVE, CWE), https://shuu.tistory.com/50

[2] 보안 취약점 관련 용어 (CCE, CVE, CWE, CVSS), https://feccle.tistory.com/162

[3] CWE 표기 방식 https://scribnote5.github.io/posts/CWE2/

[4] CWE 표기 방식 https://blog.naver.com/suresofttech/221238390435

[4] CVSS 계산기 https://www.first.org/cvss/calculator/4.0

[5] Memory Corruption, Logical Bug https://velog.io/@yosub1220/%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%95%B4%ED%82%B9-1-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%98-%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8-%EC%A2%85%EB%A5%98

[6] 2023 CWE Top 25 Most Dangerous S/W Weaknesses https://cwe.mitre.org/data/definitions/1425.html

[7] Race Condition https://m.blog.naver.com/ijoos/221604501739

0개의 댓글