경로 조작 (Path Traversal) - 잘못된 join

Path Traversal

설명

경로 조작 취약점은 부적절한 입력 검증으로 인해 어플리케이션이 제한 디렉토리 밖의 파일들을 접근하거나 수정할 수 있는 보안 취약점입니다. 이로 인해 민감정보의 노출 또는 파일 손상 등이 발생할 수 있습니다.

잠재적 영향

  • 민감 데이터 노출: 제한 디렉토리를 벗어나 임의의 파일로 접근 가능.

  • 악의적 파일 조작: 파일 쓰기 및 덮어쓰기 취약점.

해결 방법

  • 사용자 입력을 경로 결합 함수에 전달 전에 항상 정규화 및 검증합니다.

  • 특수 문자나 허용되지 않은 디렉토리 경로를 필터링합니다.

  • 사용 권한을 제한하여 네트워크 범위를 최소화합니다.

취약한 코드 및 안전한 코드 예시

취약한 코드

const path = require("path");
function unsafePathTraversal(user_input) {
  return path.join("/safeDir", user_input);
}

안전한 코드

설명:

  • 취약한 코드: 입력값을 검증하지 않고 경로 결합에 사용하여, 공격자가 조작된 값을 통해 제한 디렉토리 밖의 영역을 접근할 수 있음.

  • 안전한 코드: 사용자 입력 값을 검증 및 정규화하여 경로 결합 과정에서 안전성을 확보.

참조

Last updated