보안동향

최신 보안정보를 신속하게 전해드립니다.

[보안취약점] Django, 계정 탈취 취약점(CVE-2019-19844) 발견

2019-12-26

Django, 계정 탈취 취약점(CVE-2019-19844) 발견

 

[이미지 출처: www.sevenmentor.com]



어떤 취약점 인가?

 

이 취약점은 django의 특정 함수의 취약함에의해 사용자 계정의 비밀번호 재설정 메일이 사용자의 메일이 아닌 공격자의 메일로 발송되게 만들수 있는 취약점이다.



문제된 코드는 무엇인가?

[이미지 출처: https://ryu22e.org/posts/2019/12/25/django-cve-2019-19844/]

 

특별한 문제가 없는 코드처럼 보이지만 문제점은 iexact에서 대소문자를 구분하지 않는 점에서 발생한다. 본래 데이터베이스상에서는 Ci@cyberone.kr 과 CI@cyberone.kr은 다른 이메일 주소이다. 하지만 iexact에서는 ‘i’ 와 ‘I’를 동일한 문자로 판단하여 같은 메일주소로 인식되어진다. 



공격 시나리오

 

기존 사용자 

  • 사용자이름 : Ci
  • 이메일주소 : Ci@cyberone.kr

공격자

  • 서비스에 가입되지 않은 이메일주소 : CI@cyberone.kr

비밀번호 재설정 페이지에 접근하여 사용자:Ci, 이메일주소:CI@cyberone.kr를 입력 후 비밀번호 재설정을 진행한다. 본래대로면 CI@cyberone.kr가 데이터베이스에 존재하지 않으므로 비밀번호 재설정이 진행되지 않아야하지만 iexact는 Ci@cyberone.kr와 CI@cyberone.kr를 동일하게 판단하여 비밀번호 재설정 서비스를 공격자 이메일에 제공한다.



영향받는 버전

  • Django master branch
  • Django 3.0
  • Django 2.2
  • Django 1.11




참고사이트:

https://github.com/django/django/blob/3.0/django/contrib/auth/forms.py#L272-L275

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-19844

 

보안관제센터 MIR Team

목록