[정보보안] 2023년 CWE가 발표한 가장 위험한 소프트웨어 취약점 25

CWE Top 25 Most Dangerous Software Weaknesses는 소프트웨어 보안 취약점의 위험도를 평가하고 우선순위를 매기는 중요한 보고서입니다. Common Weakness Enumeration (CWE)가 2023년 발표한 목록으로, 소프트웨어 보안 취약점 중 가장 위험한 25가지를 나열합니다. 이 목록은 개발자와 보안 전문가들이 가장 심각한 취약점에 대한 인식을 높이고, 소프트웨어의 보안을 강화하기 위한 정보를 제공하는 데 목적이 있습니다. “웹 애플리케이션 취약점 공격의 대응방안 총정리” 글과 함께 보시면 좋습니다.

  1. CWE-787: Out-of-bounds Write
    • 메모리 버퍼의 경계를 넘어서 데이터를 쓰는 취약점으로, 악의적인 코드가 메모리 침해를 일으킬 수 있습니다.
  2. CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
    • 웹 페이지 생성 시 입력값을 적절히 처리하지 않아 XSS 공격이 가능한 취약점입니다.
  3. CWE-89: Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
    • SQL 쿼리에 악성 입력을 주입하여 데이터베이스를 조작할 수 있는 취약점입니다.
  4. CWE-416: Use After Free
    • 메모리에서 해제된 후에도 해당 메모리 영역을 사용하거나 참조하려는 취약점으로, 시스템의 불안정성을 초래할 수 있습니다.
  5. CWE-78: Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
    • OS 명령어에 악성 입력을 주입하여 시스템 명령을 조작할 수 있는 취약점입니다.
  6. CWE-20: Improper Input Validation
    • 입력값을 적절히 검증하지 않아서 발생하는 취약점으로, 다양한 공격(예: SQL 인젝션, 크로스 사이트 스크립팅 등)을 초래할 수 있습니다.
  7. CWE-125: Out-of-bounds Read
    • 메모리 버퍼의 경계를 넘어 데이터를 읽는 취약점으로, 비밀 정보 노출이나 시스템의 불안정성을 초래할 수 있습니다.
  8. CWE-22: Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
    • 파일 경로를 적절히 제한하지 않아 공격자가 파일 시스템을 탐색하거나 접근할 수 있는 취약점입니다.
  9. CWE-352: Cross-Site Request Forgery (CSRF)
    • 사용자가 의도하지 않은 요청을 생성하게 만들어 악의적인 행동을 유발할 수 있는 취약점입니다.
    • CSRF와 SSRF를 비교한 글을 읽어보시길 권해드립니다.
  10. CWE-434: Unrestricted Upload of File with Dangerous Type
    • 사용자가 웹 애플리케이션에 위험한 파일 유형을 업로드할 수 있게 허용하는 취약점입니다.
  11. CWE-862: Missing Authorization
    • 애플리케이션이 사용자의 권한을 적절히 검증하지 않거나 아예 권한 검사를 수행하지 않아, 사용자가 접근 권한이 없는 기능이나 데이터에 접근할 수 있는 취약점입니다.
  12. CWE-476: NULL Pointer Dereference
    • 프로그래밍에서 NULL 포인터를 참조하거나 접근하려고 할 때 발생하는 취약점입니다.
    • NULL 포인터: 어떤 유효한 메모리 주소도 가리키지 않는 포인터로 메모리 주소가 없는 상태를 나타냅니다.
  13. CWE-287: Improper Authentication
    • 사용자의 신원을 적절하게 확인하지 않거나 인증 과정을 부적절하게 구현하여 발생하는 취약점입니다.
  14. CWE-190: Integer Overflow or Wraparound
    • 정수 연산에서 값이 데이터 타입의 범위를 초과하여 잘못된 결과를 초래하는 문제를 말합니다.
  15. CWE-502: Deserialization of Untrusted Data
    • 신뢰할 수 없는 데이터가 역직렬화(deserialization)될 때 발생하는 문제를 말합니다. 역직렬화 과정에서 공격자는 악의적인 객체를 전송하여 애플리케이션의 논리를 변경하거나 데이터 손상, 서비스 거부(DoS), 원격 코드 실행 등의 심각한 문제를 일으킬 수 있습니다.
    • 직렬화(Serialization): 객체를 특정 포맷으로 변환하여 저장하거나 전송할 수 있게 하는 과정(예: 딕셔너리 객체를 바이너리 형식으로 직렬화)
    • 역직렬화(Deserialization): 저장되거나 전송된 데이터를 다시 원래의 객체나 데이터 구조로 변환하는 과정.(예: 직렬화된 데이터를 원래의 딕셔너리 객체로 복원)
  16. CWE-77: Improper Neutralization of Special Elements used in a Command(Command Injection)
    • 사용자 입력이 시스템 명령어나 쉘 명령어에 직접 포함되어 실행될 때 발생하는 취약점입니다. 만약 입력값이 적절하게 검증되지 않거나 정제되지 않으면, 악의적인 사용자가 추가적인 명령을 주입하여 시스템에서 임의의 명령을 실행하거나, 데이터에 접근하거나, 시스템을 손상시킬 수 있습니다.
  17. CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer
    • 버퍼 오버플로우(Buffer Overflow)와 관련된 보안 취약점으로, 메모리 버퍼의 경계를 초과하여 데이터가 쓰여질 때 발생합니다. 이로 인해 인접한 메모리 영역이 덮어씌워지거나, 프로그램이 예상치 못한 동작을 하게 됩니다.
  18. CWE-798: Use of Hard-coded Credentials
    • 애플리케이션이나 시스템에서 하드코딩된 자격 증명을 사용하는 경우 발생하는 취약점입니다. 코드가 공개되거나 악의적인 사용자가 소스 코드를 접근할 경우 자격 증명이 노출될 수 있습니다.
  19. CWE-918: Server-Side Request Forgery (SSRF)
    • 웹 애플리케이션이 사용자의 입력값(URL이나 유사한 요청)을 제대로 검증하지 않고 사용하여 다른 서버나 리소스에 대한 요청을 수행할 때 발생하는 취약점입니다. 공격자는 사용자 권한으로 실행된 서버 간의 요청을 이용하여 악의적인 행위(민감한 데이터 노출, 서버 조작 등)를 할 수 있습니다.
    • CSRF와 SSRF를 비교한 글을 읽어보시길 권해드립니다.
  20. CWE-306: Missing Authentication for Critical Function
    • 중요한 기능이나 데이터에 대해 적절한 인증을 수행하지 않아 발생하는 보안 취약점입니다.
  21. CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization (‘Race Condition’)
    • 멀티스레딩 환경에서 공유 자원에 대한 접근을 적절하게 동기화하지 않아 발생하는 보안 취약점입니다.
    • 레이스 컨디션 대응 방안
      – 가능하면 임시 파일을 생성하지 않는다. 임시 파일을 만드는 것이 Race condition의 주요 원인이 된다.
      – 파일 생성 시 이미 동일한 파일이 존재하는 경우, 파일 생성 또는 쓰기를 금지한다.
      – 사용하고자 하는 파일에 링크가 걸려있으면 실행을 중단하다.
      umask를 최소 022 정도로 유지하여 임시로 생성한 파일이 공격자에 의해 악의적으로 삭제되지 안도록 한다.
  22. CWE-269: Improper Privilege Management
    • 애플리케이션이나 시스템에서 사용자의 권한을 잘못 설정하거나 적절한 권한 검사를 수행하지 않아 발생하는 보안 취약점입니다.
  23. CWE-94: Improper Control of Generation of Code (‘Code Injection’)
    • 애플리케이션이 입력을 적절히 검증하지 않고 실행 가능한 코드를 생성하거나 실행할 때 발생하는 보안 취약점입니다. 애플리케이션이 사용자 입력을 실행 가능한 코드로 직접 해석하거나 실행할 때 발생합니다.
  24. CWE-863: Incorrect Authorization
    • 애플리케이션이나 시스템에서 사용자의 권한이나 인증 상태를 올바르게 검증하지 않아서 발생하는 보안 취약점입니다. 이를 통해 공격자는 의도된 접근 제한을 우회할 수 있습니다.
  25. CWE-276: Incorrect Default Permissions
    • 소프트웨어 또는 시스템의 기본 권한 설정이 보안상의 요구 사항을 충족하지 않거나 안전하지 않아서 발생하는 취약점입니다. 설치 중에 설치된 파일의 권한은 누구나 해당 파일을 변경할 수 있도록 설정됩니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다