본문 바로가기
보안

OWASP란?

by 비어원 2024. 11. 6.
728x90

OWASP (Open Web Application Security Project)

OWASP는 전 세계 기업, 교육기관 및 개인이 만들어가는 오픈소스 애플리케이션 보안 프로젝트로, 중립적, 실무적이면서 비용 효과적인 애플리케이션 보안 가이드라인을 무료로 제공하고 있으며 이러한 가이드라인은 웹 및 애플리케이션 보안분야에서 거의 표준이 되고 있다.

 

OWASP Top Ten

OWASP Top Ten은 웹 애플리케이션 취약점 중에서 빈도가 많고 가장 중요하고 보호해야 할 보안 위험에 대한 취약점 리스트이다. 공식 문서에서는 2021년 기준 TOP 10을 소개하고 있고, 2025년 업데이트할 예정이라고 한다.

 

  1. Broken Access Control: 허가된 사용자에 대해서만 리소스에 접근할 수 있도록 적절하게 인증/인가 설정을 해야하는데, 아무런 허가 없이 리소스에 접근할 수 있는 방법 (API 또는 특정 경로로의 접근 및 우회 등)이 있다면 보안에 위험이 발생한다.

  2. Cryptographic Failures: 비밀번호와 같은 민감한 정보를 전송하거나 저장할 때 암호화가 되지 않는다면 민감한 데이터가 노출될 수 있는 가능성이 있다.
    • 비밀번호를 DB에 저장할 때 암호화를 하지 않는 경우
    • HTTPS가 아닌 HTTP 프로토콜을 사용하여 평문으로 요청하는 경우
    • 암호화를 하긴 하지만 MD5나 SHA1과 같이 deprecated된 방식으로 암호화를 하는 경우 등
  3. Injection: 대표적으로 XSS (Cross Site Scripting), SQL Injection 등이 있으며, 요청으로 들어온 데이터 중에 스크립트나 SQL과 같은 명령문이 들어올 때 명령문의 일부분이 인터프리터로 보내지는 경우 명령어가 실행되어 결과가 요청자에게 보여질 수 있기 떄문에 취약점이 발생하며 예상치 못하게 데이터에 접근할 수 있는 방법이 생겨서 위험하다.

  4. Insecure Design: 시스템에 대한 보안 설계가 제대로 구축되지 않은 경우, 또는 나름의 설계가 되어있지만 결함이 있는 경우이다.
    • 입력 데이터 검증 부족: 애플리케이션이 사용자 입력을 제대로 검증하지 않아 공격자가 애플리케이션에 악성코드를 삽입할 수 있다.
    • 부적절한 세션 관리: 애플리케이션에서 세션을 제대로 관리하지 않아서 공격자가 세션을 탈취하여 다른 사용자의 계정을 제어할 수 있다.
    • 안전하지 않은 데이터 저장: 민감한 데이터를 제대로 저장하지 않아 공격자가 데이터에 접근하여 무단 사용할 수 있다.
    • 안전하지 않은 통신: 애플리케이션이 클라이언트 - 서버 간 통신을 제대로 보호하지 않아 공격자가 데이터를 가로채고 수정할 수 있다.
  5. Security Misconfiguration: 여러가지 보안 설정이 잘못 구성되어있는 경우를 의미한다.
    • 불필요한 포트가 열려있다거나 특정 사용자에 대해 권한이 불필요하게 많이 부여되는 경우
    • 기본 계정과 비밀번호가 계속 활성화 되어있고 변경되지 않는 경우
    • 최신 보안 기능이 비활성화 되어있거나 안전하게 구성되지 않은 경우
    • 프레임워크, 라이브러리, DB 등의 보안 설정이 제대로 되어있지 않은 경우
  6. Vulnerable and Outdated Components: 무언가 오래되었거나 여러가지 취약점이 있는 경우를 의미한다.
    • 라이브러리가 오래되었거나 취약점이 많은 경우
    • 시스템의 모든 컴포넌트의 버전을 모르는 경우
    • 취약점을 스캐닝하지 않고 사용하는 경우
  7. Identification and Authentication Failures: 인증에 대한 취약점이 있는 경우를 의미한다.
    • 브루트포스 공격 등 자동화된 공격을 허용하는 경우
    • URL에 세션 식별자를 표시하는 경우
    • 세션ID를 특정 기간이 지나도 무효화 하지 않는 경우
    • 2차 인증 등 다중 인증 요소가 누락되어있는 경우
  8. Software and Data Integrity Failures: 소프트웨어 및 데이터 무결성 실패는 무결성 위반으로부터 보호하지 않는 코드 및 인프라와 관련되어있다.
    • 애플리케이션이 신뢰할 수 없는 소스코드 및 CDN의 플러그인, 라이브러리, 모듈 등에 의존하는 경우
    • 안전하지 않은 CI/CD 파이프라인 사용
  9. Security Logging and Monitoring Failures: 로깅과 모니터링 없이는 보안 공격을 탐지할 수 없다.
    • 로그인, 접근 제어 및 서버측 입력 검증 실패 등을 기록하여 악의적인 계정을 식별할 수 있어야 한다.
    • 로깅, 모니터링 시스템에 대한 공격을 방지하기 위해 로그로 쌓이는 데이터에 민감한 정보가 없는지, 데이터가 올바르게 인코딩 되었는지 확인해야 한다.
    • 의심스러운 활동을 감지하고 신속하게 대응할 수 있도록 효과적인 모니터링과 얼럿 시스템을 구축해야 한다.
  10. SSRF (Server-Side Request Forgery): SSRF 결함은 웹 애플리케이션이 사용자가 제공한 URL을 검증하지 않고 원격 리소스를 접근할 때 발생한다. 이 공격으로 인해 방화벽이나 VPN을 설정하여 시스템 내부에서만 접근할 수 있도록 보호된 리소스에도 공격자가 접근할 수 있기 때문에 위험하다. 이를 방지하려면 여러가지 검증이 필요하다.
    • SSRF 영향을 줄이기 위해 별도의 네트워크에서 원격 리소스 접근 기능을 분할한다.
    • 기본적으로 거부 방화벽 정책을 시행하여 접근에 필요한 서버를 제외한 모든 트래픽을 차단한다.
    • 요청을 받는 애플리케이션에서는 입력 데이터를 꼼꼼하게 검증한다. (특정 형태의 URL에 대한 요청이 오면 무효화시키거나 에러를 보낸다.)


OWASP CRS (Core Rule Set)

OWASP CRS는 ModSecurity 또는 이와 호환되는 웹 애플리케이션 방화벽과 함께 사용할 수 있는 일반적인 공격 탐지 규칙 세트이다. CRS는 최소한의 거짓 경고로 OWASP Top Ten을 포함한 광범위한 공격으로부터 웹 애플리케이션을 보호하는 것을 목표로 한다. CRS는 SQL Injection, XSS, Local File Inclusion 등과 같은 여러가지 공격 범주에 대한 보호기능을 제공한다.

728x90

'보안' 카테고리의 다른 글

WAF(웹 방화벽) 소개  (2) 2024.11.05

댓글