본문 바로가기
보안/기본 지식

OWASP TOP 10 정리 - WEB 2021 버전 항목 설명(최신)

by noootella 2024. 10. 19.
반응형

 

OWASP TOP 10이란?

OWASP(Open Web Application Security Project)가 발표하는 보안 위협 목록이다.

 


 

보통 보안 담당자 및 업무 관계자들이 이 목록을 업무에 참고용으로 많이 쓴다.

사이트를 들어가보면 아래와 같이 2025년도 상반기에 최신 업데이트가 있을 것으로 보인다.

 

그림 1. 2025년도 상반기에 업데이트가 있을 것이라는 문구

 

 

아래와 같이 OWASP TOP 10은 2017년에서 2021년도에 개정이 됐었던 걸 보면, 4년주기로 갱신을 하는 것 같다.

2021년도3개의 새로운 항목이 추가되었고, 4개의 항목의 이름과 범위가 변경되었었다.

 

그림 2. 2017년도 및 2021년도 TOP 10 비교


 

[2021년도 취약점 정리]

코드 위험 설명
A01 취약한 접근제어
(Broken Access Control)
[변경사항]
 A05 →  A01.
*애플리케이션의 94%에서 취약한 접근제어 항목이 발견되어 순위가 올라감

[취약점 내용]
 접근제어가 제대로 구현되어있지 않을 경우에 발생한다.
 일반 사용자가 관리자 페이지를 접속하거나, 웹서버 디렉터리에 접근하는 등의 공격이 가능하다.
 인가된 사용자만 접근 가능하게 구현해야 하며, 웹 서버 디렉터리 접근 권한을 설정해야한다.
A02 암호 미흡
(Cryptographic Failures)
[변경사항]
 A03:Sensitive Data Exposure →  A02: Cryptographic Failures
*민감 정보 노출(광범위)에서 암호 미흡(근본)으로 이름 변경

[취약점 내용]
 암호화가 미흡한 경우 민감한 데이터의 노출로 이어진다. 
 비밀번호, 신용카드 번호, 건강 기록, 개인 정보 등 민감한(중요한) 데이터를 식별하고, 사용하지 않는 데이터는 신속하게 폐기 절차를 거쳐야 하며, 저장 시 암호화 과정이 필요합니다. 또한, 강력한 암호화 알고리즘, 프로토콜, 키를 사용하고 있는지 확인해야합니다.

[관련 취약점]
 - CWE-259: Use of Hard-coded Password (하드코딩된 비밀번호 사용)
 - CWE-327: Broken or Risky Crypto Algorithm (깨지거나 위험한 암호화 알고리즘)
 - CWE-331: Insufficient Entropy (불충분한 엔트로피) 등
A03 인젝션
(Injection)
[변경사항]
 A01,A07  → A03
*원래 A01: Injection이랑 A07: Cross-Site Scripting(XSS)가 합쳐짐

[취약점 내용]
사용자가 제공한 데이터가 애플리케이션에 의해 검증, 필터링되지 않을 경우 입력값에 스크립트를 주입하여 정보 탈취가 가능.
일반적으로 SQL, NoSQL, OS Command, ORM, LDAP 등의 언어 주입이 존재
서버 사이드에서 입력값을 필터링하여 내부 정보가 탈취되는 것을 방지.

[관련 취약점]
 - CWE-79: Cross-Site Scripting
 - CWE-89: SQL Injection
 - CWE-73: External Control of File Name or Path (파일 이름 또는 경로 외부 제어) 등
A04 Insecure Design
(안전하지 않은 설계)
[변경사항]
 (New) 새로 추가된 항목, 설계 및 구조적 결함에 대한 취약점에 초점

[취약점 내용]
설계 및 구조적 결함에 의해 발생되는 취약점의 광범위한 범주로 안전하지 않은 구현과는 차이가 존재. 개발 중인 소프트웨어나 시스템에 내재된 비즈니스 위험 프로파일링이 부족하여 필요한 수준의 보안 설계를 결정하지 못해 발생됨.

[관련 취약점]
 - CWE-209: Generation of Error Message Containing Sensitive Information (민감한 정보가 포함된 오류 메시지 생성)
 - CWE-256: Unprotected Storage of Credentials (자격 증명의 보호되지 않은 저장)
 - CWE-501: Trust Boundary Violation (신뢰 경계 위반)
 - CWE-522: Insufficiently Protected Credentials (보호되지 않은 자격 증명)
A05 Security Misconfiguration
(보안 오설정)
[변경사항]
 A04,A06  → A05
*원래 A06: Security Misconfiguration에서 한 단계 상승. A04: XML External Entities (XXE)을 포함.

[취약점 내용]
 불필요한 기능이 활성화되있거나 설치되있을 경우(불필요한 포트, 서비스, 페이지, 계정 또는 권한), 기본 계정과 비밀번호가 변경되지 않은 채로 계속 사용중일 경우, 오류 메시지가 사용자에게 노출될 경우, 오래되거나 취약한 소프트웨어 사용, 서버에 기본 보안설정이 되어있지 않을 경우 등이 이에 해당
 불필요한 기능, 구성요소, 문서 및 샘플이 없는 최소한의 플랫폼을 구현. 다른 환경에서 다른 자격 증명(계정 등) 사용.

[관련 취약점]
 - CWE-16: Configuration
 - CWE-611: Improper Restriction of XML External Entity Reference 등
A06 Vulnerable and Outdated Components
(취약하고 오래된 구성 요소)
[변경사항]
 A09  → A06
*원래 A09: Using Components with Known Vulnerabilities(알려진 취약점이 존재하는 구성 요소 사용)에서 상승.

[취약점 내용]
 소프트웨어가 취약하거나 지원되지 않는 오래된 버전인 경우 발생 가능.
*소프트웨어: OS, WEB/WAS, DBMS, Application, API, Runtime environments, Library 등 
 정기적으로 최신 버전으로 업데이트하지 않거나, 취약점을 스캔하여 조치하지 않는 경우, 패치된 라이브러리의 호환성을 테스트하지 않는 경우

[관련 취약점]
 - CWE-1104: Use of Unmaintained Third-Party Components 등
A07 Identification and Authentication Failures
(식별 및 인증 실패)
[변경사항]
 A02  → A07
*원래 A02: Broken Authentication(미흡한 인증)에서 순위 하락 및 이름 변경.

[취약점 내용]
 무차별 대입 공격과 같은 자동화 툴을 사용 가능하거나 Password1, admin과 같은 기본적이고 잘 알려진 비밀번호를 사용하고 있는 경우 지식 기반 답변과 같은 취약한 비밀번호 재설정 프로세스를 사용하는 경우, 세션 재사용 및 세션ID를 로그아웃/비활성 기간 동안 무효화하지 않는 경우 발생. Credential Stuffing과 관련됨.
 Multi-factor 인증을 도입하여 자동화 툴을 사용한 공격을 예방하거나 비밀번호 복잡도 설정을 통해 인증과정 보안성을 강화하여야 합니다.

[관련 취약점]
 - CWE-297: Improper Validation of Certificate with Host Mismatch(호스트 불일치로 인한 인증서의 부적절한 검증)
 - CWE-287: Improper Authentication(부적절한 인증)
 - CWE-384: Session Fixation(세션 고정) 등
A08 Software and Data Integrity Failures
(소프트웨어 및 데이터 무결성 실패)
[변경사항]
(New) 새로 추가된 항목
 A08: Insecure Deserialization  → A08: Software and Data Integrity Failures
* 안전하지 않은 역직렬화보다 더 큰 범주로 새로 생성된 항목

[취약점 내용]
 신뢰할 수 없는 소스, 저장소 및 CDN의 플러그인, 라이브러리 또는 모듈에 의존하는 경우 무단 액세스, 악성 코드 등 무결성 검증 없이 다운로드 되어 시스템을 손상시킬 수 있음.
 디지털 서명 등을 이용하여 소프트웨어나 데이터가 올바른 출처에서 다운로드되고 변경되지 않았는 지 확인해야 합니다.

[관련 취약점]
 - CWE-829: Inclusion of Functionality from Untrusted Control Sphere(신뢰할 수 없는 제어 영역의 기능 포함)
 - CWE-494: Download of Code Without Integrity Check(무결성 검사 없이 코드 다운로드)
 - CWE-502: Deserialization of Untrusted Data(신뢰할 수 없는 데이터의 역직렬화) 등
A09 Security Logging and Monitoring Failures
(보안 로깅 및 모니터링 실패)
[변경사항]
 A10: Insufficient Logging & Monitoring  → A09
* 불충분한 로깅 및 모니터링에서 한 단계 상승

[취약점 내용]
 로깅 및 모니터링 없이 침해를 탐지하는 것은 불가능. 로그인, 로그인 실패, 거래내역, 경고 및 에러 메시지 등 이벤트를 로깅하지 않는 경우에 해당. 경보 임계값과 대응 프로세스가 마련되어야 하며 로깅 이벤트를 사용자에게 표시하면 안됩니다.
 의심스러운 활동을 감지하고 신속하게 대응할 수 있도록 효과적인 모니터링과 경고 시스템을 구축하여야 하며, 사고 대응 및 복구 계획을 수립하여야 합니다.

[관련 취약점]
 - CWE-778: Insufficient Logging
 - CWE-117: Improper Output Neutralization for Logs
 - CWE-223: Omission of Security-relevant Information
 - CWE-532: Insertion of Sensitive Information into Log File 등
A10 Server Side Request Forgery (SSRF)
(서버 측 요청 위조)
[변경사항]
(New) 새로 추가된 항목, 커뮤니티 설문 조사를 통해 추가됨

[취약점 내용]
 웹 애플리케이션이 사용자가 제공한 URL을 검증하지 않고 원격 리소스를 가져올 때 발생. 방화벽, VPN, ACL으로 보호되는 경우에도 공격 요청이 가능할 수 있음.

[대응 방안]
네트워크 계층에서 내부 트래픽을 제외한 모든 트래픽 차단(원격 리소스 액세스 기능 분할) 및 차단된 모든 네트워크 패킷 로깅
 애플리케이션 계층에서 사용자의 모든 입력 데이터를 검증 및 필터링, HTTP 리다이렉션 비활성화 

 

 

 

원문은 OWASP 사이트에서 확인할 수 있다.

https://owasp.org/www-project-top-ten/

반응형