OWASP TOP 10
-2021-
개요
OWASP(Open Web Application Security Project) Top 10은 웹 애플리케이션 보안의 중요한 취약점들을 정리한 리스트로, 웹 개발자, 보안 전문가, 그리고 IT 관리자가 알아야 할 주요 보안 문제들을 다룹니다. 이 목록은 OWASP에서 주기적으로 업데이트하며, 전 세계 보안 커뮤니티와 기업들의 협업을 통해 작성된다. 최신 버전(2021)의 OWASP Top 10을 기준으로 각 항목을 설명하면 다음과 같다:
A01: Broken Access Control (취약한 접근 제어)
사용자가 자신의 권한을 넘어서는 데이터를 열람하거나, 불법적인 기능을 수행할 수 있도록 허용하는 문제. 예를 들어, 인증되지 않은 사용자가 관리자 권한을 가지게 되는 경우이다.
A02: Cryptographic Failures (암호화 실패)
데이터를 암호화하지 않거나, 약한 암호화 알고리즘을 사용하여 데이터 보호에 실패하는 경우. 이는 데이터 유출 및 무단 접근을 초래할 수 있다.
A03: Injection (인젝션)
SQL, NoSQL, OS 명령어, LDAP 쿼리 등의 입력 데이터가 그대로 코드로 실행되면서 발생하는 취약점. 가장 흔한 예로 SQL 인젝션이 있다.
A04: Insecure Design (설계의 불안정성)
보안 고려가 충분하지 않은 설계로 인해 발생하는 문제. 이는 취약한 설계, 보안 요구 사항의 부재 또는 부적절한 적용으로 인해 시스템이 쉽게 공격에 노출될 수 있다.
A05: Security Misconfiguration (보안 설정 오류)
소프트웨어의 기본 설정이 안전하지 않거나, 잘못된 설정으로 인해 발생하는 취약점. 예를 들어, 디버그 모드가 활성화된 상태로 프로덕션에 배포된 경우등이 있다.
A06: Vulnerable and Outdated Components (취약하고 오래된 구성 요소)
사용 중인 소프트웨어 구성 요소(라이브러리, 프레임워크 등)가 알려진 취약점을 가진 오래된 버전이거나 업데이트되지 않은 경우. 이러한 구성 요소는 공격자의 목표가 될 수 있다.
A07: Identification and Authentication Failures (식별 및 인증 실패)
인증 메커니즘의 결함으로 인해 공격ㅈ2ㅏ가 사용자 또는 시스템을 가장할 수 있는 경우. 이는 비밀번호 관리의 부재, 약한 인증 절차 등이 포함된다.
A08: Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)
소프트웨어 업데이트, 중요 데이터 전송 시 무결성 검증 절차가 없어 발생하는 문제. 예를 들어, 코드나 데이터의 불법적인 변조를 막지 못하는 경우가 있다.
A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
보안 이벤트를 로깅하지 않거나, 효과적으로 모니터링하지 않음으로써 보안 사고를 탐지하지 못하거나 대응이 지연되는 문제.
A10: Server-Side Request Forgery (SSRF, 서버 사이드 요청 위조)
공격자가 서버에서 외부 자원에 대한 임의의 요청을 수행할 수 있는 취약점. 이는 내부 네트워크 자원에 접근하거나 민감한 정보를 수집하는 데 악용될 수 있다.
상세
OWASP A01: Broken Access Control
OWASP A01: Broken Access Control (취약한 접근 제어)는 OWASP Top 10 중 가장 중요한 항목 중 하나로, 잘못된 접근 제어로 인해 사용자가 자신의 권한을 넘어서는 데이터를 열람하거나 기능을 수행할 수 있는 경우를 말한다. 이 취약점은 많은 웹 애플리케이션에서 발생하며, 심각한 보안 문제를 야기할 수 있다.
1. 개념
접근 제어란 애플리케이션 내에서 사용자가 특정 데이터나 기능에 접근할 수 있는 권한을 관리하는 메커니즘이다. 예를 들어, 일반 사용자는 자신의 프로필 정보만 수정할 수 있어야 하며, 관리자만이 모든 사용자 정보를 열람하거나 수정할 수 있어야 한다. Broken Access Control이 발생하면, 이러한 권한 제한이 무너져 사용자가 자신의 권한 밖의 데이터를 볼 수 있거나, 관리자가 할 수 있는 작업을 수행할 수 있게 된다.
2. 공격 기법 및 예시
수직적 권한 상승 (Vertical Privilege Escalation): 일반 사용자가 관리자의 권한을 획득하는 경우. 예를 들어, URL을 조작하여 관리자 전용 페이지에 접근하거나, 관리자의 기능을 수행할 수 있게 되는 경우.
수평적 권한 상승 (Horizontal Privilege Escalation): 동일한 권한을 가진 사용자 간에 권한을 악용하는 경우. 예를 들어, 다른 사용자의 계정 정보를 조작하거나, 그들의 데이터를 볼 수 있게 되는 경우가 있다.
리소스 ID 조작 (IDOR, Insecure Direct Object Reference): 사용자가 자신에게 할당된 ID 외에 다른 사용자의 ID를 직접 입력해 다른 사용자의 데이터를 조회하거나 수정할 수 있는 경우.
3. 취약점 발생 원인
불충분한 서버 측 검증: 클라이언트 측에서만 권한 검사를 수행하고, 서버 측에서는 이를 확인하지 않는 경우. 사용자가 클라이언트 측 검사를 우회하면 서버에서 허용되지 않는 작업을 수행할 수 있다.
잘못된 접근 제어 정책: 애플리케이션에서 사용자 권한을 제대로 관리하지 못하거나, 잘못된 권한 정책을 설정한 경우.
경로 보호의 부재: 특정 URL이나 리소스에 대한 접근을 제한하지 않은 경우. 예를 들어, 로그인하지 않은 사용자가 로그인 페이지 외의 다른 페이지에도 접근할 수 있는 경우.
4. 예방 및 대응 방법
서버 측 권한 검증: 모든 중요한 작업은 서버 측에서 권한 검사를 거쳐야 한다. 클라이언트 측 검사는 신뢰할 수 없으며, 반드시 서버에서 최종 검사를 해야 한다.
최소 권한 원칙 적용: 사용자에게 필요한 최소한의 권한만 부여하는 원칙을 적용한다. 예를 들어, 일반 사용자는 자신의 데이터만 접근할 수 있도록 제한한다.
리소스 ID의 안전한 관리: ID나 기타 중요한 정보는 예측할 수 없는 난수 또는 암호화된 값으로 처리하여 다른 사용자의 데이터를 접근할 수 없도록 해야 한다.
보안 테스트: 접근 제어와 관련된 취약점을 찾아내기 위해 정기적으로 보안 테스트 및 코드 리뷰를 실시한다.
로그 및 모니터링: 의심스러운 권한 상승 시도를 감지하고 이를 기록하는 로깅 시스템을 구축하여 비정상적인 접근 시도를 신속하게 탐지한다.
Broken Access Control은 애플리케이션의 보안에 치명적인 영향을 줄 수 있는 취약점으로, 이를 방지하기 위해서는 철저한 권한 관리와 검증이 필수적이다. 이를 통해 사용자가 자신의 권한 범위를 넘어서는 작업을 수행하지 않도록 해야 한다.
OWASP A02: Cryptographic Failures
OWASP A02: Cryptographic Failures (암호화 실패)는 데이터 보호를 위해 암호화 기술을 올바르게 적용하지 못했을 때 발생하는 보안 취약점을 의미한다. 암호화 실패는 기밀성, 무결성, 신뢰성 등 데이터 보안을 심각하게 위협할 수 있으며, 민감한 정보의 유출이나 무단 액세스로 이어질 수 있다.
1. 개념
암호화는 데이터를 안전하게 보호하기 위해 중요한 수단이다. 그러나 암호화가 잘못 적용되거나, 충분히 강력하지 않은 암호화 알고리즘을 사용하거나, 중요한 데이터를 암호화하지 않을 경우 심각한 보안 문제가 발생할 수 있다. 이러한 암호화 실패는 네트워크 통신, 데이터 저장, 사용자 인증 등의 다양한 시나리오에서 발생할 수 있다.
2. 주요 문제점
기밀 데이터 암호화 실패: 민감한 데이터를 암호화하지 않고 평문으로 저장하거나 전송하는 경우, 공격자가 이를 쉽게 가로챌 수 있다.
취약한 암호화 알고리즘 사용: MD5, SHA-1 등 알려진 취약점을 가진 암호화 알고리즘을 사용하는 경우, 공격자가 이를 쉽게 크랙할 수 있다.
키 관리 실패: 암호화 키를 안전하게 보호하지 못하거나, 키를 자주 교체하지 않는 경우 공격자가 키를 탈취하거나 오래된 키로 암호화된 데이터를 해독할 수 있다.
불충분한 암호화 프로토콜 적용: TLS/SSL 설정이 잘못되거나, 강력한 프로토콜을 사용하지 않는 경우, 중간자 공격(Man-in-the-Middle, MITM)에 노출될 수 있다.
3. 공격 기법 및 예시
평문 데이터 노출: 암호화되지 않은 상태로 전송되거나 저장된 민감한 데이터(예: 비밀번호, 신용카드 번호)를 공격자가 가로채는 경우.
사전 공격 및 무차별 대입 공격: 약한 해시 함수(예: MD5)를 사용하는 경우, 공격자가 사전 파일을 사용하여 쉽게 해시를 역추적할 수 있다.
중간자 공격: HTTPS 설정이 잘못되었거나, SSL 인증서 검증을 우회할 수 있는 취약점이 있을 때, 공격자가 통신 내용을 가로채고 조작할 수 있다.
4. 예방 및 대응 방법
강력한 암호화 알고리즘 사용: AES-256, SHA-256과 같은 최신의 강력한 암호화 알고리즘을 사용하고, 구식이나 취약한 알고리즘은 피한다.
데이터 암호화: 민감한 데이터를 전송하거나 저장할 때 반드시 암호화를 적용한다. 특히, 클라이언트와 서버 간의 통신에서는 HTTPS를 통해 TLS를 사용해야 한다.
올바른 키 관리: 암호화 키는 안전한 장소에 저장하며, 주기적으로 교체한다. 키는 절대 코드에 하드코딩해서는 안 되며, 안전한 키 관리 시스템(KMS)을 사용해야 한다.
암호화 프로토콜의 최신 버전 사용: TLS 1.2 이상을 사용하고, SSL/TLS 설정을 철저히 검토하여 약한 설정이나 프로토콜을 사용하지 않도록 한다.
암호화 관련 보안 설정 점검: 암호화 적용 부분의 보안 설정이 잘 되어 있는지 정기적으로 점검하고, 취약점이 발견될 경우 즉시 수정한다.
Cryptographic Failures는 애플리케이션의 중요한 보안 측면 중 하나로, 데이터를 보호하기 위해 반드시 신뢰할 수 있고 강력한 암호화 방법을 적용해야 한다. 이를 위해 암호화에 대한 깊은 이해와 적절한 보안 정책이 필요한다.
OWASP A03: Injection
OWASP A03: Injection (인젝션)은 애플리케이션이 사용자로부터 입력받은 데이터를 처리할 때, 그 데이터가 그대로 코드로 실행되어 발생하는 취약점을 의미한다. 이 취약점은 매우 위험하며, 공격자가 시스템 명령어를 실행하거나 데이터베이스를 조작할 수 있도록 만듭니다. 가장 일반적인 형태로는 SQL 인젝션이 있지만, 다양한 형태의 인젝션 공격이 존재한다.
1. 개념
인젝션 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 그대로 코드나 명령어로 실행하는 경우 발생한다. 공격자는 입력 필드, URL 파라미터, 쿠키, HTTP 헤더 등을 통해 악의적인 데이터를 주입할 수 있으며, 이 데이터가 서버에서 실행될 때 의도하지 않은 동작을 유발한다.
2. 주요 유형
SQL Injection (SQL 인젝션): 공격자가 SQL 쿼리에 악의적인 SQL 코드를 삽입하여, 데이터베이스를 조작하거나 비인가된 데이터에 접근하는 공격이다. 예를 들어, 로그인 폼에 '; DROP TABLE users;-- 같은 입력을 통해 데이터제이스 테이블을 삭제할 수 있다.
Command Injection (명령어 인젝션): 공격자가 시스템 명령어를 포함한 데이터를 주입하여, 서버에서 운영 체제 명령어를 실행하게 만드는 공격이다. 예를 들어, rm -rf / 명령어를 통해 서버 파일 시스템을 삭제할 수 있다.
Cross-site Scripting (XSS): 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여, 사용자가 웹 페이지를 열 때 해당 스크립트가 실행되도록 하는 공격이다. 이는 사용자 세션 탈취, 페이지 변조 등을 유발할 수 있다.
LDAP Injection (LDAP 인젝션): 공격자가 LDAP 쿼리에 악성 데이터를 삽입하여, 디렉터리 서비스의 데이터를 조작하거나 비인가된 정보에 접근할 수 있는 공격이다.
NoSQL Injection: NoSQL 데이터베이스(예: MongoDB)에 대한 인젝션 공격으로, 구조화되지 않은 데이터베이스 쿼리를 악용하여 시스템을 조작한다.
3. 공격 기법 및 예시
SQL 인젝션 예시: SELECT * FROM users WHERE username = 'admin' AND password = '';--' 이 쿼리는 관리자 계정으로 로그인할 수 있게 해준다.
명령어 인젝션 예시: 사용자가 입력한 데이터가 ping 명령어로 전달되는 경우, google.com; rm -rf / 같은 입력을 통해 서버 파일 시스템을 삭제할 수 있다.
XSS 예시: 댓글 필드에 <script>alert('XSS Attack!');</script>와 같은 코드를 삽입하여 다른 사용자가 페이지를 열 때 악성 스크립트를 실행하게 한다.
4. 취약점 발생 원인
입력 데이터 검증 부족: 사용자가 입력한 데이터를 충분히 검증하지 않고, 그대로 코드나 명령어로 처리할 때 발생한다.
파라미터화된 쿼리 미사용: SQL 쿼리를 작성할 때, 사용자 입력을 직접 쿼리에 포함시키는 경우 발생한다. 대신, 파라미터화된 쿼리(Prepared Statement)를 사용해야 한다.
부적절한 데이터 이스케이프: 명령어나 쿼리 내에서 특수 문자를 이스케이프하지 않아 공격자가 이를 악용할 수 있다.
5. 예방 및 대응 방법
입력 데이터 검증: 사용자 입력 데이터를 철저히 검증하고, 의도한 데이터 형식만 허용한다. 예를 들어, 숫자만 허용해야 할 입력 필드는 정규식을 사용하여 숫자만 입력받도록 해야 한다.
파라미터화된 쿼리 사용: SQL 쿼리를 작성할 때는 파라미터화된 쿼리를 사용하여 입력값이 쿼리와 분리되도록 한다. 이는 SQL 인젝션을 방지하는 가장 효과적인 방법 중 하나이다.
데이터 이스케이프 처리: 입력 데이터에서 특수 문자를 적절히 이스케이프 처리하여 명령어나 쿼리 내에서 오용되지 않도록 한다.
ORM (Object-Relational Mapping) 사용: ORM을 사용하면 쿼리 생성을 자동화하며, 인젝션 공격 방지에 도움이 된다.
보안 라이브러리 사용: XSS 방지, SQL 인젝션 방지 등을 위한 보안 라이브러리를 사용하여 공격을 방어한다.
보안 테스트: 인젝션 취약점을 찾아내기 위해 정기적으로 보안 테스트와 코드 리뷰를 실시한다.
Injection (인젝션)은 매우 심각한 보안 취약점으로, 이를 방지하기 위해서는 입력 데이터의 철저한 검증, 파라미터화된 쿼리 사용, 보안 코드 작성 등이 필수적이다. 개발자와 보안 담당자는 인젝션 공격의 위험성을 잘 이해하고, 애플리케이션을 설계 및 구현할 때 적절한 보안 조치를 취해야 한다.
OWASP A04: Insecure Design
OWASP A04: Insecure Design (취약한 설계)는 OWASP Top 10에서 애플리케이션의 설계 단계에서 발생할 수 있는 보안 취약점을 강조한다. 이 항목은 보안 설계가 부적절하거나 고려되지 않았을 때 발생하는 문제를 다루며, 이러한 설계 결함이 실제 구현에서 심각한 보안 취약점으로 이어질 수 있음을 경고한다.
1. 개념
Insecure Design은 애플리케이션의 설계 단계에서 보안 요구 사항이 충분히 고려되지 않거나 설계 자체에서 보안 결함이 발생하는 상황을 의미한다. 설계 단계에서 보안을 충분히 고려하지 않으면, 나중에 개발 및 배포 단계에서 심각한 보안 문제가 발생할 수 있다. 이는 데이터 보호, 인증, 권한 부여 등 기본적인 보안 요소를 설계에 통합하지 않는 경우를 포함한다.
2. 공격 기법 및 예시
설계 결함을 통한 데이터 노출:
민감한 정보를 보호하기 위한 암호화가 설계 단계에서 고려되지 않았을 경우, 데이터 유출이 발생할 수 있다. 예를 들어, 설계 단계에서 암호화가 필요하다고 판단하지 않아 민감한 정보가 평문으로 저장되거나 전송되는 경우.
불완전한 입력 검증:
사용자 입력에 대한 검증이 설계에서 충분히 고려되지 않아 SQL Injection, XSS(크로스 사이트 스크립팅)와 같은 공격이 가능해지는 경우. 예를 들어, 사용자 입력을 검증하지 않고 데이터베이스 쿼리에 직접 사용하는 설계이다.
부적절한 인증 및 권한 관리:
인증 및 권한 부여 메커니즘이 설계 단계에서 충분히 정의되지 않은 경우, 사용자가 적절한 권한 없이 민감한 기능에 접근할 수 있다. 예를 들어, 일반 사용자가 관리자 기능에 접근할 수 있도록 설계도;ㄴ 경우.
불완전한 리소스 보호:
설계 단계에서 리소스 접근 제어가 제대로 설계되지 않아, 인증되지 않은 사용자도 중요한 리소스에 접근할 수 있는 경우. 예를 드어, 로그인하지 않은 사용자가 비공식 자료에 접근할 수 있는 설계이다.
3. 취약점 발생 원인
보안 요구 사항의 부족:
애플리케이션의 초기 설계에서 보안 요구 사항이 명확히 정의되지 않거나 무시되는 경우. 이는 데이터 보호, 인증, 권한 관리와 같은 필수적인 보안 요구 사항을 간과하게 된다.
설계 패턴의 부적절한 사용:
검증되지 않은 설계 패턴이나 잘못된 보안 패턴을 사용하는 경우. 예를 들어, 민감한 정보를 암호화하지 않고 평문으로 저장하는 설계 패턴이다.
위험 평가 부족:
설계 단계에서 위험 평가를 수행하지 않고 잠재적인 보안 위협을 식별하지 않는 경우. 이로 인해 설계에서 잠재적인 취약점이 발견되지 않고 그대로 남게 된다.
보안 설계 검토의 부족:
설계 단계에서 보안 전문가에 의한 검토가 부족하거나 아예 없는 경우. 이로 인해 설계 결함이 검출되지 않고 실제 구현으로 이어지게 된다.
4. 예방 및 대응 방법
보안 요구 사항 정의:
애플리케이션 설계 초기 단계에서 보안 요구 사항을 명확히 정의하고 문서화한다. 모든 보안 요구 사항을 설계에 통합하여 개발 과정에서 고려되도록 한다.
위험 평가 및 위협 모델링:
애플리케이션 설계 단계에서 위험 평가 및 위협 모델링을 수행하여 잠재적인 취약점을 식별하고 이를 설계에 반영한다.
안전한 설계 패턴 채택:
검증된 보안 설계 패턴과 모범 사례를 따릅니다. 최신 보안 표준과 프레임워크를 사용하여 설계를 진행한다.
데이터 보호 설계:
민감한 데이터 보호를 위한 암호화 및 데이터 보호 방법을 설계에 포함시킵니다. 데이터가 안전하게 저장되고 전송되도록 설계한다.
보안 설계 검토:
설계 단계에서 보안 전문가에 의한 철저한 검토를 실시하여 잠재적인 취약점을 조기에 발견하고 해결한다.
Insecure Design은 애플리케이션의 설계 단계에서 보안 요구 사항을 충분히 반영하지 않거나, 부적절한 설계 선택이 보안 취약점으로 이어질 수 있음을 경고한다. 따라서 초기 설계 단계에서 보안 요소를 충분히 고려하고 검토하는 것이 매우 중요하다.
OWASP A05: Security Misconfiguration
OWASP A05: Security Misconfiguration (보안 설정 오류)는 웹 애플리케이션이나 서버, 데이터베이스 등의 보안 설정이 잘못되어 발생하는 취약점을 의미한다. 이 문제는 시스템 구성 요소의 기본 설정이 안전하지 않거나, 관리자가 설정을 잘못했을 때 발생할 수 있다. 이로 인해 공격자는 시스템에 침입하거나 민감한 정보를 유출할 수 있다.
1. 개념
보안 설정 오류는 애플리케이션, 서버, 데이터베이스, 클라우드 서비스 등 시스템 구성 요소에 대해 잘못된 보안 설정을 사용하거나, 기본 보안 설정을 수정하지 않은 경우 발생한다. 예를 들어, 디버그 모드가 활성화된 상태로 배포된 웹 애플리케이션이나, 기본 관리자 계정 비밀번호를 변경하지 않은 경우가 이에 해당한다.
2. 주요 문제점
디버그 모드 활성화: 디버그 모드가 활성화된 상태로 애플리케이션이 배포되면, 시스템 정보가 노출되거나, 예기치 않은 보안 취약점이 발생할 수 있다.
기본 계정 사용: 시스템 설치 시 제공되는 기본 계정 및 비밀번호를 변경하지 않고 사용하는 경우, 공격자가 이를 이용해 쉽게 시스템에 접근할 수 있다.
불필요한 기능 활성화: 서버나 애플리케이션에 필요하지 않은 서비스나 포트가 열려 있으면, 공격자가 이를 악용할 수 있다.
권한 설정 오류: 파일 시스템, 데이터베이스, 클라우드 리소스 등에 대한 잘못된 권한 설정으로 인해, 민감한 데이터에 비인가된 사용자가 접근할 수 있다.
보안 패치 미적용: 시스템 구성 요소에 대한 보안 패치를 적용하지 않아, 이미 알려진 취약점이 남아있는 경우.
3. 공격 기법 및 예시
디버그 페이지 접근: 공격자가 디버그 모드가 활성화된 웹 애플리케이션의 디버그 페이지에 접근하여, 시스템 환경 변수나 데이터베이스 접속 정보 등을 알아낼 수 있다.
디렉토리 인덱싱 활성화: 웹 서버에서 디렉토리 인덱싱이 활성화되어 있으면, 공격자가 디렉토리 내의 파일 목록을 열람하고, 민감한 정보가 포함된 파일에 접근할 수 있다.
기본 비밀번호 공격: 공격자가 시스템의 기본 계정과 비밀번호(예: admin/admin)를 사용하여 관리자 권한을 획득할 수 있다.
오류 페이지 유출: 자세한 오류 메시지를 포함한 페이지가 노출되면, 공격자가 이를 통해 시스템 구조나 데이터베이스 쿼리 등을 파악할 수 있다.
4. 취약점 발생 원인
기본 보안 설정 사용: 시스템 구성 시 제공되는 기본 보안 설정이 안전하지 않은 경우, 이를 수정하지 않고 그대로 사용하는 것이 문제의 원인이 된다.
설정 관리의 복잡성: 대규모 시스템에서 다양한 구성 요소와 복잡한 설정을 관리하는 과정에서 설정 오류가 발생할 수 있다.
보안 테스트 부족: 시스템 배포 전, 보안 설정에 대한 충분한 검토와 테스트를 수행하지 않아 설정 오류가 발생할 수 있다.
5. 예방 및 대응 방법
보안 설정 검토 및 최적화: 애플리케이션, 서버, 데이터베이스 등 모든 구성 요소에 대한 보안 설정을 정기적으로 검토하고, 최적화한다. 기본 설정을 사용하지 않도록 주의해야 한다.
안전한 설정 템플릿 사용: 검증된 보안 설정 템플릿을 사용하여 시스템을 구성하고, 불필요한 기능이나 서비스는 비활성화한다.
자동화된 설정 관리 도구 사용: Ansible, Puppet, Chef와 같은 도구를 사용해 설정을 자동으로 관리하고, 오류를 줄이다.
정기적인 보안 패치 적용: 모든 시스템 구성 요소에 대한 최신 보안 패치를 정기적으로 적용하여 알려진 취약점을 제거한다.
상세한 로그 및 모니터링: 시스템의 보앝ㄴ 설정 변경 및 관련 이벤트를 로그로 기록하고, 이를 정기적으로 모니터링하여 이상 징후를 신속히 탐지한다.
최소 권한 원칙 적용: 필요한 최소한의 권한만 부여하는 원칙을 적용하여, 설정 오류가 발생하더라도 피해를 최소화할 수 있도록 한다.
Security Misconfiguration (보안 설정 오류)는 가장 일반적이면서도 위험한 보안 취약점 중 하나이다. 이를 방지하기 위해서는 정기적인 설정 검토, 자동화된 관리 도구 사용, 보안 패치 적용 등이 필수적이다. 보안 설정은 시스템의 전반적인 보안 수준을 결정짓는 중요한 요소이므로, 이를 소홀히 다루지 말아야 한다.
OWASP A06: Vulnerable and Outdated Components
OWASP A06: Vulnerable and Outdated Components (취약하고 오래된 구성요소)는 애플리케이션이 사용 중인 라이브러리, 프레임워크, 또는 소프트웨어 구성요소가 알려진 취약점을 포함하고 있거나, 오래되어 지원이 종료된 경우에 발생하는 취약점을 의미한다. 이는 소프트웨어 생태계에서 매우 흔한 문제로, 최신 보안 패치가 적용되지 않은 구성요소를 사용하는 경우 공격자가 이를 악용할 수 있다.
1. 개념
애플리케이션은 다양한 외부 구성요소, 즉 오픈소스 라이브러리, 프레임워크, 상용 소프트웨어 등을 사용하여 구축된다. 그러나 이들 구성요소가 최신 상태로 유지되지 않으면, 이미 알려진 취약점이 포함된 버전을 사용할 위험이 있다. 또한, 지원이 종료된 구성요소는 보안 업데이트를 받지 못하기 때문에 공격에 노출될 가능성이 높다.
2. 주요 문제점
구성요소 취약점: 사용 중인 라이브러리나 프레임워크에 보안 취약점이 존재하는 경우, 이를 통해 공격자가 시스템에 침입하거나 데이터 유출을 초래할 수 있다.
오래된 소프트웨어 사용: 업데이트가 중단된 소프트웨어를 사용하는 경우, 새로운 취약점이 발견되더라도 패치가 제공되지 않기 때문에 보안 위험이 증가한다.
종속성 관리 문제: 복잡한 애플리케이션은 여러 구성요소와의 종속 관계를 가지는데, 이러한 종속성을 제대로 관리하지 않으면 특정 구성요소가 취약점에 노출될 수 있다.
3. 공격 기법 및 예시
의존성 혼합 공격: 개발자가 사용하는 라이브러리 중 일부가 오래되었거나 보안 패치가 적용되지 않은 경우, 공격자는 이를 악용해 애플리케이션을 공격할 수 있다.
공격 벡터 확장: 취약한 구성요소가 공격의 출발점이 되어, 다른 시스템이나 네트워크로 공격 범위가 확장될 수 있다.
OSS 라이브러리 취약점 악용: 자주 사용되는 오픈소스 라이브러리(예: Log4j, Struts2)에서 심각한 취약점이 발견되었을 때, 이를 악용한 공격이 일어날 수 있다.
4. 취약점 발생 원인
패치 관리 미흡: 보안 패치가 공개되었음에도 불구하고, 이를 신속하게 적용하지 않으면 취약한 상태가 지속된다.
자동화된 취약점 관리 시스템 부재: 취약한 구성요소를 자동으로 탐지하고 업데이트하는 시스템이 없을 경우, 수동으로 취약점을 관리해야 하는 어려움이 있다.
지원 종료된 소프트웨어 사용: 더 이상 보안 업데이트가 제공되지 않는 소프트웨어를 사용하는 경우, 새로운 취약점이 발견되면 그대로 노출된다.
5. 예방 및 대응 방법
정기적인 업데이트 및 패치 적용: 사용 중인 모든 소프트웨어 구성요소에 대해 최신 보안 패치를 정기적으로 적용한다. 패키지 관리자나 보안 관리 도구를 사용해 자동으로 패치를 관리하는 것이 좋다.
소프트웨어 구성요소 인벤토리 관리: 애플리케이션에서 사용 중인 모든 구성요소의 목록을 관리하고, 해당 구성요소의 최신 상태 및 취약점 정보를 지속적으로 모니터링한다.
종속성 분석 도구 사용: SCA(Software Composition Analysis) 도구를 사용해 애플리케이션에 포함된 모든 라이브러리와 종속성을 분석하고, 취약한 구성요소를 식별해 대체하거나 업데이트한다.
보안 기준 준수: 구성요소를 선택할 때 보안 기준을 설정하고, 이를 준수하는 라이브러리나 프레임워크만 사용한다.
지원 종료 제품 교체: 지원이 종료된 구성요소는 즉시 교체하거나 제거하여, 보안 업데이트가 지속적으로 제공되는 소프트웨어를 사용해야 한다.
Vulnerable and Outdated Components (취약하고 오래된 구성요소)는 모든 소프트웨어 개발자와 운영자가 주의해야 할 중요한 보안 문제이다. 최신 패치를 신속히 적용하고, 사용하는 모든 구성요소의 상태를 지속적으로 모니터링하며, 자동화된 보안 관리 도구를 도입해 이러한 문제를 예방해야 한다.
OWASP A07: Identification and Authentication Failures
OWASP A07: Identification and Authentication Failures (식별 및 인증 실패)는 사용자의 신원을 확인하고 이를 인증하는 과정에서 발생하는 취약점을 의미한다. 이러한 취약점은 시스템의 접근 제어가 무력화되거나, 공격자가 불법적으로 시스템에 접근할 수 있게 만듭니다. 이전에는 "Broken Authentication"이라는 이름으로 알려졌지만, 최근 OWASP에서는 이를 식별 및 인증 과정의 전반적인 문제로 확장해 다루고 있다.
1. 개념
식별 및 인증 실패는 사용자의 신원을 확인하거나 인증하는 과정에서 발생하는 문제를 포괄한다. 여기에는 사용자 계정의 인증 정보가 안전하게 관리되지 않는 것부터 시작하여, 인증 메커니즘이 제대로 구현되지 않거나 약한 암호 정책이 사용되는 경우 등이 포함된다.
2. 주요 문제점
약한 암호 정책: 사용자가 너무 단순하거나 반복적으로 사용되는 암호를 설정할 수 있는 경우, 공격자가 이를 쉽게 추측하여 계정을 탈취할 수 있다.
인증 정보 노출: 인증 토큰, 세션 ID, 비밀번호 등이 노출되거나 안전하지 않은 방식으로 저장되면, 공격자가 이를 탈취해 악용할 수 있다.
다단계 인증의 부재: 단일 인증 방식을 사용하는 경우, 추가적인 보안 계층이 없기 때문에 공격자가 쉽게 접근할 수 있다.
비정상적인 인증 시도 관리 부재: 로그인 시도 횟수 제한이 없거나, 비정상적인 접근 시도가 탐지되지 않으면 무차별 대입 공격(Brute Force Attack)이나 인증 우회가 가능해집니다.
세션 관리 오류: 세션이 적절하게 종료되지 않거나 세션 쿠키가 안전하지 않은 방식으로 관리되는 경우, 세션 하이재킹 공격이 발생할 수 있다.
3. 공격 기법 및 예시
비밀번호 스프레이 공격: 일반적으로 많이 사용되는 비밀번호를 이용해 여러 계정에 무작위로 로그인 시도하는 공격이다.
크리덴셜 스터핑: 이전에 유출된 인증 정보를 다른 사이트에 재사용하여 로그인하는 공격이다.
세션 하이재킹: 공격자가 세션 토큰을 가로채어 사용자의 세션을 탈취하는 공격이다.
인증 우회 공격: 인증 메커니즘의 취약점을 이용하여 로그인 절차를 우회하는 방법이다. 예를 들어, 비밀번호 리셋 기능이 안전하게 구현되지 않은 경우 이를 통해 인증을 우회할 수 있다.
4. 취약점 발생 원인
약한 암호 정책: 짧거나 단순한 비밀번호를 허용하는 정책을 사용할 경우, 암호가 쉽게 크랙될 위험이 있다.
보안 설정 미흡: 세션 관리, 인증 토큰의 저장 및 전송, 로그인 실패 처리 등 보안 설정이 부족하면 취약점이 발생할 수 있다.
다단계 인증 미사용: 사용자가 단일 인증 방식에만 의존할 경우, 계정 탈취의 위험이 증가한다.
인증 메커니즘 구현 오류: 인증 절차의 설계나 구현에서 발생하는 오류로 인해 인증 우회가 가능해질 수 있다.
5. 예방 및 대응 방법
강력한 암호 정책 적용: 최소 길이, 복잡성 요구사항을 포함한 강력한 암호 정책을 적용하고, 주기적인 비밀번호 변경을 요구한다.
다단계 인증(MFA) 도입: 사용자 인증 시 다단계 인증을 적용하여, 단일 인증 정보로 계정 탈취가 어렵게 만듭니다.
비정상적인 접근 시도 탐지: 로그인 시도 횟수 제한, 비정상적인 로그인 시도 탐지 및 알림 기능을 도입한다.
세션 관리 강화: 세션 ID의 안전한 저장 및 전송, 세션 타임아웃 설정, 세션 종료 시 자동 로그아웃 기능을 구현한다.
비밀번호 해시 처리: 사용자 비밀번호는 반드시 강력한 해시 알고리즘(Bcrypt, Argon2 등)을 사용하여 저장하고, 절대 평문으로 저장하지 않도록 한다.
보안 교육 및 훈련: 사용자와 개발자 모두에게 보안에 대한 교육을 실시하여, 보안 의식을 강화한다.
Identification and Authentication Failures (식별 및 인증 실패)는 시스템의 접근 제어를 무력화할 수 있는 심각한 보안 문제이다. 이를 방지하기 위해 강력한 암호 정책을 적용하고, 다단계 인증을 도입하며, 세션 관리와 비정상적인 접근 시도에 대한 철저한 보안 방침을 수립해야 한다. 이외에도 정기적인 보안 점검과 교육을 통해 인증 관련 취약점을 지속적으로 관리해야 한다.
OWASP A08: Software and Data Integrity Failures
OWASP A08: Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)는 소프트웨어와 데이터의 무결성이 손상되거나 안전하게 보호되지 않아서 발생하는 취약점을 의미한다. 이는 주로 중요한 소프트웨어 업데이트, 중요 데이터, 또는 신뢰할 수 없는 소스에서 로드된 코드에 대한 무결성이 손상되었을 때 발생할 수 있다. 최근에는 서드파티 라이브러리, 패키지 매니저, 업데이트 메커니즘 등이 이러한 취약점의 주요 원인으로 지목되고 있다.
1. 개념
소프트웨어와 데이터의 무결성은 소프트웨어가 악의적인 변경 없이 올바르게 동작하고, 데이터가 변조되지 않았음을 의미한다. 무결성 실패는 소프트웨어 업데이트, 데이터 저장 및 전송 과정에서 무결성을 검증하는 메커니즘이 부족하거나, 신뢰할 수 없는 소스에서 코드를 가져올 때 발생한다. 이로 인해 공격자는 소프트웨어를 변조하거나, 악성 코드를 주입할 수 있다.
2. 주요 문제점
신뢰할 수 없는 소스에서의 코드 로드: 서드파티 라이브러리나 코드가 신뢰할 수 없는 소스에서 로드될 경우, 악성 코드가 포함될 위험이 있다.
업데이트 메커니즘 취약점: 소프트웨어 업데이트 과정에서 무결성을 검증하지 않으면, 공격자가 악성 업데이트를 배포할 수 있다.
서드파티 종속성 관리 실패: 서드파티 라이브러리나 패키지에 대한 신뢰성 검증이 부족하면, 취약점이 있는 구성요소가 시스템에 포함될 수 있다.
데이터 변조: 중요한 데이터가 전송되거나 저장되는 과정에서 무결성 검증이 이루어지지 않으면, 데이터가 변조될 위험이 있다.
3. 공격 기법 및 예시
서드파티 라이브러리 공격: 신뢰할 수 없는 서드파티 라이브러리를 통해 악성 코드가 애플리케이션에 포함될 수 있다. 예를 들어, npm 패키지 매니저를 통해 악성 라이브러리가 배포된 사건이 발생한 바 있다.
소프트웨어 공급망 공격: 공격자가 소프트웨어 공급망을 타겟으로 하여, 정당한 소프트웨어 업데이트에 악성 코드를 포함시키는 방식이다. 대표적으로 SolarWinds 사건이 이에 해당한다.
무결성 검증 우회: 업데이트나 설치 과정에서 무결성 검증을 우회하여 악성 코드를 삽입하는 방법이다. 예를 들어, 패키지의 해시값을 위조하여 악성 파일로 교체하는 경우.
4. 취약점 발생 원인
신뢰할 수 없는 소스 사용: 서드파티 코드나 라이브러리를 신뢰할 수 없는 소스에서 로드하거나, 검증 없이 사용하는 경우 무결성 실패가 발생할 수 있다.
부적절한 무결성 검증: 코드, 데이터, 소프트웨어 업데이트 등 중요한 자산에 대해 무결성 검증을 충분히 수행하지 않는 경우가 많다.
취약한 서드파티 관리: 서드파티 라이브러리나 종속성에 대한 보안 관리가 부족하면, 취약점이 발생할 위험이 높다.
미흡한 데이터 보호: 전송 중이거나 저장된 데이터에 대한 무결성 검증이 부족하여, 변조된 데이터가 처리될 수 있다.
5. 예방 및 대응 방법
서드파티 코드 검증: 신뢰할 수 있는 소스에서 서드파티 라이브러리를 다운로드하고, 코드 서명, 해시 검증 등의 방법을 사용해 무결성을 확인한다.
소프트웨어 공급망 보안 강화: 소프트웨어 업데이트 및 배포 과정에서 무결성 검증을 강화하고, 서명된 업데이트만을 허용한다.
종속성 분석 도구 사용: SCA(Software Composition Analysis) 도구를 사용해 서드파티 라이브러리의 보안 상태를 주기적으로 분석하고 관리한다.
데이터 무결성 검증: 중요 데이터 전송 및 저장 시 무결성을 보장하기 위해 HMAC, 디지털 서명 등의 기법을 적용한다.
보안 모니터링 및 감사: 소프트웨어 업데이트, 서드파티 라이브러리 사용 등과 관련된 보안 이벤트를 모니터링하고, 정기적으로 감사를 수행한다.
Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)는 현대 소프트웨어 개발 및 배포 환경에서 중요한 문제로, 소프트웨어 공급망과 관련된 보안 위협을 포함한다. 이를 방지하기 위해서는 신뢰할 수 있는 소스만을 사용하고, 무결성 검증을 철저히 수행하며, 서드파티 종속성 관리를 강화하는 것이 필수적이다.
OWASP A09: Security Logging and Monitoring Failures
OWASP A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)는 애플리케이션이나 시스템에서 발생하는 보안 이벤트를 적절히 기록하지 않거나, 기록된 로그를 효과적으로 모니터링하지 않아서 발생하는 취약점을 의미한다. 이로 인해 침해 사고 발생 시 이를 빠르게 탐지하거나 대응하지 못하게 된다. 보안 로그는 보안 사고의 분석과 대응에 매우 중요한 역할을 하므로, 이를 적절히 관리하지 않으면 심각한 보안 문제가 될 수 있다.
1. 개념
보안 로깅 및 모니터링은 시스템에서 발생하는 보안 관련 이벤트를 기록하고, 이를 분석하여 이상 징후나 보안 침해를 탐지하는 과정을 의미한다. 로그에는 사용자의 활동, 시스템 오류, 접근 시도 등이 포함되며, 이러한 로그를 실시간으로 모니터링하거나 분석하는 시스템이 필요한다. 만약 이러한 로깅 및 모니터링이 제대로 이루어지지 않으면, 보안 사고가 발생하더라도 이를 인지하지 못하거나, 사고 대응이 지연될 수 있다.
2. 주요 문제점
불충분한 로깅: 중요 이벤트가 기록되지 않거나, 기록된 로그의 정보가 불충분하여 보안 사고를 탐지하기 어렵다.
로그의 무결성 부족: 로그가 변조되거나 삭제될 수 있는 환경에서는 신뢰할 수 있는 증거를 확보하기 어렵다.
모니터링 부재: 실시간으로 로그를 모니터링하는 체계가 없으면, 이상 징후를 빠르게 탐지할 수 없다.
침해 탐지 시스템 미비: 로그 분석을 통해 보안 위협을 탐지할 수 있는 시스템이나 프로세스가 부족하면, 침해 사고를 인지하고 대응하는 데 시간이 지연된다.
사고 대응 계획 부재: 로그에서 이상 징후가 발견되더라도, 이를 대응할 수 있는 절차나 계획이 준비되지 않았다면 효과적인 대응이 불가능한다.
3. 공격 기법 및 예시
로그 변조: 공격자가 자신의 침입 흔적을 감추기 위해 로그를 수정하거나 삭제할 수 있다.
이상 징후 탐지 실패: 모니터링 시스템이 부재하거나 비정상적인 행동 패턴을 탐지하지 못하면, 공격자는 장기간 시스템에 침투해 있어도 탐지되지 않다.
로그 무시: 시스템 관리자가 로그를 분석하지 않거나, 로그의 경고를 무시하면 침해 사고가 방치될 수 있다.
4. 취약점 발생 원인
적절한 로깅 설정 미비: 보안 이벤트를 기록하는 로깅 설정이 부족하거나, 특정 이벤트에 대한 로그가 기록되지 않는 경우가 많다.
로그 보호 부족: 로그 파일이 안전하게 저장되지 않거나, 무결성을 보장하지 못하는 경우, 로그가 조작될 위험이 있다.
실시간 모니터링 부재: 로그가 기록되더라도 이를 실시간으로 모니터링하지 않으면, 침해 사고를 제때 인지할 수 없다.
로그 과다 및 관리 문제: 로그가 과다하게 생성되면 중요한 정보를 빠르게 식별하기 어려워지며, 로그 관리가 비효율적일 수 있다.
5. 예방 및 대응 방법
철저한 로깅 설정: 사용자 활동, 실패한 로그인 시도, 중요 시스템 이벤트 등 주요 보안 이벤트를 모두 기록하도록 로깅 설정을 강화한다.
로그 보호 강화: 로그 파일의 무결성과 기밀성을 보장하기 위해 적절한 접근 제어를 설정하고, 로그 암호화를 적용한다.
실시간 모니터링 도입: SIEM(보안 정보 및 이벤트 관리) 시스템을 도입하여, 실시간으로 로그를 분석하고 이상 징후를 탐지한다.
침해 사고 대응 계획 수립: 보안 침해가 탐지되었을 때 신속하게 대응할 수 있도록 절차와 계획을 마련해 둡니다.
정기적인 로그 검토: 로그를 정기적으로 검토하고, 의심스러운 활동을 탐지하는 과정에서 로그 관리의 취약점을 지속적으로 개선한다.
Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)는 침해 사고를 조기에 탐지하고 대응할 수 있는 능력에 직접적인 영향을 미칩니다. 이를 방지하기 위해서는 강력한 로깅 정책과 실시간 모니터링 체계를 구축하고, 로그의 무결성을 보호하며, 적절한 사고 대응 계획을 준비해야 한다. 이는 보안 사고 발생 시 피해를 최소화하고, 시스템의 전반적인 보안 태세를 강화하는 데 필수적인 요소이다.
OWASP A10: Server-Side Request Forgery (SSRF)
OWASP A10: Server-Side Request Forgery (SSRF) (서버 측 요청 위조)는 애플리케이션 서버가 외부 요청을 처리할 때, 공격자가 조작된 요청을 통해 서버의 내부 자원에 접근하거나, 서버를 통해 다른 시스템에 접근할 수 있는 취약점을 의미한다. SSRF 취약점은 서버가 신뢰할 수 없는 요청을 내부 시스템에 전달할 때 발생하며, 이는 시스템 내부 자원에 대한 무단 접근을 허용할 수 있다.
1. 개념
서버 측 요청 위조(SSRF)는 애플리케이션 서버가 클라이언트로부터 수신한 요청을 기반으로 다른 서버에 요청을 보내는 경우, 공격자가 악의적으로 조작된 요청을 통해 서버의 내부 네트워크나 민감한 자원에 접근할 수 있는 취약점이다. 서버가 외부 URL이나 IP를 요청할 수 있는 기능을 제공할 때, 이를 악용하여 공격자가 내부 자원에 접근하거나, 서버를 통해 다른 시스템에 요청을 전송할 수 있다.
2. 주요 문제점
내부 시스템 노출: SSRF 공격을 통해 내부 네트워크에 있는 시스템이나 서비스에 접근할 수 있다. 이는 내부 자원에 대한 정보 노출 또는 접근 권한 탈취로 이어질 수 있다.
민감한 정보 노출: 서버가 요청을 처리하면서 내부 시스템의 정보(예: 메타데이터, 데이터베이스 관리 도구)에 접근하게 되면, 민감한 정보가 노출될 수 있다.
서비스 중단: 서버를 악용하여 특정 자원에 대량의 요청을 보내거나, 외부 요청을 악용하여 서비스 거부(DoS) 공격을 유발할 수 있다.
3. 공격 기법 및 예시
내부 IP 스캔: 서버가 요청을 외부 시스템에 보내는 기능을 악용하여, 내부 네트워크의 IP 범위를 스캔하고, 활성화된 서비스를 탐지할 수 있다.
메타데이터 서버 접근: 클라우드 환경에서는 SSRF를 통해 클라우드 서비스의 메타데이터 서버에 접근하여 민감한 정보를 탈취할 수 있다. 예를 들어, AWS EC2 인스턴스의 메타데이터를 접근하여 인증 정보를 획득할 수 있다.
자원 낭비: 공격자가 서버를 통해 외부 URL에 대량의 요청을 보내거나, 악의적인 요청을 통해 서버 자원을 낭비시킬 수 있다.
4. 취약점 발생 원인
URL 매개변수 검증 부족: 서버가 URL 매개변수를 적절히 검증하지 않으면, 클라이언트가 조작된 URL을 요청하여 SSRF 공격을 할 수 있다.
내부 리소스 접근 기능 미비: 외부 요청을 내부 리소스에 전달할 수 있는 기능이 있는 경우, 이를 악용하여 내부 자원에 접근할 수 있다.
허용된 네트워크 범위 미설정: 서버가 요청을 보내는 네트워크 범위를 제한하지 않으면, 내부 네트워크나 민감한 시스템에 접근할 수 있다.
5. 예방 및 대응 방법
입력 검증 및 필터링: 외부 요청을 수신할 때 URL이나 IP 주소를 철저히 검증하고, 내부 자원에 접근할 수 있는 요청을 차단한다. 허용된 URL 목록을 사용하는 것이 좋다.
내부 네트워크 차단: 서버가 내부 네트워크에 접근할 수 없도록 네트워크 경계를 설정하거나, 내부 IP 주소에 대한 접근을 차단한다.
정책 기반 요청 제한: 서버 측에서 요청을 필터링하여, 의심스러운 요청이나 알려진 악성 패턴을 차단한다.
클라우드 메타데이터 보호: 클라우드 환경에서는 메타데이터 서버에 대한 접근을 엄격히 제한하고, 필요한 경우 적절한 인증 및 권한 검사를 수행한다.
정기적인 보안 점검: 애플리케이션의 요청 처리 로직에 대해 정기적인 보안 점검을 실시하여 SSRF 취약점을 사전에 발견하고 수정한다.
Server-Side Request Forgery (SSRF)는 애플리케이션의 보안 강화를 위해 신뢰할 수 없는 입력을 적절히 처리하고, 서버가 내부 자원에 접근하지 않도록 네트워크 경계를 설정하는 것이 필수적이다. 이러한 취약점을 방지하기 위해 철저한 입력 검증과 보안 정책의 설정이 중요하며, 정기적인 보안 점검과 모니터링을 통해 취약점을 사전에 발견하고 대응하는 것이 필요한다.
최종 요약(정의, 목표 한줄씩)
1. OWASP란?
정의: OWASP는 웹 애플리케이션의 보안을 향상시키기 위해 활동하는 비영리 조직이다.
목표: 웹 애플리케이션의 보안 취약점을 식별하고 이를 방지하기 위한 가이드를 제공한다.
웹사이트: OWASP 공식 웹사이트
2. OWASP Top 10이란?
정의: OWASP가 매년 발표하는 웹 애플리케이션 보안의 가장 중요한 10가지 취약점을 설명하는 리스트이다.
목표: 가장 흔하고 심각한 보안 취약점을 교육하고 이를 방지하기 위한 방법을 제시한다.
3. OWASP Top 10 (2024) 개요
A01: Broken Access Control (액세스 제어 실패)
설명: 사용자 권한을 부적절하게 제어하여 불법적인 접근이 가능하게 되는 취약점이다.
예시: 일반 사용자가 관리자 페이지에 접근할 수 있는 경우.
A02: Cryptographic Failures (암호화 실패)
설명: 데이터를 안전하게 보호하지 못해 민감한 정보가 유출되는 경우.
예시: 비밀번호를 평문으로 저장하는 경우.
A03: Injection (주입 공격)
설명: 악의적인 코드를 주입하여 시스템을 조작하거나 정보를 탈취하는 공격이다.
예시: SQL 인젝션 공격을 통해 데이터베이스에 불법 접근하는 경우.
A04: Insecure Design (취약한 설계)
설명: 보안이 설계에 반영되지 않아 발생하는 취약점이다.
예시: 중요한 데이터를 암호화하지 않고 전송하는 경우.
A05: Security Misconfiguration (보안 설정 오류)
설명: 잘못된 보안 설정으로 인해 시스템이 취약해지는 경우.
예시: 기본 관리자 계정이 비활성화되지 않은 경우.
A06: Vulnerable and Outdated Components (취약하고 구식의 구성요소)
설명: 취약한 서드파티 라이브러리나 구성요소를 사용하는 경우.
예시: 오래된 버전의 라이브러리를 사용하여 보안 취약점에 노출되는 경우.
A07: Identification and Authentication Failures (식별 및 인증 실패)
설명: 사용자 인증 및 식별 과정에서 발생하는 보안 문제이다.
예시: 약한 비밀번호 정책으로 인한 계정 탈취.
A08: Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)
설명: 소프트웨어나 데이터의 무결성을 보장하지 않는 경우.
예시: 소프트웨어 업데이트의 무결성 검증이 부족한 경우.
A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
설명: 보안 로그를 적절히 기록하지 않거나 모니터링하지 않아 보안 사고를 탐지하지 못하는 경우.
예시: 로그인 실패 기록을 남기지 않는 경우.
A10: Server-Side Request Forgery (SSRF) (서버 측 요청 위조)
설명: 서버가 악의적인 요청을 통해 내부 자원에 접근하거나 다른 시스템에 접근하는 경우.
예시: 외부 요청을 통해 내부 네트워크를 스캔하는 경우.
'모의해킹 및 보안' 카테고리의 다른 글
bWAPP Redhat(CentOS/Rocky) Linux에 설치 (0) | 2024.09.12 |
---|---|
Longest match rule에 의한 라우팅 테이블 오염 (0) | 2024.09.10 |
[금취분평] 이용자 입력 정보 보호 (0) | 2023.07.21 |
[금취분평] 불필요한 웹 메서드 허용 (0) | 2023.07.21 |
Iq Spoofing 웹사이트 Post-Exploit (0) | 2023.06.08 |