OWASP TOP 10 분류 기준
OWASP Top 10 : 2025
웹 애플리케이션 보안의 가장 중요한 10대 취약점 — 2025 최신 기준
📋 2021 → 2025 주요 변경사항
A10 예외 조건 오처리
인젝션 A03→A05 하락
접근 제어 실패(A01)에 통합
| 2025 | 항목명 | 2021 | 변동 |
|---|---|---|---|
| A01 | 접근 제어 실패 (Broken Access Control) | A01 | — 유지 |
| A02 | 보안 설정 오류 (Security Misconfiguration) | A05 | ▲ 3단계 상승 |
| A03 | 소프트웨어 공급망 실패 (Software Supply Chain Failures) | — | NEW |
| A04 | 암호화 실패 (Cryptographic Failures) | A02 | ▼ 2단계 하락 |
| A05 | 인젝션 (Injection) | A03 | ▼ 2단계 하락 |
| A06 | 안전하지 않은 설계 (Insecure Design) | A04 | ▼ 2단계 하락 |
| A07 | 인증 실패 (Authentication Failures) | A07 | — 유지 |
| A08 | 소프트웨어·데이터 무결성 실패 | A08 | — 유지 |
| A09 | 보안 로깅·알림 실패 (Logging & Alerting Failures) | A09 | — 명칭 변경 |
| A10 | 예외 조건 오처리 (Mishandling of Exceptional Conditions) | — | NEW |
| — | 서버 측 요청 위조 (SSRF) | A10 | A01에 통합 |
사용자가 의도된 권한 범위를 벗어나 행동할 수 있는 취약점입니다. IDOR(불안전한 직접 객체 참조), CORS 설정 오류, 권한 상승, 토큰 조작, 그리고 2025년부터 SSRF까지 포함됩니다.
http://169.254.169.254 탈취- 🔒모든 API에 서버 측 인가(Authorization) 검증 필수 적용
- 🔒RBAC(역할 기반 접근 제어) 명확히 구분
- 🔒내부 IP(127.0.0.1, 10.x.x.x) 화이트리스트로 SSRF 차단
- 🔒JWT 등 토큰은 서버에서 검증, 클라이언트 단 우회 불가하도록 설계
기본 계정/비밀번호 미변경, 불필요한 서비스 활성화, 오류 메시지에 시스템 정보 노출, 클라우드 스토리지 공개 설정 등 잘못된 환경 구성으로 발생합니다. 3단계 급상승한 이유는 클라우드 인프라 보편화 때문입니다.
/swagger-ui 또는 /actuator 무단 노출, 스택 트레이스로 내부 경로·DB 정보 수집, S3 버킷 공개 설정으로 파일 유출- 🔒불필요한 포트·서비스·계정 즉시 비활성화
- 🔒운영 환경에서 디버그 모드·상세 에러 메시지 OFF
- 🔒클라우드 리소스(S3, GCS) 공개 여부 정기 점검
- 🔒IaC(Terraform) 보안 스캐닝 CI/CD에 통합
소프트웨어 빌드·배포·업데이트 전 과정에서 발생하는 취약점입니다. 악성 패키지 삽입, CI/CD 파이프라인 해킹, 신뢰할 수 없는 서드파티 코드까지 포함합니다. Log4Shell, XZ Utils 백도어가 대표 사례입니다.
lodash를 Iodash로 위장), 오픈소스 메인테이너 계정 탈취 후 악성코드 삽입, CI/CD 서버 해킹으로 빌드 결과물 조작- 🔒pip audit / npm audit 정기 실행 + Dependabot 자동화
- 🔒SBOM(소프트웨어 자재 명세서) 생성 및 관리
- 🔒패키지 설치 시 공식 서명 검증
- 🔒CI/CD 파이프라인 접근 권한 최소화 및 MFA 적용
민감 데이터(비밀번호, 카드번호, 개인정보)를 암호화하지 않거나, MD5·SHA1 같은 구식 알고리즘을 사용하거나, HTTP로 전송할 때 발생합니다. 보안 인식 향상으로 순위는 하락했지만 여전히 치명적입니다.
- 🔒HTTPS(TLS 1.3 권장, 최소 1.2) 필수 적용 및 HSTS 설정
- 🔒비밀번호는 반드시 bcrypt / argon2 해시로 저장
- 🔒민감 데이터 저장 시 AES-256 암호화
- 🔒MD5, SHA1, DES 등 구식 알고리즘 즉시 제거
사용자 입력값이 검증 없이 SQL·OS 명령어·LDAP 등에 삽입되어 실행되는 취약점입니다. 순위는 하락했지만 XSS를 포함한 인젝션 계열은 여전히 고위험 취약점입니다.
' OR '1'='1 입력 → 인증 우회, 검색창에 SQL 삽입 → 전체 DB 덤프, XSS로 사용자 쿠키(세션) 탈취- 🔒파라미터화된 쿼리(Prepared Statement) 또는 ORM 필수 사용
- 🔒입력값 서버 측 화이트리스트 검증
- 🔒출력값 이스케이핑으로 XSS 방지
- 🔒DB 계정 최소 권한 원칙(읽기 전용 분리)
코드 구현의 버그가 아닌, 처음 기획·설계 단계에서 보안을 고려하지 않아 발생하는 취약점입니다. 비즈니스 로직 자체에 결함이 있어 단순 코드 패치로는 해결이 어렵습니다.
- 🔒설계 단계에서 위협 모델링(Threat Modeling) 수행
- 🔒보안 요구사항을 기획 명세서에 명시
- 🔒OWASP ASVS 체크리스트 적용
- 🔒개발 전 보안 설계 리뷰(Security Design Review) 진행
취약한 비밀번호 정책, 로그인 시도 횟수 무제한 허용, 세션 미만료, 안전하지 않은 비밀번호 복구 등 인증 메커니즘의 결함입니다.
- 🔒MFA(다중 인증) 적용 — OTP, TOTP, WebAuthn
- 🔒로그인 시도 횟수 제한 + 점진적 지연(Rate Limiting)
- 🔒세션 만료 시간 설정 및 로그아웃 시 서버 측 세션 무효화
- 🔒비밀번호 복잡도 정책 + 알려진 유출 비밀번호 필터링
CI/CD 파이프라인, 자동 업데이트, 플러그인, CDN 등이 무결성 검증 없이 신뢰되는 취약점입니다. A03(공급망 실패)이 공급망 전체를 다룬다면, A08은 아티팩트·데이터 수준의 무결성 검증에 집중합니다.
- 🔒소프트웨어 코드 서명 및 배포 전 서명 검증
- 🔒신뢰할 수 있는 저장소에서만 패키지 설치
- 🔒역직렬화 시 타입 검증 및 허용 목록(allowlist) 관리
- 🔒CI/CD 파이프라인에 무결성 체크(해시 비교) 단계 추가
보안 이벤트를 기록하지 않거나, 기록해도 알림·모니터링이 없어 침해 사고를 탐지하지 못하는 취약점입니다. 평균 침해 탐지까지 200일 이상 걸리는 주요 원인입니다.
- 🔒인증·인가·오류 이벤트 전수 로깅 (개인정보 미포함)
- 🔒로그 무결성 보호 (외부 SIEM 저장, 변조 방지)
- 🔒이상 탐지 알림 설정 — Slack·이메일 연동
- 🔒정기 로그 리뷰 및 인시던트 대응(IR) 절차 수립
예상치 못한 입력, 리소스 부족, 타임아웃, 내부 오류 상황에서 시스템이 안전하지 않게 실패(Fail-Open)하는 취약점입니다. 스택 트레이스 노출로 내부 정보가 누출되거나, NULL 오류로 서비스가 중단될 수 있습니다.
- 🔒오류 발생 시 기본적으로 접근 거부(Fail-Secure / Fail-Closed) 원칙
- 🔒사용자에게는 일반 오류 메시지만, 내부 로그에는 상세 기록
- 🔒전역 예외 처리기(Global Exception Handler) 구현
- 🔒스트레스 테스트 및 카오스 엔지니어링으로 장애 내성 검증
'보안 공부' 카테고리의 다른 글
| 파일 업로드 취약점 (0) | 2026.05.11 |
|---|---|
| 크로스 사이트 스크립팅 (Cross-Site Scripting, XSS) (0) | 2026.05.06 |
| 웹사이트 보안 헤더, Python 3줄로 점검하기 (0) | 2026.05.04 |
| Insecure Direct Object Reference (1) | 2026.05.03 |
| SQL Injection 데이터베이스를 노리는 가장 오래된 공격 (0) | 2026.05.03 |