🇰🇷 한글 설명
Django 4.2, 5.1, 5.2 버전의 QuerySet 메서드(annotate, alias, aggregate, extra)에서 SQL 인젝션 취약점이 발견되었습니다. MySQL 및 MariaDB 환경에서 딕셔너리 확장을 사용하여 적절하게 조작된 인자를 전달할 경우 컬럼 별칭(column aliases)을 통해 SQL 인젝션 공격이 가능합니다.
💡 쉬운 설명
웹사이트의 데이터베이스를 다루는 Django 프로그램에서 데이터베이스 명령어를 몰래 끼워 넣을 수 있는 보안 구멍이 발견되었습니다. 공격자가 특수하게 만든 데이터를 보내면 데이터베이스의 정보를 훔치거나 조작할 수 있습니다.
🇺🇸 원문 (English)
An issue was discovered in Django 4.2 before 4.2.25, 5.1 before 5.1.13, and 5.2 before 5.2.7. QuerySet.annotate(), QuerySet.alias(), QuerySet.aggregate(), and QuerySet.extra() are subject to SQL injection in column aliases, when using a suitably crafted dictionary, with dictionary expansion, as the **kwargs passed to these methods (on MySQL and MariaDB).
📍 영향받는 시스템
Django 4.2 (< 4.2.25), 5.1 (< 5.1.13), 5.2 (< 5.2.7) (MySQL/MariaDB 사용 시)
⚔️ 공격 벡터
QuerySet 메서드에 딕셔너리 확장을 이용한 조작된 인자(kwargs)를 전달하여 SQL 명령어를 주입
🛡️ 대응 방법
Django를 최신 보안 패치 버전(4.2.25, 5.1.13, 5.2.7 이상)으로 즉시 업데이트하십시오.
🔧 검증 코드
출력된 Django 버전이 취약한 버전 범위(4.2.x, 5.1.x, 5.2.x의 패치 전 버전)에 해당하는지 확인합니다.
pip show django | grep Version