서론
OWASP(Open Web Application Security Project) Top 10은 웹 애플리케이션 보안 취약점 중 가장 위험도가 높고 빈번하게 발생하는 10가지 유형을 선정한 권위 있는 가이드라인입니다. 2021년 버전 이후로도 꾸준히 참조되고 있으며, 개발자·보안팀·경영진 모두에게 “우선적으로 점검해야 할” 체크리스트로 자리 잡았습니다. 본 글에서는 OWASP Top 10의 각 항목을 심층적으로 분석하고, 실제 공격 시나리오, 주요 원인, 그리고 효과적인 대응 방안을 제시합니다.
A01:2021 – Broken Access Control (접근 제어 취약점)
개요
접근 제어가 제대로 구현되지 않아 인증되지 않았거나 권한이 없는 사용자가 민감한 기능이나 데이터를 조회·수정·삭제할 수 있는 취약점입니다.
주요 원인
- URL·API 엔드포인트에 대한 서버측 검증 미흡
- 클라이언트 측 권한 체크(CSRF 토큰, 사용자 역할) 의존
공격 시나리오
공격자는 단순히 URL 파라미터를 조작해 관리자 전용 페이지나 API를 호출할 수 있습니다. 예를 들어 /api/users/1234/orders
대신 /api/users/5678/orders
로 요청해 다른 사용자의 주문 기록을 조회하는 식입니다.
대응 방안
- 서버사이드 권한 검증: 모든 민감 리소스 접근 전, 토큰 기반 인증·인가 로직을 거치도록 강제
- 정책 기반 접근 제어(PBAC): 사용자 역할·속성·정책 매트릭스를 정의하고 중앙에서 관리
- 자동화된 스캔·테스트: CI/CD 파이프라인에 접근 제어 검증 스크립트를 포함
A02:2021 – Cryptographic Failures (암호화 실패)
개요
데이터 암호화·복호화, 키 관리, 전송 계층 보안(HTTPS) 등에서 잘못된 구현이나 설정으로 인해 데이터 유출·위변조 위험이 커지는 취약점입니다.
주요 원인
- HTTP 대신 HTTP를 혼용 사용
- 약한 암호화 알고리즘(예: MD5, SHA-1) 사용
- 정적·하드코딩된 암호화 키
공격 시나리오
네트워크 스니핑을 통해 평문 데이터를 탈취하거나, 키가 노출된 시스템에서 암호화된 데이터를 무단 해독할 수 있습니다.
대응 방안
- TLS 1.2 이상 강제 적용: 모든 트래픽을 HTTPS로 전송하고 HSTS 헤더 설정
- 표준 강도 암호화 알고리즘 사용: AES-256, RSA-2048 이상의 알고리즘 채택
- 안전한 키 관리: 키 관리 시스템(KMS)·HSM을 통한 키 저장·갱신 정책 수립
A03:2021 – Injection (인젝션)
개요
SQL, NoSQL, OS 커맨드, LDAP, XML 등의 명령문이나 질의에 외부 입력을 직접 삽입함으로써 공격자가 임의 코드를 실행하는 취약점입니다.
주요 원인
- 사용자 입력값 검증·준비된 문장(prepared statement) 미사용
- ORM(Object-Relational Mapping) 프레임워크 설정 오류
공격 시나리오
‘OR 1=1’ 등의 SQL 인젝션을 통해 로그인 우회, 데이터베이스 전체 추출, 심지어 관리자 권한 획득까지 가능합니다.
대응 방안
- 파리미터라이즈드 쿼리: 준비된 문장·ORM의 바인딩 기능 활용
- 입력값 검증·화이트리스트: 허용된 형식·길이·문자만 처리
- 웹 애플리케이션 방화벽(WAF): 의심스러운 패턴 탐지·차단
A04:2021 – Insecure Design (불안전한 설계)
개요
보안 요구사항이 설계 단계에서 부재하거나 미흡해 전체 아키텍처 수준에서 위험이 내재된 상태로 개발이 진행되는 문제입니다.
주요 원인
- 위협 모델링(Threat Modeling) 생략
- 보안 설계 원칙(Least Privilege, Fail-Safe Defaults) 미준수
대응 방안
- 위협 모델링 수행: 데이터 흐름·자산·위협 요소 식별
- 보안 패턴 적용: 검증된 보안 설계 패턴·아키텍처 가이드라인 활용
- 보안 설계 검토: 아키텍트·보안 전문가에 의한 정기적 설계 리뷰
A05:2021 – Security Misconfiguration (보안 설정 오류)
개요
서버·프레임워크·라이브러리·플랫폼의 기본 설정을 그대로 두거나, 불필요한 기능을 활성화해 공격면(Attack Surface)이 늘어나는 문제입니다.
주요 원인
- 디버그 모드·관리 콘솔 공개
- 기본 계정·패스워드 미변경
대응 방안
- 안전한 기본값: 배포 전 불필요 서비스 비활성화, 디버그 모드 비활성화
- 구성 관리 도구: IaC(Infrastructure as Code)로 설정 일관성 유지
- 정기 스캔: CIS 벤치마크·취약점 스캐너로 설정 점검
A06:2021 – Vulnerable and Outdated Components (취약·구식 컴포넌트)
개요
서드파티 라이브러리·플러그인·미들웨어 등에서 알려진 취약점이 패치되지 않아 공격자가 이를 악용할 수 있는 상태입니다.
주요 원인
- 종속성 관리 부재
- 패치 주기·버전 정책 미확립
대응 방안
- Dependabot·Snyk 등 자동화 도구 도입
- 정기적 라이선스·보안 감사: 종속성 목록 주기 확인
- 필요 시 격리: 레거시·위험 컴포넌트는 별도 네트워크·컨테이너로 분리
A07:2021 – Identification and Authentication Failures (식별·인증 실패)
개요
인증 메커니즘이 약하거나, 세션 관리·패스워드 정책이 부실해 공격자가 사용자나 관리자 계정을 탈취할 수 있는 취약점입니다.
주요 원인
- 약한 패스워드 정책(최소 길이 미설정)
- 세션 고정(Session Fixation)·하이재킹
대응 방안
- MFA(다단계 인증) 강제 적용
- 안전한 세션 관리: 세션 타임아웃·세션 ID 회전
- 패스워드 해싱: bcrypt·PBKDF2 사용
A08:2021 – Software and Data Integrity Failures (소프트웨어·데이터 무결성 실패)
개요
업데이트·배포 과정에서 코드·패키지 무결성이 검증되지 않아, 중간자 공격 또는 악성코드 삽입 위험이 발생합니다.
주요 원인
- 코드 서명 미사용
- CI/CD 파이프라인 보안 취약
대응 방안
- 디지털 서명: 코드·패키지 서명 및 검증 절차 수립
- 안전한 CI/CD: 최소 권한 원칙·비밀 관리 시스템 연동
- SBOM(Software Bill of Materials) 관리
A09:2021 – Security Logging and Monitoring Failures (보안 로깅·모니터링 실패)
개요
이상 징후를 탐지·대응할 수 있는 로깅·모니터링 체계가 부실해, 침해 발생 후 탐지·대응이 지연되는 문제입니다.
주요 원인
- 로깅 레벨 과도 설정 또는 미설정
- 중앙집중형 로그 수집 시스템 부재
대응 방안
- ELK·Splunk·SIEM 구축
- 적절한 로깅 정책: 민감 데이터 제외·포렌식용 메타정보 포함
- 알림·자동화 대응: 이상 패턴 탐지 시 즉각 알람·격리
A10:2021 – Server‑Side Request Forgery (SSRF)
개요
서버가 신뢰되지 않는 외부 URL로 요청을 보낼 때, 공격자가 내부 네트워크·메타데이터 서비스 등에 접근하도록 유도하는 취약점입니다.
주요 원인
- 외부 URL 입력값 검증 부재
- 방화벽·Outbound 필터링 미흡
대응 방안
- 화이트리스트 필터링: 허용된 도메인·IP만 요청 허용
- 네트워크 격리: 내부 관리 인터페이스 분리
- 타임아웃·리디렉션 제어: 비정상 응답 시 차단
결론
OWASP Top 10은 웹 애플리케이션 보안의 핵심을 집약한 로드맵입니다. 각 취약점은 단순히 코드 레벨의 이슈를 넘어 설계·운영·모니터링 전반에 걸친 조직 차원의 대응이 필요합니다. 본 가이드라인을 토대로 보안 프로그램을 체계화하고, 정기적인 감사·훈련을 통해 “예방 가능한 사고”를 최소화하시기 바랍니다.