🇰🇷 한글 설명
Django의 django.core.urlresolvers.reverse 함수가 사용자 입력 기반의 dotted Python path를 충분히 검증하지 않아, 원격 공격자가 임의의 Python 모듈을 import하고 실행할 수 있는 원격 코드 실행 취약점입니다. 특히 사용자 입력으로 URL을 구성하는 view에서 취약점이 발생합니다.
💡 쉬운 설명
Django 웹 프레임워크의 주소 생성 기능이 사용자 입력을 제대로 검증하지 않아 해커가 악의적인 코드를 실행할 수 있습니다. 웹 주소에 특수한 경로를 삽입하여 서버의 숨겨진 프로그램을 몰래 실행하는 공격입니다.
🇺🇸 원문 (English)
The django.core.urlresolvers.reverse function in Django before 1.4.11, 1.5.x before 1.5.6, 1.6.x before 1.6.3, and 1.7.x before 1.7 beta 2 allows remote attackers to import and execute arbitrary Python modules by leveraging a view that constructs URLs using user input and a "dotted Python path."
📍 영향받는 시스템
Django 1.4.11 미만, 1.5.0~1.5.5, 1.6.0~1.6.2, 1.7 beta 2 미만
⚔️ 공격 벡터
사용자 입력을 사용하여 reverse() 함수로 URL을 구성할 때, dotted Python path 형식의 모듈명을 입력하여 임의 모듈 import 및 실행
🛡️ 대응 방법
Django를 1.4.11, 1.5.6, 1.6.3 또는 1.7 이상으로 즉시 업그레이드
🔧 검증 코드
'Vulnerable' 출력 시 패치 필요, 'Patched' 또는 최신 버전(1.4.11+, 1.5.6+, 1.6.3+) 표시 시 안전
python -c "import django; v=django.get_version(); print('Vulnerable' if tuple(map(int,v.split('.')[:3])) < (1,4,11) else 'Patched')" 2>/dev/null || pip show django | grep Version