정보 보안 기초

웹 애플리케이션이 URL 매개변수로 지정된 파일 이름을 공개용 폴더의 이름과 이어 붙여 읽어 들여 표시하고 있다. 파일 이름에 ../를 포함한 값을 지정하면 공개용 폴더 밖에 있는 설정 파일 등을 읽어 낼 수 있게 된다. 이 공격의 이름과 대책의 조합으로 올바른 것은?

  1. A크로스 사이트 스크립팅. 출력할 때 <나 >를 이스케이프한다
  2. B디렉터리 트래버설. 파일 이름을 길게 하여 추측하기 어렵게 한다
  3. C디렉터리 트래버설. 파일 이름을 외부에서 직접 지정하지 못하게 설계하거나, 경로를 정규화한 뒤 공개용 폴더 안에 있는지 확인한다
정답과 해설 보기

정답: C. 디렉터리 트래버설. 파일 이름을 외부에서 직접 지정하지 못하게 설계하거나, 경로를 정규화한 뒤 공개용 폴더 안에 있는지 확인한다

디렉터리 트래버설(경로 탐색, path traversal)은 ../ 같은 '한 단계 위의 디렉터리'를 나타내는 기호를 사용하여, 애플리케이션이 상정한 폴더 밖에 있는 파일을 읽어 내거나 변경하는 공격입니다. 외부에서 받은 값을 그대로 파일 경로에 사용하는 것이 원인입니다. 대책은 먼저 파일 이름을 외부에서 직접 지정하지 못하게 하고, 정해진 번호나 ID로 서버 쪽에서 파일을 고르도록 설계하는 것입니다. 외부의 값을 사용하는 경우에는 경로를 정규화하여(../ 등을 해석하여) 결과가 허용한 폴더 안에 있는지를 확인합니다. 나아가 애플리케이션을 실행하는 계정의 권한을 최소로 하여 읽을 수 있는 파일을 한정해 두면, 만일의 경우 피해를 줄일 수 있습니다. 파일 이름을 길게 해도 ../로 폴더 밖으로 나갈 수 있다는 점은 바뀌지 않습니다.

이 분야 연습하기 분야로 돌아가기

정보 보안 기초의 다른 문제

  1. 웹 애플리케이션에서 로그인 전과 후에 같은 세션 ID를 계속 사용하면, 공격자가 미리 준비한 세션 ID를 이용자가 사용하게 하고, 이용자가 로그인한 뒤 그 ID로 이용자를 사칭할 우려가 있다. 이 공격에 대한 대책으로 가장 적절한 것은?
  2. DDoS 공격에 대한 설명으로 올바른 것은?
  3. 제로데이 공격에 대한 설명으로 올바른 것은?
  4. 취약점 관리에 사용되는 CVE와 CVSS에 대한 설명의 조합으로 올바른 것은?
  5. 직원의 PC에서 파일 확장자가 차례로 바뀌고 몸값을 요구하는 화면이 표시되었다. 이 직원이 먼저 해야 할 대응으로 가장 적절한 것은?