정보 보안 기초
웹 애플리케이션이 URL 매개변수로 지정된 파일 이름을 공개용 폴더의 이름과 이어 붙여 읽어 들여 표시하고 있다. 파일 이름에 ../를 포함한 값을 지정하면 공개용 폴더 밖에 있는 설정 파일 등을 읽어 낼 수 있게 된다. 이 공격의 이름과 대책의 조합으로 올바른 것은?
- A크로스 사이트 스크립팅. 출력할 때 <나 >를 이스케이프한다
- B디렉터리 트래버설. 파일 이름을 길게 하여 추측하기 어렵게 한다
- C디렉터리 트래버설. 파일 이름을 외부에서 직접 지정하지 못하게 설계하거나, 경로를 정규화한 뒤 공개용 폴더 안에 있는지 확인한다
정답과 해설 보기
정답: C. 디렉터리 트래버설. 파일 이름을 외부에서 직접 지정하지 못하게 설계하거나, 경로를 정규화한 뒤 공개용 폴더 안에 있는지 확인한다
디렉터리 트래버설(경로 탐색, path traversal)은 ../ 같은 '한 단계 위의 디렉터리'를 나타내는 기호를 사용하여, 애플리케이션이 상정한 폴더 밖에 있는 파일을 읽어 내거나 변경하는 공격입니다. 외부에서 받은 값을 그대로 파일 경로에 사용하는 것이 원인입니다. 대책은 먼저 파일 이름을 외부에서 직접 지정하지 못하게 하고, 정해진 번호나 ID로 서버 쪽에서 파일을 고르도록 설계하는 것입니다. 외부의 값을 사용하는 경우에는 경로를 정규화하여(../ 등을 해석하여) 결과가 허용한 폴더 안에 있는지를 확인합니다. 나아가 애플리케이션을 실행하는 계정의 권한을 최소로 하여 읽을 수 있는 파일을 한정해 두면, 만일의 경우 피해를 줄일 수 있습니다. 파일 이름을 길게 해도 ../로 폴더 밖으로 나갈 수 있다는 점은 바뀌지 않습니다.