Files
llm-wiki/raw/official-docs/owasp-path-traversal.md
T

9.0 KiB
Raw Blame History

title, source_type, url, archive_url, status, confidence, related_branches, related_projects, tags, created, last_reviewed
title source_type url archive_url status confidence related_branches related_projects tags created last_reviewed
OWASP Path Traversal — dot-dot-slash attack and encoding bypasses official-doc https://owasp.org/www-community/attacks/Path_Traversal raw high
feature-file-resource-handling-contract
ca-skeleton-operational-contract
ca-security
path-traversal
owasp
directory-traversal
allowlist
encoding-bypass
official-doc
2026-05-27 2026-05-27

OWASP Path Traversal

Layer: raw/official-docs/ — OWASP community 발행 path traversal attack 분류 페이지. ca-tmpl file resource handling contract 의 path traversal 방어 결정 (filename allowlist + URL decode 후 검증 + canonicalization) 의 1차 근거.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-file-resource-handling-contract path traversal 방어 결정 — ../ sequence + URL encoded variant (%2e%2e%2f) + null byte (%00) + absolute path 모두 거부, "accept known good" allowlist 접근 (sanitize 금지) 근거

컨텍스트 / 왜 저장했는지

ca-tmpl 의 file download / static resource serving 결정에서 "왜 filename sanitize 가 아닌 allowlist 가 권고되는가", "왜 URL decode 후 검증해야 하는가 (%2e%2e%2f bypass)", "왜 null byte 종료 공격을 고려해야 하는가" 결정의 1차 근거. 본 페이지는 attack 분류 (definition) 페이지로 cheatsheet 와는 다름.

출처 / Source

핵심 인용 / Key quotes (verbatim, captured 2026-05-27)

[§Overview] "A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder."

[§Overview] "By manipulating variables that reference files with 'dot-dot-slash (../)'sequences and its variations or by using absolute file paths, it may be possible to access arbitrary files."

[§How to protect yourself] "Validate the user's input by only accepting known good do not sanitize the data."

[§Request variations] "%2e%2e%2f represents ../ [and] %2e%2e%5c represents ..\"

[§Description - OS specific] "In many operating systems, null bytes %00 can be injected to terminate the filename."

[§Example 4] "The repeated ../ characters after /home/users/phpguru/templates/ has caused include() to traverse to the root directory."

[§Absolute Path Traversal] "When the web server returns information about errors in a web application, it is much easier for the attacker to guess the correct locations."

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
OWASP-PT-C1 path traversal (= directory traversal) 은 web root 밖 의 파일/디렉토리에 접근하려는 공격 [§Overview] "A path traversal attack (also known as directory traversal) aims to access files and directories that are stored outside the web root folder." official-reference (OWASP community wiki — 표준 아님) path traversal 공격 분류 결정 web root 안의 unauthorized file 접근 (예: 다른 user 의 file) 도 별도 — IDOR/BOLA 영역
OWASP-PT-C2 공격 벡터: ../ (dot-dot-slash) sequence 와 그 variation, 또는 absolute file path 로 임의 파일 접근 가능 [§Overview] "By manipulating variables that reference files with 'dot-dot-slash (../)'sequences and its variations or by using absolute file paths, it may be possible to access arbitrary files." official-reference filename 입력 검증 시 ../ + absolute path 모두 차단 결정 .. 만 차단해도 안전하다는 뜻은 아님 — variation (%2e%2e%2f 등) 별도
OWASP-PT-C3 방어 원칙: 사용자 입력은 "known good only" allowlist 로 검증 — sanitize 하지 말 것 [§How to protect yourself] "Validate the user's input by only accepting known good do not sanitize the data." official-reference filename allowlist (예: `^[a-zA-Z0-9_-]+.(jpg png
OWASP-PT-C4 URL encoded variation: %2e%2e%2f = ../, %2e%2e%5c = ..\ — encoding 으로 bypass 가능 [§Request variations] "%2e%2e%2f represents ../ [and] %2e%2e%5c represents ..\" official-reference URL decode 후 검증 결정 (decode 전 검증은 bypass 가능) double encoding (%252e%252e%252f) 같은 nested encoding 은 본 인용 범위 밖 — 별도 고려 필요
OWASP-PT-C5 많은 OS 에서 null byte %00 을 inject 하여 filename 을 종료시켜 검증 우회 가능 [§Description - OS specific] "In many operating systems, null bytes %00 can be injected to terminate the filename." official-reference filename 검증 시 null byte 거부 결정 모든 modern runtime (Java NIO 등) 이 null byte 에 취약하다는 뜻은 아님 — legacy C-based file API 위주
OWASP-PT-C6 ../ 반복으로 root directory 까지 traverse 가능 (예: /home/users/phpguru/templates/../../../../etc/passwd) [§Example 4] "The repeated ../ characters after /home/users/phpguru/templates/ has caused include() to traverse to the root directory." official-reference path traversal 의 destructive 잠재력 인지 — /etc/passwd, application config 등 노출 application 이 file system root 권한을 갖지 않으면 영향 제한 — 본 인용은 권한 가정
OWASP-PT-C7 web server 가 error 정보에서 file path 를 노출하면 공격자가 정확한 location 을 추측하기 훨씬 쉬워짐 [§Absolute Path Traversal] "When the web server returns information about errors in a web application, it is much easier for the attacker to guess the correct locations." official-reference error response 에 file path 노출 금지 결정 (generic error message 정책) error path 노출이 단독 취약점이라는 뜻은 아님 — information disclosure 보조 요인

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것 (2026-05-27 WebFetch verbatim 확인):
    • OWASP-PT-C1: path traversal 정의 (web root 밖 접근)
    • OWASP-PT-C2: 공격 벡터 (../ + absolute path)
    • OWASP-PT-C3: 방어 원칙 (allowlist, not sanitize)
    • OWASP-PT-C4: URL encoded variation
    • OWASP-PT-C5: null byte injection
    • OWASP-PT-C6: root directory traversal 예시
    • OWASP-PT-C7: error response 의 path 노출 위험
  • 이 자료가 증명하지 않는 것:
    • 구체적 framework (Spring, Express, Django) 별 안전한 file API 권고 — 본 페이지는 attack 분류만
    • canonicalization 함수 (Java Path.normalize(), realpath() 등) 의 안전성 보장 — 별도 cheatsheet / 벤더 doc 위임
    • double encoding / Unicode normalization 같은 advanced bypass — 본 인용 범위 밖
    • WAF rule 로 path traversal 차단의 효과 — 본 페이지는 application layer 방어만
    • OWASP community wiki 는 공격 분류 + 권고 이며 강제 표준 아님.
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • ca-tmpl 의 file serving 경로에서 Spring Resource API (Resource.getFile(), Path.resolve()) 의 canonicalization 동작 확인
    • filename allowlist regex 의 구체적 정의 (확장자 + 문자 집합)
    • URL decode 처리 순서 — Spring @PathVariable 자동 decode 후 검증 vs raw path 검증
    • error response 에서 file path 가 노출되는 경로 (stack trace, 404 message 등) 점검

메모 / Notes

  • 다른 OWASP 자료와의 관계: 본 페이지는 공격 분류, raw/official-docs/owasp-file-upload-cheat-sheet 는 upload 방어, OWASP Input Validation Cheat Sheet 는 일반 input 검증. 세 자료가 path traversal 의 서로 다른 측면을 커버.
  • CWE 매핑: CWE-22 (Improper Limitation of a Pathname to a Restricted Directory). 본 페이지에는 CWE 번호 명시 없지만 일반적으로 매핑됨.
  • "allowlist not sanitize" 의 의미 (C3): sanitize 는 blacklist 기반 ("../" 제거) 이라 bypass variation 에 취약. allowlist 는 "known good 패턴" 만 허용 → 새로운 bypass 에도 안전. ca-tmpl 의 file resource 에서는 allowlist 우선 권고.