OWASP TOP 10 분류 기준

🛡 Security Study Note

OWASP Top 10 : 2025

웹 애플리케이션 보안의 가장 중요한 10대 취약점 — 2025 최신 기준

📅 발표 2025년 11월 📊 분석 CVE 175,000+건 🆕 신규 항목 2개 🔀 통합 항목 1개

📋 2021 → 2025 주요 변경사항

🆕
신규 추가
A03 소프트웨어 공급망 실패
A10 예외 조건 오처리
🔀
순위 변동
보안 설정 오류 A05→A02 상승
인젝션 A03→A05 하락
🔗
통합·삭제
SSRF(A10:2021)가
접근 제어 실패(A01)에 통합
📊 2021 vs 2025 전체 비교
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)A10A01에 통합
🔍 10대 취약점 상세 설명
A01

🔑 접근 제어 실패 (Broken Access Control)

2021 A01 → 유지 ⚠️ SSRF 통합 CWE 40개 · 가장 빈번한 취약점
💡 쉽게 말하면: 건물에 경비원이 없어서 아무나 사장실에 들어갈 수 있는 상황. 사용자가 허용되지 않은 기능이나 데이터에 접근합니다.

사용자가 의도된 권한 범위를 벗어나 행동할 수 있는 취약점입니다. IDOR(불안전한 직접 객체 참조), CORS 설정 오류, 권한 상승, 토큰 조작, 그리고 2025년부터 SSRF까지 포함됩니다.

⚡ 대표 공격 시나리오
/admin 페이지 무단 접근, URL의 user_id를 변조해 타인 정보 조회(IDOR), SSRF로 클라우드 내부 메타데이터 http://169.254.169.254 탈취
🛡️ 방어 방법
  • 🔒모든 API에 서버 측 인가(Authorization) 검증 필수 적용
  • 🔒RBAC(역할 기반 접근 제어) 명확히 구분
  • 🔒내부 IP(127.0.0.1, 10.x.x.x) 화이트리스트로 SSRF 차단
  • 🔒JWT 등 토큰은 서버에서 검증, 클라이언트 단 우회 불가하도록 설계
A02

⚙️ 보안 설정 오류 (Security Misconfiguration)

▲ A05 → A02 상승 발생 빈도 90%+
💡 쉽게 말하면: 새 자물쇠를 샀는데 초기 비밀번호 '0000'을 그대로 쓰는 것. 기능은 있지만 설정이 엉망입니다.

기본 계정/비밀번호 미변경, 불필요한 서비스 활성화, 오류 메시지에 시스템 정보 노출, 클라우드 스토리지 공개 설정 등 잘못된 환경 구성으로 발생합니다. 3단계 급상승한 이유는 클라우드 인프라 보편화 때문입니다.

⚡ 대표 공격 시나리오
admin/admin 기본 계정 로그인, /swagger-ui 또는 /actuator 무단 노출, 스택 트레이스로 내부 경로·DB 정보 수집, S3 버킷 공개 설정으로 파일 유출
🛡️ 방어 방법
  • 🔒불필요한 포트·서비스·계정 즉시 비활성화
  • 🔒운영 환경에서 디버그 모드·상세 에러 메시지 OFF
  • 🔒클라우드 리소스(S3, GCS) 공개 여부 정기 점검
  • 🔒IaC(Terraform) 보안 스캐닝 CI/CD에 통합
A03

📦 소프트웨어 공급망 실패 (Software Supply Chain Failures)

🆕 NEW 2025 2021 "취약한 구성요소" → 범위 전면 확장
💡 쉽게 말하면: 식재료 공급업체가 오염된 재료를 납품했는데, 레스토랑은 이를 모르고 그대로 요리합니다. 외부에서 들어오는 모든 코드를 신뢰하면 안 됩니다.

소프트웨어 빌드·배포·업데이트 전 과정에서 발생하는 취약점입니다. 악성 패키지 삽입, CI/CD 파이프라인 해킹, 신뢰할 수 없는 서드파티 코드까지 포함합니다. Log4Shell, XZ Utils 백도어가 대표 사례입니다.

⚡ 대표 공격 시나리오
typosquatting(npm의 lodashIodash로 위장), 오픈소스 메인테이너 계정 탈취 후 악성코드 삽입, CI/CD 서버 해킹으로 빌드 결과물 조작
🛡️ 방어 방법
  • 🔒pip audit / npm audit 정기 실행 + Dependabot 자동화
  • 🔒SBOM(소프트웨어 자재 명세서) 생성 및 관리
  • 🔒패키지 설치 시 공식 서명 검증
  • 🔒CI/CD 파이프라인 접근 권한 최소화 및 MFA 적용
A04

🔐 암호화 실패 (Cryptographic Failures)

▼ A02 → A04 하락 민감 데이터 보호 핵심
💡 쉽게 말하면: 비밀 편지를 엽서(평문)로 보내는 것. 우체부(중간자)가 내용을 다 볼 수 있습니다.

민감 데이터(비밀번호, 카드번호, 개인정보)를 암호화하지 않거나, MD5·SHA1 같은 구식 알고리즘을 사용하거나, HTTP로 전송할 때 발생합니다. 보안 인식 향상으로 순위는 하락했지만 여전히 치명적입니다.

⚡ 대표 공격 시나리오
MITM 공격으로 HTTP 트래픽 가로채기, DB 덤프에서 MD5 해시 비밀번호 레인보우 테이블로 크랙, TLS 1.0/1.1 구버전 취약점 악용
🛡️ 방어 방법
  • 🔒HTTPS(TLS 1.3 권장, 최소 1.2) 필수 적용 및 HSTS 설정
  • 🔒비밀번호는 반드시 bcrypt / argon2 해시로 저장
  • 🔒민감 데이터 저장 시 AES-256 암호화
  • 🔒MD5, SHA1, DES 등 구식 알고리즘 즉시 제거
A05

💉 인젝션 (Injection)

▼ A03 → A05 하락 SQL·OS·LDAP·NoSQL·XSS 포함
💡 쉽게 말하면: 카페 주문서에 "아메리카노 + 전 재고 다 버려" 라고 써서 낸 것. 사용자 입력이 명령어로 실행됩니다.

사용자 입력값이 검증 없이 SQL·OS 명령어·LDAP 등에 삽입되어 실행되는 취약점입니다. 순위는 하락했지만 XSS를 포함한 인젝션 계열은 여전히 고위험 취약점입니다.

⚡ 대표 공격 시나리오
로그인 폼에 ' OR '1'='1 입력 → 인증 우회, 검색창에 SQL 삽입 → 전체 DB 덤프, XSS로 사용자 쿠키(세션) 탈취
🛡️ 방어 방법
  • 🔒파라미터화된 쿼리(Prepared Statement) 또는 ORM 필수 사용
  • 🔒입력값 서버 측 화이트리스트 검증
  • 🔒출력값 이스케이핑으로 XSS 방지
  • 🔒DB 계정 최소 권한 원칙(읽기 전용 분리)
A06

🏗️ 안전하지 않은 설계 (Insecure Design)

▼ A04 → A06 하락 코드 버그가 아닌 설계 자체의 결함
💡 쉽게 말하면: 설계도 없이 집을 짓기 시작하는 것. 나중에 벽을 뜯어도 구조 자체가 잘못된 것은 고칠 수 없습니다.

코드 구현의 버그가 아닌, 처음 기획·설계 단계에서 보안을 고려하지 않아 발생하는 취약점입니다. 비즈니스 로직 자체에 결함이 있어 단순 코드 패치로는 해결이 어렵습니다.

⚡ 대표 공격 시나리오
무한 쿠폰 발급 설계 허점 악용, 비밀번호 재설정에 인증 없이 처리, 잔액 음수 허용으로 무한 결제, 이메일 인증 없는 계정 생성
🛡️ 방어 방법
  • 🔒설계 단계에서 위협 모델링(Threat Modeling) 수행
  • 🔒보안 요구사항을 기획 명세서에 명시
  • 🔒OWASP ASVS 체크리스트 적용
  • 🔒개발 전 보안 설계 리뷰(Security Design Review) 진행
A07

🪪 인증 실패 (Authentication Failures)

A07 → 유지 계정 탈취의 주요 경로
💡 쉽게 말하면: 호텔 방 카드키가 허술해서 다른 방도 열리거나, 카드키 없이 버튼만 누르면 문이 열리는 상황.

취약한 비밀번호 정책, 로그인 시도 횟수 무제한 허용, 세션 미만료, 안전하지 않은 비밀번호 복구 등 인증 메커니즘의 결함입니다.

⚡ 대표 공격 시나리오
브루트포스(무한 로그인 시도), 크리덴셜 스터핑(유출된 ID/PW 목록 대입), 세션 하이재킹(훔친 쿠키로 로그인)
🛡️ 방어 방법
  • 🔒MFA(다중 인증) 적용 — OTP, TOTP, WebAuthn
  • 🔒로그인 시도 횟수 제한 + 점진적 지연(Rate Limiting)
  • 🔒세션 만료 시간 설정 및 로그아웃 시 서버 측 세션 무효화
  • 🔒비밀번호 복잡도 정책 + 알려진 유출 비밀번호 필터링
A08

🖥️ 소프트웨어·데이터 무결성 실패 (Software or Data Integrity Failures)

A08 → 유지 CI/CD·자동업데이트 검증 부재
💡 쉽게 말하면: 피자 배달을 시켰는데 배달 중 누군가 바꿔치기 해도 모르는 상황. 출처 검증 없이 외부 코드를 신뢰합니다.

CI/CD 파이프라인, 자동 업데이트, 플러그인, CDN 등이 무결성 검증 없이 신뢰되는 취약점입니다. A03(공급망 실패)이 공급망 전체를 다룬다면, A08은 아티팩트·데이터 수준의 무결성 검증에 집중합니다.

⚡ 대표 공격 시나리오
서명 없는 자동 업데이트로 악성코드 주입, CI/CD에서 검증 없이 임의 아티팩트 배포, 안전하지 않은 역직렬화로 원격 코드 실행(RCE)
🛡️ 방어 방법
  • 🔒소프트웨어 코드 서명 및 배포 전 서명 검증
  • 🔒신뢰할 수 있는 저장소에서만 패키지 설치
  • 🔒역직렬화 시 타입 검증 및 허용 목록(allowlist) 관리
  • 🔒CI/CD 파이프라인에 무결성 체크(해시 비교) 단계 추가
A09

📋 보안 로깅·알림 실패 (Security Logging & Alerting Failures)

A09 → 유지 (명칭 변경) "Monitoring" → "Alerting" 강조
💡 쉽게 말하면: CCTV가 없는 편의점. 도둑이 들어도 모르고, 사건 조사도 불가능합니다. 2025년에는 '기록'뿐 아니라 '알림'까지 강조합니다.

보안 이벤트를 기록하지 않거나, 기록해도 알림·모니터링이 없어 침해 사고를 탐지하지 못하는 취약점입니다. 평균 침해 탐지까지 200일 이상 걸리는 주요 원인입니다.

⚡ 대표 공격 시나리오
로그 없음 → 공격자가 장기간 내부 탐색, 알림 미설정 → 수천 번 로그인 시도 탐지 실패, 로그 변조 → 사후 조사 불가
🛡️ 방어 방법
  • 🔒인증·인가·오류 이벤트 전수 로깅 (개인정보 미포함)
  • 🔒로그 무결성 보호 (외부 SIEM 저장, 변조 방지)
  • 🔒이상 탐지 알림 설정 — Slack·이메일 연동
  • 🔒정기 로그 리뷰 및 인시던트 대응(IR) 절차 수립
A10

💥 예외 조건 오처리 (Mishandling of Exceptional Conditions)

🆕 NEW 2025 설문 응답자 50%가 신흥 1위 위협으로 선정
💡 쉽게 말하면: 비상구 표시등이 꺼지면 자동으로 모든 문을 열어버리는 건물. 오류가 발생했을 때 오히려 더 취약해집니다.

예상치 못한 입력, 리소스 부족, 타임아웃, 내부 오류 상황에서 시스템이 안전하지 않게 실패(Fail-Open)하는 취약점입니다. 스택 트레이스 노출로 내부 정보가 누출되거나, NULL 오류로 서비스가 중단될 수 있습니다.

⚡ 대표 공격 시나리오
DB 연결 실패 시 인증 우회(Fail-Open), 스택 트레이스가 사용자에게 노출되어 내부 경로·라이브러리 버전 노출, 타임아웃 오류 시 접근 제어 무력화
🛡️ 방어 방법
  • 🔒오류 발생 시 기본적으로 접근 거부(Fail-Secure / Fail-Closed) 원칙
  • 🔒사용자에게는 일반 오류 메시지만, 내부 로그에는 상세 기록
  • 🔒전역 예외 처리기(Global Exception Handler) 구현
  • 🔒스트레스 테스트 및 카오스 엔지니어링으로 장애 내성 검증