OWASP Top 10에 대하여

YTT.erica·2025년 3월 10일

OWASP Top 10

https://owasp.org/Top10/

Open Worldwide (Web) Application Security Project

오픈소스 웹 애플리케이션 보안 프로젝트를 의미

  • 웹에서 발생할 수 있는 정보 노출, 악성 스크립트, 보안 취약점 등을 연구하며 주기적으로 10대 웹 애플리케이션 취약점을 공개
  • 가장 최근에 발표된 Top 10 자료는 2021년

A01:Broken Access Control 취약한 접근 통제

사용자가 자신의 권한 밖의 행동을 할 수 있는 취약점

특정 사용자에게만 부여해야 할 권한을 모든 사용자에게 부여한다거나, 인증되지 않은 사용자가 인증된 사용자만 갈 수 있는 탐생을 수행하는 등의 취약점을 의미

예시

  • 특정 사용자에게만 부여해야 하는 권한을 기본적으로 모든 사용자에 부여하는 경우
  • 인증되지 않은 사용자가 인증이 필요한 페이지를 강제로 탐색할 수 있는 경우
  • 사용자로 로그인해 관리자 권한으로 활동할 수 있는 경우
  • POST, PUT, DELETE API 요청에 대한 접근 제어가 누락된 경우
  • 파라미터나 쿠키 등의 요청을 조작해 권한 상승 혹은 타 사용자의 권한을 사용할 수 있는 경우

예방 방법

  • 허용 목록을 기반으로 공용 리소스를 제외하고는 기본적으로 접근 제한
  • 접근 제어 정책을 항상 꼼꼼히 확인

A02:Cryptographic Failures 암호학적 실패

암호화에 실패하거나, 오류가 있는 경우, 혹은 암호화해야 하는 데이터가 암호화되지 않은 등 민감 데이터에 대한 암호화에 실패하는 경우

예시

  • 내·외부망에 관계없이 데이터가 전송구간에서 평문으로 전송되는 경우(HTTP, FTP, TELNET 등)
  • 취약한 암호화 프로토콜을 사용하는 경우(SSL v2.0, SSL v3.0, TLS v1.0, TLS v1.1)
  • 취약한 암호화 알고리즘을 사용하는 경우(DES, RC4, MD5 등)
  • 취약한 암호화 컴포넌트를 사용하는 경우(취약한 버전의 openssl 사용 등)
  • 보안 헤더 설정을 통한 HSTS가 누락된 경우(HSTS : HTTP를 HTTPS로 강제 리다이렉트)
  • 고정된 암호문을 사용하는 경우(Salt, 일회용 난수 미포함)
  • 사설 인증서 사용, 인증서와 도메인 불일치
  • 암호키 관리가 미흡한 경우(소스코드 하드코딩 등)

예방 방법

  • HTTP를 HTTPS 강제 리다이렉트하는 HSTS를 사용
  • 암호화 시 암호문이 고정되지 않도록 하기
  • 신뢰할 수 있는 인증서 사용

A03:Injection 인젝션

XSS와 같이 사용자가 제공하는 데이터를 조작하는 공격

사용자가 전달하는 데이터(파라미터, 헤더, URL, 쿠키(Cookie), Json 데이터, SOAP, XML 등 모든 형태)를 신뢰할 수 없는 데이터로 조작해서, 서버 측에서 명령어나 쿼리문의 일부로 인식하게 만들 때 발생하는 취약점입니다

예시

  • SQL injection, NoSQL injection
  • OS Command Injection
  • ORM(Object Relational Mapping) injection
  • LDAP injection
  • EL(Expression Language) injection
  • OGNL(Object Graph Navigation Library) injection
  • Cross-site Scripting

예방 방법

  • 사용자가 입력하는 데이터는 모두 의심하고 바로 사용하지 말기 → 한 단계 검증을 거친 이후에 사용

A04:Insecure Design 안전하지 않은 설계

코드 구현 단계가 아닌 기획 설계 단계에서 발생한 보안 취약점

설계가 잘못된 애플리케이션은 추후에 진행하는 보안테스트로 발견한 사항을 쉽게 조치할 수 없거나, 위험성을 가지고 운영해야하는 경우들이 많음

예방 방법

  • 설계와 기획 단계에서 주의를 기울여야 함

A05:Security Misconfiguration 보안 오류 설정

애플리케이션 설정 시에 잘못된 설정으로 인해 발생하는 취약점

데이터베이스 마스터 계정을 아이디나 암호 변경 없이 사용하거나, 보안 헤더를 누락하는 등의 잘못된 설정을 의미

예시

  • 불필요한 기능을 활성화했거나 설치함(예: 불필요 포트, 불필요 페이지, 불필요 계정/권한 등)
  • 벤더사에서 기본으로 제공하는 관리자 계정(ID/Password)을 변경하지 않고 사용
  • 에러 페이지를 통한 애플리케이션 에러 정보 노출
  • 보안 헤더 설정 누락
  • 서버 OS, 프레임워크, 라이브러리, 데이터베이스 등의 보안 설정 누락

예방 방법

  • 애플리케이션을 처음 설치할 때 불필요한 계정이나 샘플, 문서 등을 제거
  • 적절한 보안 헤더를 미리 설정

A06:Vulnerable and Outdated Components 취약하고 오래된 컴포넌트

취약점이 있거나 지원이 종료된 소프트웨어를 사용하는 경우에 발생하는 보안 취약점

예시

  • 지원 종료된 OS 사용(Windows XP, Windows server 2000 등)
  • 알려진 취약점이 존재하는 버전의 애플리케이션 사용(nginx, apache tomcat, 오픈소스 웹 에디터, WordPress 등)
  • 알려진 취약점이 존재하는 버전의 프레임워크 사용(Apache Struts 2, Spring 등)
  • 알려진 취약점이 존재하는 버전의 라이브러리 사용(OpenSSL 등)

예방 방법

  • 불필요한 소프트웨어는 사전에 미리 제거
  • 주요 라이브러리는 항상 보안 취약점이 있는지 점검하며 주기적으로 패티 업데이트 수행

A07:Identification and Authentication Failures 식별 및 인증 실패

사용자의 신원 확인에 실패하거나, 암호 생성 정책이 없는 경우, 무작위 대입으로 암호를 찾을 수 있는 경우, 인증 및 세션 관리가 잘못되어 유출되는 등의 인증 관련 보안 취약점을 의미

예시

  • Multi-factor 인증이나 2차 인증 부재로 Credential Stuffing, Brute forcing 공격 등에 노출되는 경우
  • 인증 실패에 대한 제한이 없어 Brute forcing 공격에 노출되는 경우
  • 안전한 비밀번호 생성 정책이 없어, 취약한 비밀번호 생성을 허용하는 경우
  • URL에 인증 세션 ID가 노출되는 경우(GET Method)
  • 로그인 후 새로운 세션 ID로 발급하지 않고 기존 세션 ID를 재사용하는 경우
  • 세션 타임아웃이 없거나 로그아웃 후 세션 파기를 하지 않는 경우

예방 방법

  • 사용자의 신원 확인 로직 추가
  • 암호 생성 정책 추가
  • 인증 및 세션 관리 철저

A08:Software and Data Integrity Failures 소프트웨와 데이터 무결성 실패

소프트웨어와 데이터 무결성 오류는 애플리케이션이 신뢰할 수 없는 소스, 저장소, CDN 플러그인, 라이브러리에 의존하거나 잘못된 CI/CD 파이프라인을 사용하는 경우 발생

예시

  • 애플리케이션이 사용하는 라이브러리나 모듈에 대한 무결성 검증이 없어 변조가 가능한 경우
  • 업데이트 공급망에 대한 검증이 없는 경우
  • CI/CD 파이프라인에 대한 적절한 보안성 검토가 없는 경우
  • 직렬화된 데이터에 대한 무결성 검증이 없는 경우

예방 방법

  • 무결성 검증 절차를 거쳐 보안 취약점이 발생하지 않도록 함

A09:Security Logging and Monitoring Failures 보안 로깅과 모니터링 실패

주요 기능에 대한 적절한 로깅이 추가돼 있지 않거나 로깅 정보가 부족해 사전에 공격을 감지하지 못하는 취약점을 의미

예시

  • 로그인, 인증 실패, 권한 설정 등 중요 기능 수행에 대한 로깅이 없는 경우
  • 일정 주기로 로그에 대한 백업 절차가 없는 경우
  • 로깅 및 모니터링이 필요한 부분을 명확하게 구분해서 로깅하지 않아, 불명확한 로깅 및 모니터링을 하는 경우

예방 방법

  • 의심스러운 활동을 사전에 감시할 수 있도록 적절한 형식과 보관 주기로 로깅을 수행

A10:Server-Side Reuquest Forgery 서버 사이드 요청 변조

서버에서 이뤄지는 요청을 변조해 원래가야 할 서버가 아닌 공격자가 의도한 서버로 요청이 가게 하거나 또는 위조된 요청을 보내는 취약점을 의미

예시

  • 서버가 적절한 검증 절차 없이 사용자 요청을 로컬 혹은 원격 리소스에 접근하도록 하는 경우

예방 방법

  • 서버가 속한 내부 네트워크끼리 통신할 때에도 방화벽을 통해 접근제어 규칙을 적용
  • 모든 사용자 제공 데이터에 대한 검증
  • 사용자 요청에 대한 서버 측 수행 결과 검증
profile
'◡'✿ 꿈을 찾아가보자고~ '◡'✿

0개의 댓글