剣 KENSAI
← 블로그로 돌아가기
리서치 읽는 시간 25분

OWASP Top 10 2025: 웹 애플리케이션 보안 위험 완벽 가이드

웹 애플리케이션 보안의 대표 기준인 OWASP Top 10 은 웹 애플리케이션 보안 위험을 다루는 가장 널리 알려진 표준입니다. 개발자, 보안 엔지니어, 비즈니스 책임자 모두를 위해 이 가이드에서 각 범주를 실제 사례, 탐지 기법, 개선 전략과 함께 설명합니다.

ℹ️ OWASP Top 10이란?

수백 개 조직의 데이터 분석, 커뮤니티 설문과 실제 침해 데이터를 토대로 웹 애플리케이션의 가장 중대한 보안 위험 순위를 정해 주기적으로 갱신하는 인식 제고 문서입니다. 다음 규정과 표준에서 참조합니다. PCI DSS, DORA, NIS2를 비롯한 여러 산업 표준입니다.


A01 취약한 접근 통제

가장 흔한 취약점 1위로, 테스트한 애플리케이션의 94%에서 발견되었습니다.

⚠️ 실제 사례

  • IDOR: 경로 /api/users/123/profile/api/users/124/profile
  • 로 바꾸는 경우 권한 상승: 일반 사용자가 /admin/dashboard에 접근하는 경우
  • 기능 수준 접근 통제 누락: API가 인증만 확인하고 권한 부여는 확인하지 않는 경우
  • CORS 설정 오류: 악성 사이트가 인증된 요청을 보내도록 허용하는 경우

✅ 개선 방법

  • 접근 통제는 서버에서 구현하고 클라이언트에 의존하지 마십시오.
  • 기본적으로 거부하고 명시적으로 허용된 경우에만 접근을 승인하십시오.
  • 적절한 RBAC 또는 ABAC를 구현하십시오.
  • 접근 통제 실패를 기록하고 경고를 생성하십시오.
  • API 접근에 속도 제한을 적용하십시오.

A02 암호화 실패

이전 명칭은 “민감한 데이터 노출”이었으며, 근본 원인에 초점을 맞추도록 이름이 바뀌었습니다.

⚠️ 흔한 실수

  • 로그인 페이지가 평문 HTTP로 인증 정보를 전송
  • TLS 1.0/1.1 또는 취약한 암호군 지원
  • 비밀번호를 bcrypt/Argon2 대신 MD5 또는 SHA-1로 저장
  • 소스 코드에 암호화 키를 하드코딩
  • 데이터베이스 백업을 암호화하지 않음

✅ 개선 방법

모든 구간에 HSTS와 HTTPS를 강제하십시오. AES-256, bcrypt/Argon2, SHA-256 이상을 사용하고 비밀값을 하드코딩하지 마십시오. Vault 또는 AWS Secrets Manager를 사용하고 저장 데이터를 암호화하며 TLS 1.0/1.1을 비활성화하십시오.

A03 인젝션

고전적인 웹 취약점이지만 20년이 지난 지금도 상위 3개 위험에 포함됩니다.

인젝션 유형

  • SQL 인젝션: ' OR 1=1 -- 및 이보다 훨씬 정교한 공격
  • NoSQL 인젝션: MongoDB/CouchDB JSON 조작
  • 명령어 인젝션: 애플리케이션 입력을 통한 운영체제 명령 실행
  • XSS: 반사형, 저장형, DOM 기반 JavaScript 삽입
  • 템플릿 인젝션(SSTI): 서버 측 템플릿 엔진에 코드 삽입
  • 헤더 인젝션: HTTP 헤더 조작

✅ 예방

매개변수화 쿼리 를 모든 데이터베이스 작업에 사용하십시오. 허용 목록 기반 입력 검증, 문맥별 출력 인코딩, Content Security Policy 헤더, 최소 권한 데이터베이스 계정을 적용하고 ORM을 일관되게 사용하십시오.

A04 안전하지 않은 설계

구현 버그가 아니라 설계 단계의 결함을 다루는 새로운 범주입니다.

⚠️ 사례

  • 속도 제한 없이 무제한 시도를 허용하는 비밀번호 재설정 절차
  • 비즈니스 규칙을 클라이언트에서만 강제하는 방식(예: JavaScript 가격 검증)
  • 단일 API 키가 모든 리소스의 읽기와 쓰기 권한을 함께 부여

개선: 설계 단계에 위협 모델링(STRIDE, PASTA)을 통합하십시오. 안전한 설계 패턴을 사용하고 정상 사용 사례와 함께 악용 사례를 작성하십시오.

A05 보안 설정 오류

테스트한 애플리케이션의 90%에서 발견되었습니다.

⚠️ 흔한 설정 오류

  • 데이터베이스와 관리자 패널의 기본 관리자 비밀번호
  • 디렉터리 목록, 디버그 엔드포인트, 상세 오류 메시지 활성화
  • 보안 헤더(CSP, X-Frame-Options, X-Content-Type-Options) 누락
  • 공개 접근이 가능한 S3 버킷 또는 Azure Blob
  • 불필요한 HTTP 메서드(PUT, DELETE, TRACE) 활성화

✅ 예방

반복 가능한 강화 절차를 마련하십시오. 불필요한 기능을 모두 제거하고 모든 보안 헤더를 구현하십시오. IaC로 설정 관리를 자동화하고 정기적으로 설정을 감사하며 클라우드에는 CSPM을 사용하십시오.

A06 취약하고 오래된 구성요소

528
애플리케이션당 평균 구성요소
84%
알려진 취약점이 있는 코드베이스
48%
고위험 취약점
252일
평균 수정 기간

⚠️ 주요 사례

  • Log4Shell (CVE-2021-44228): 수백만 Java 애플리케이션에 영향을 준 치명적 RCE
  • Spring4Shell (CVE-2022-22965): Spring Framework의 RCE
  • jQuery XSS: 여전히 취약한 jQuery 버전을 사용하는 애플리케이션이 많음

개선: 구성요소 목록(SBOM)을 유지하고 CVE 데이터베이스를 지속적으로 모니터링하십시오. 사용하지 않는 의존성을 제거하고 Dependabot/Renovate로 업데이트를 자동화하십시오.

A07 식별 및 인증 실패

⚠️ 흔한 실패

  • 크리덴셜 스터핑: 유출된 비밀번호를 사용하는 자동화 공격
  • “password123” 등을 허용하는 취약한 비밀번호 정책
  • 세션 고정과 세션 무효화 누락
  • URL에 노출되는 세션 토큰
  • 중요 기능의 MFA 누락

✅ 예방

MFA를 구현하십시오. 침해 비밀번호 데이터베이스 확인과 함께 강력한 비밀번호 정책을 적용하고 인증 엔드포인트에 속도 제한을 두십시오. 무작위 ID와 HTTPOnly/Secure 플래그를 사용하는 안전한 세션 관리를 구현하고 로그아웃 또는 비밀번호 변경 시 세션을 무효화하십시오.

A08 소프트웨어 및 데이터 무결성 실패

⚠️ 실제 공격

  • SolarWinds (2020): 정상 소프트웨어 업데이트에 악성 코드가 포함되어 18,000개 조직에 영향
  • 안전하지 않은 역직렬화: 신뢰할 수 없는 데이터를 통한 임의 코드 실행
  • CI/CD 파이프라인 침해: Codecov, ua-parser-js 사고
  • SRI 누락: 무결성 해시 없이 CDN에서 JavaScript 로드

개선: 모든 소프트웨어와 데이터에 디지털 서명을 적용하고 외부 리소스에는 Subresource Integrity(SRI)를 사용하십시오. 접근 통제와 서명으로 CI/CD를 보호하십시오. 안전하지 않은 역직렬화를 피하고 JSON을 사용하십시오.

A09 보안 로깅 및 모니터링 실패

ℹ️ 가시성 부재의 비용

침해를 식별하는 데 걸리는 평균 시간: 204일 (IBM 2024). 충분한 로깅이 없으면 공격자는 경보를 전혀 울리지 않은 채 지속성을 확보하고 데이터를 유출하며 장악 범위를 넓힐 수 있습니다.

개선: 모든 인증 이벤트, 접근 통제 실패, 입력 검증 실패를 기록하십시오. 타임스탬프, 사용자, IP, 작업 등 문맥을 포함하고 변조 방지 SIEM에 로그를 중앙화하십시오. 자동 경고를 구현하고 탐지 역량을 정기적으로 시험하십시오.

A10 서버 측 요청 위조(SSRF)

클라우드 네이티브 아키텍처에서 발생 빈도가 늘어 추가된 새로운 범주입니다.

⚠️ SSRF가 위험한 이유

  • Capital One 침해(2019): SSRF → AWS 메타데이터 → 1억 건 이상의 고객 기록 노출
  • 클라우드 메타데이터 탈취: IAM 인증 정보를 얻기 위해 http://169.254.169.254/ 에 접근
  • 내부 서비스 접근: 방화벽 뒤의 API, 데이터베이스, 관리자 패널에 도달

✅ 예방

사용자가 제공한 모든 URL을 서버에서 검증하십시오. 허용 도메인은 허용 목록으로 관리하고 사설 IP 대역(10.x, 172.16.x, 169.254.x, 127.x)을 차단하십시오. 불필요한 URL 스킴(file://, gopher://)을 비활성화하고 AWS에서 IMDSv2를 사용하며 URL 가져오기 서비스를 분리하십시오.


KENSAI의 OWASP Top 10 스캔 방식

OWASP 범주KENSAI 탐지 범위
A01 취약한 접근 통제IDOR 테스트, 권한 우회, CORS 검사
A02 암호화 실패TLS 분석, 헤더 검사, 암호화 검증
A03 인젝션SQL, XSS, 명령어 인젝션, SSTI, 헤더 인젝션
A04 안전하지 않은 설계속도 제한, 예측 가능한 리소스, 로직 테스트
A05 보안 설정 오류헤더, 기본값, 정보 노출, HTTP 메서드
A06 취약한 구성요소기술 식별, 33만 2천 개 이상의 CVE 데이터베이스
A07 인증 실패기본 인증 정보, 세션 테스트, 쿠키 분석
A08 무결성 실패SRI 검사, 역직렬화 테스트
A09 로깅 실패보안 헤더 분석, 오류 처리 검토
A10 SSRF내부 엔드포인트 인젝션, 클라우드 메타데이터 테스트
33만 2천+
추적하는 CVE
10/10
OWASP 탐지 범위
AI
기반 정확도
€990
월 시작 요금

애플리케이션의 OWASP Top 10 위험 테스트

약정과 신용카드 없이 무료로 스캔하십시오. 규제 준수용 보고서를 제공하는 AI 기반 DAST입니다.

무료 스캔 시작 →

자주 묻는 질문

가장 흔한 OWASP 취약점은 무엇입니까?

취약한 접근 통제(A01) 입니다. 테스트한 애플리케이션의 94%에서 발견되었습니다. 특히 API와 SPA에서 권한 부여를 제대로 강제하지 못하는 사례가 널리 퍼지면서 5위에서 1위로 올라갔습니다.

OWASP Top 10 준수는 의무입니까?

OWASP Top 10 자체는 자율 표준입니다. 그러나 다음 규정에서 참조합니다. PCI DSS 는 OWASP Top 10 대응을 요구하고, NIS2 는 체계적인 취약점 관리를 요구하며, DORA 는 산업 표준 테스트를 참조합니다. 여러 공급업체 평가도 이를 요구하므로 실무에서는 사실상 필수입니다.

자동화 도구가 OWASP Top 10을 모두 탐지할 수 있습니까?

자동화된 DAST 도구는 대부분의 범주, 특히 인젝션(A03), 암호화 실패(A02), 설정 오류(A05), 취약한 구성요소(A06)를 효과적으로 탐지합니다. 안전하지 않은 설계(A04)와 로깅 실패(A09) 같은 범주는 수동 평가가 필요한 경우가 많습니다. 자동화 스캔으로 폭넓게 확인하고 수동 테스트로 깊이를 더하십시오.

OWASP Top 10은 얼마나 자주 갱신됩니까?

3~4년마다 갱신됩니다. 주요 발표 연도는 2013년, 2017년, 2021년입니다. 각 개정판은 위협 환경 변화를 반영합니다. 2021년판은 안전하지 않은 설계(A04)와 SSRF(A10)를 도입하고 다른 범주를 재구성했습니다.

보안은 선택이 아닙니다.

🗡️ KENSAI 팀