[MUST KNOW] 경로 순회 취약점 분석, 2024년 최신 분석으로 이해하고 완벽히 대응하는 방법

웹 애플리케이션에 경로 순회 취약점이 의심될 경우, 이는 주로 OWASP Top 10의 A01: Broken Access Control(손상된 접근 제어)과 직접적으로 연관됩니다. 이 취약점은 공격자가 애플리케이션이 의도하지 않은 시스템 파일이나 민감한 리소스에 접근할 수 있게 만드는 핵심적인 보안 결함입니다.

1. 경로 탐색 취약점의 이해

경로 탐색 취약점(Path Traversal)은 공격자가 애플리케이션이 예상하지 못한 경로를 통해 시스템 파일이나 디렉토리에 접근할 수 있게 만드는 공격 기법입니다. 공격자는 ../와 같은 디렉토리 이동 문자를 악용하여 정상적인 파일 경로를 벗어나 시스템의 민감한 파일(예: /etc/passwd)을 읽어내려 시도합니다.

이러한 취약점은 파일 다운로드 기능, 로그 파일 처리, 또는 리소스 로딩 기능 등 파일 시스템 접근이 필요한 모든 곳에서 발생할 수 있습니다.

2. 방어 전략: 다층적 접근의 필요성

경로 탐색 공격을 막기 위해서는 단 하나의 방법만으로는 부족하며, 여러 방어 메커니즘을 결합하는 다층적 접근이 필수적입니다.

2.1. 입력값 검증 (Input Validation)

가장 기본적인 방어책은 사용자로부터 받은 모든 입력값(파라미터, 파일명 등)을 철저히 검증하는 것입니다.

  • 화이트리스트 방식 사용: 허용되는 문자나 패턴(예: 알파벳과 숫자로만 구성)을 정의하고, 이 목록에 포함되지 않은 모든 입력은 거부하는 것이 가장 안전합니다.
  • 특수 문자 필터링: ../, \, : 등 경로 이동에 사용될 수 있는 특수 문자를 입력값에서 제거하거나 이스케이프 처리해야 합니다.

2.2. 경로 정규화 및 검증 (Path Normalization)

사용자가 입력한 경로를 시스템이 해석하는 표준 경로 형식으로 변환(정규화)한 후, 이 경로가 예상되는 기반 디렉토리(Base Directory)를 벗어나지 않는지 검사해야 합니다.

예를 들어, 웹 서버가 /var/www/uploads/ 디렉토리 내의 파일만 처리하도록 설계되었다면, 최종적으로 결정된 절대 경로가 항상 /var/www/uploads/ 아래에 위치하는지 확인해야 합니다.

3. 개발 단계별 보안 조치

개발 과정에서부터 보안을 내재화하는 것이 가장 중요합니다.

3.1. 코딩 레벨에서의 방어

사용하는 프로그래밍 언어 및 프레임워크가 제공하는 안전한 API를 사용해야 합니다. 예를 들어, 파일 경로를 다룰 때 문자열 연결 방식 대신, 경로를 안전하게 결합해주는 전용 라이브러리 함수를 사용해야 합니다.

3.2. 권한 최소화 원칙 (Principle of Least Privilege)

웹 애플리케이션이 실행되는 서버 프로세스는 해당 기능 수행에 필요한 최소한의 파일 시스템 접근 권한만 가져야 합니다. 만약 웹 서버가 운영체제 전체의 파일에 접근할 필요가 없다면, 그 권한을 부여해서는 안 됩니다.

4. 요약 및 체크리스트

| 보안 영역 | 취약점 유형 | 권장 조치 |
| :— | :— | :— |
| 입력 처리 | 경로 이동 문자열 악용 | 화이트리스트 기반 검증, 특수 문자 필터링 |
| 로직 처리 | 예상치 못한 경로 접근 | 경로 정규화 후, 기반 디렉토리 이탈 여부 검증 |
| 시스템 설정 | 과도한 권한 부여 | 최소 권한 원칙 적용 (Least Privilege) |
| 개발 습관 | 안전하지 않은 API 사용 | 언어/프레임워크가 제공하는 안전한 파일 처리 API 사용 |

댓글 남기기