연구실세미나_20130417_cwe22_유창훈
Download
Report
Transcript 연구실세미나_20130417_cwe22_유창훈
CWE-22
Improper Limitation of a Pathname to
a Restricted Directory ('Path Traversal')
금지된 디렉토리에 접근을 제한하지 않는 것(‘경로추적’)
System & Network Security Lab
석사 25기 유창훈
2013.4.19
Table of Contents
1.
2.
3.
4.
5.
Description
Introduction
Examples
Secure Coding technique
Q&A
Description
10층갈께요
1005호 주민
OK
10층 아래층 갈께요
1005호 주민
OK
<그림출처:www.google.com>
Introduction
Path Traversal ?
• Relative Path Traversal
: 현재 위치 기준.
> cd unix
> cd ../home
> cd ../../export
• Absolute Path Traversal
:루트 위치 기준
> cd /export/home/user/unix
> cd /export/home
Introduction
<출처:소프트웨어보안취약점진단가이드>
User(경로조작 문자열 ) 문자필터링
내부시스템
User(경로조작 문자열 ) ---------- 내부시스템
Introduction
허점유행도
매우 높음
위협요소
코드 실행,
데이터 손실,
서비스거부
복구비용
하
탐지정도
쉬움
자주
공격자
지식베이스
상
공격빈도
Examples
Examples
Secure coding technique
• 아키텍처 및 설계적 측면 접근
- 샌드박스 환경에서의 수행( ‘OS’ - ’Process’ 엄격히 구분 )
- 해당 코드 실행시 요구되는 가장 낮은 수준의 권한을 사용.
- ID 같은 객체에 연결될 파일 이름을 맵으로 작성해 놓는다.
- 서버도 자체적인 인증(서버클라이언트모델)
Secure coding technique
• 구현 측면 접근(문자필터링) – 모든입력이 악성이라고 가정한다.
– White List vs Black List(좋다고알려진입력수락 vs 안좋다고알려진입력거부)
다.
: 기본적으로 White List 사용.
불완전한 블랙리스트의 가능성 : “/” , “\” , “…/…//”
블랙리스트는 입력즉시 거부해야할 정도의 기형인자를 판단하는 용도로 적합하
– 입력값 검증
• 입력값 검증시 고려사항
: 길이, 입력유형, 허용가능한 값의 전체 범위, 구문, 관련 필드간 일관성.
• 파일명 검증
: . 문자 하나만 사용, “/”같은 디렉토리 분리기호 제외, 허용가능한 확장자만 사용.
• 대체 함수 사용
: C의 realpath(), java의 getCanonicalPath(), ASP.NET의 GetFullPath(),
Perl의 realpath()또는 abs_path(), PHP의 realpath()
Q&A