경로 조작 (Path Traversal)
Path Traversal
설명
경로 조작(Path Traversal)은 사용자 입력을 통해 파일 시스템 경로를 조작하여, 원래 의도된 파일이나 디렉토리 외부의 파일에 접근할 수 있게 하는 공격입니다. 공격자는 상대 경로(../ 등)를 사용하여 시스템의 민감한 파일에 접근할 수 있습니다.
잠재적 영향
정보 유출: 공격자가 시스템의 민감한 파일을 읽어 중요한 정보를 획득할 수 있습니다.
데이터 손상: 공격자가 시스템 파일을 덮어쓰거나 삭제하여 데이터 손상을 일으킬 수 있습니다.
권한 상승: 공격자가 권한을 상승시키기 위해 중요한 파일을 수정할 수 있습니다.
해결 방법
입력값 검증: 파일 경로에 대해 상대 경로(
../)가 포함되지 않도록 검증합니다.화이트리스트: 허용된 디렉토리 내의 파일에만 접근할 수 있도록 제한합니다.
보안 라이브러리 사용: 경로 조작 공격을 방지하기 위한 보안 라이브러리를 사용합니다.
취약한 코드 및 안전한 코드 예시
Path Traversal via `open`
취약한 코드
안전한 코드
설명:
취약한 코드: 사용자 입력값을 검증하지 않고 파일 경로로 사용하여, 공격자가 상대 경로(
../)를 통해 민감한 파일에 접근할 수 있습니다.안전한 코드: os.path.normpath를 사용하여 파일 경로를
.와..과 같은 구분자를 제거하여 정규화한 후startswith을 사용하여 지정된 경로를 벗어나지 못하도록 합니다. 이를 통해 안전한 디렉토리 내의 파일만 접근할 수 있도록 합니다.
Path Traversal via flask `send_file`
취약한 코드
안전한 코드
설명:
취약한 코드: 사용자 입력값을 검증하지 않고 파일 경로로 사용하여, 공격자가 상대 경로(
../)를 통해 민감한 파일에 접근할 수 있습니다.안전한 코드:
send_from_directory를 사용하여 지정된 경로를 벗어나지 못하도록 합니다. 이를 통해 안전한 디렉토리 내의 파일만 접근할 수 있도록 합니다.
참조
OWASP: Path Traversal
Flask: flask send_from_directory
Last updated