경로 조작(Path Traversal)은 파일 이름·경로를 받는 입력에 ../ 같은 상위 디렉터리 이동 문자를 끼워 넣어, 공개되면 안 되는 서버 파일을 읽거나 실행시키는 공격이다.
파일 다운로드·이미지 표시·템플릿 로딩처럼 "경로를 입력받는 모든 기능"이 표적이 되며, 성공하면 설정 파일·비밀번호 파일·소스코드가 그대로 노출된다.
경로 조작은 어떻게 뚫리나
파일을 보여주는 기능이 /download?file=보고서.pdf처럼 파일명을 그대로 경로에 붙인다고 하자. 공격자가 file=../../../../etc/passwd를 넣으면, 서버는 상위 디렉터리로 거슬러 올라가 시스템 파일을 읽어 응답한다. 애플리케이션 설정 파일이나 .env 파일이 이런 식으로 새면 DB 접속 정보·API 키까지 한 번에 털린다.
왜 파일 기능이 특히 위험한가?
경로를 입력받는 기능은 겉보기엔 단순해서 검증이 자주 누락된다. 게다가 %2e%2e%2f 같은 URL 인코딩, 이중 인코딩, 절대 경로 주입 등 우회 기법이 많아, 단순히 ../ 문자열만 걸러내는 방식으로는 막기 어렵다. 최근 AI 도구·LLM 연동 서버에서도 파일 경로를 다루는 엔드포인트가 늘면서 다시 주목받는 취약점이다.
블랙리스트로 충분한가?
충분하지 않다. ../만 제거하는 블랙리스트는 인코딩 우회로 뚫린다. 근본 해법은 화이트리스트 방식이다. 사용자 입력을 파일 경로에 직접 쓰지 말고, 허용된 파일 목록이나 정해진 디렉터리 안에서만 접근하도록 강제한다. 입력을 실제 경로로 바꾼 뒤 정규화(canonicalize)해서, 그 결과가 허용된 기준 디렉터리 밖을 가리키면 거부한다.
내 서비스 자가 점검 3가지
- 사용자 입력이 파일 경로로 들어가나 — 다운로드·업로드·이미지·템플릿 로딩에서 입력값이 경로에 쓰이는 지점을 모두 찾는다.
- 화이트리스트로 제한했나 — 허용 파일 목록 또는 기준 디렉터리 밖 접근을 차단하고, 경로 정규화 후 재검증한다.
- 노출되면 치명적인 파일을 격리했나 — 설정·시크릿·백업 파일을 웹 루트 밖에 두고, 노출된 자산이 없는지 점검한다.
파일 다루는 곳부터 다시 보세요
경로 조작은 파일을 읽고 쓰는 기능에 몰려 있어, 그 목록부터 찾아 화이트리스트로 잠그는 게 먼저입니다. 밖으로 열린 디렉터리·백업·설정 파일은 CodeScan 무료 진단으로 URL 하나면 드러납니다. 입력을 통해 실제로 파일이 읽히는지는 공격 시나리오가 있어야 확인되니, 그 단계는 SENTRIX 진단으로 넘기세요.