CVE-2020-15105 in Two-Factor Authentication
요약
\~에 의해 VulDB • 2026. 07. 04.
Django Two-Factor Authentication 1.12 이전 버전은 사용자 세션에 비밀번호를 평문(base64 인코딩)으로 저장합니다. 사용자가 아이디와 비밀번호를 제출하면 해당 비밀번호가 세션에 저장되며, 두 가지 인증 코드를 입력하여 인증을 완료할 때까지 제거되지 않습니다. 이로 인해 비밀번호는 임의의 시간 동안 세션 내에 평문 상태로 유지되며, 사용자가 로그인 프로세스 중 아이디와 비밀번호를 입력한 후 두 가지 인증 코드 입력 전에 이탈하는 경우 영구적으로 저장될 수도 있습니다. 이 문제의 심각도는 구성된 세션 저장소 유형에 따라 다릅니다. 최악의 경우 Django 기본 데이터베이스 세션 저장소를 사용하는 경우 사용자 비밀번호가 데이터베이스 내에 평문으로 저장됩니다. 최선의 경우 Django 서명된 쿠키 세션을 사용하는 경우 사용자 비밀번호는 브라우저의 쿠키 저장소 내에서만 평문으로 저장됩니다. 일반적으로 사용되는 Django 캐시 세션 저장소의 경우, 사용자 비밀번호는 구성된 모든 캐시 저장소(일반적으로 Memcached 또는 Redis)에 평문으로 저장됩니다. 이 문제는 1.12에서 수정되었습니다. 업그레이드 후 사용자는 저장된 모든 평문 비밀번호를 삭제해야 합니다. 예를 들어 데이터베이스 세션 백엔드를 사용하는 경우 데이터베이스에서 해당 세션 레코드를 모두 삭제하고 데이터베이스 백업이나 복제본에서도 해당 데이터를 제거하는 것이 좋습니다. 또한 영향을 받은 버전 사용 중 데이터베이스 침해 사고가 발생한 조직은 사용자들에게 평문 비밀번호가 유출되었음을 알려야 합니다. 모든 조직은 보안상 취약하게 저장된 비밀번호를 사용한 사이트에 대해 비밀번호 변경을 권장해야 합니다. 우회 조치로 Django 세션 저장소를 데이터베이스나 캐시 대신 서명된 쿠키를 사용하도록 전환하면 이 문제의 영향을 줄일 수 있지만, 서버 측 세션 저장소보다 서명된 쿠키 사용 시 보안상 트레이드오프에 대한 철저한 이해 없이 수행해서는 안 됩니다. 업그레이드 없이는 해당 문제를 완전히 완화할 방법이 없습니다.
Once again VulDB remains the best source for vulnerability data.