보안정보

[CVE-2021-33203] Django Directory Traversal

침해사고분석팀 2021.07.30

 

 

 

 

Django에 Directory Traversal 취약점이 존재합니다.

 

해당 취약점은 HTTP 요청에 대한 사용자 입력의 유효성 검사가 불충분하여 발생합니다. 원격의 공격자는 악의적으로 조작된 요청을 전송하여 공격할 수 있습니다.

 

공격 성공 시, 임의의 정보가 유출될 수 있습니다.

 

 

 

취약점 설명

 

NVD - CVE-2021-33203

CVSS v2.0 Severity and Metrics:

Base Score: 5.0 MEDIUM

 

 

[그림1. NVD 내역]

 

 

 

취약점 분석

 

 

해당 취약점은 Django에서 사용할 template을 선택할 때 해당 template의 경로를 입력하는 사용자 입력값에 대한 검사가 불충분해 발생합니다.

 

 

 

[그림2. view.py 코드 일부]

 

 

위 코드를 보면 template 파일을 가져올 때 해당 파일의 경로가 templates 디렉토리 안에 위치하는지 밖에 위치하는지 검증하지 않고 해당 경로에 파일이 존재하기만 한다면 해당 입력값을 사용하는 것을 확인할 수 있습니다.

 

이로 인해 임의의 공격자 또는 사용자는 임의의 파일 경로를 설정하여 template이 아닌 파일을 참조하거나 실행할 수 있게 됩니다. 해당 공격 패킷에서는 /etc/passwd/ 경로가 입력값으로 사용되었습니다.

 

 

취약한 버전은 2.2.24 미만 버전, 3.1.12 미만의 3.x 버전, 3.2.41.0.9 미만의 3.2.x 버전으로 3.2.4, 3.1.12, 2.2.24 버전에서 패치되었습니다.

 

 

 

공격 분석

 

 

CVE-2021-33203의 공격 패킷은 다음과 같습니다.

 

 

 

[그림 3. 공격 패킷]

 

 

공격 성공 시, 임의의 정보가 유출될 수 있습니다.

 

 

 

취약점 대응 방안

 

1. 최신 버전 사용

 

해당 벤더사에서 발표한 최신의 버전으로 업데이트한다.

https://www.djangoproject.com/download/

 

 

2. WINS Sniper 제품군 대응 방안

 

[5567] Django templates Directory Traversal