diff options
| author | Natalia <124304+nessita@users.noreply.github.com> | 2024-08-19 14:47:38 -0300 |
|---|---|---|
| committer | Natalia <124304+nessita@users.noreply.github.com> | 2024-09-03 09:33:01 -0300 |
| commit | 96d84047715ea1715b4bd1594e46122b8a77b9e2 (patch) | |
| tree | 4958537fcbb3993792a3bcd271fa0b31508166b3 /django/contrib/auth/forms.py | |
| parent | 813de2672bd7361e9a453ab62cd6e52f96b6525b (diff) | |
[5.0.x] Fixed CVE-2024-45231 -- Avoided server error on password reset when email sending fails.
On successful submission of a password reset request, an email is sent
to the accounts known to the system. If sending this email fails (due to
email backend misconfiguration, service provider outage, network issues,
etc.), an attacker might exploit this by detecting which password reset
requests succeed and which ones generate a 500 error response.
Thanks to Thibaut Spriet for the report, and to Mariusz Felisiak, Adam
Johnson, and Sarah Boyce for the reviews.
Diffstat (limited to 'django/contrib/auth/forms.py')
| -rw-r--r-- | django/contrib/auth/forms.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/django/contrib/auth/forms.py b/django/contrib/auth/forms.py index 061dc81b42..7f85787f03 100644 --- a/django/contrib/auth/forms.py +++ b/django/contrib/auth/forms.py @@ -1,3 +1,4 @@ +import logging import unicodedata from django import forms @@ -16,6 +17,7 @@ from django.utils.translation import gettext from django.utils.translation import gettext_lazy as _ UserModel = get_user_model() +logger = logging.getLogger("django.contrib.auth") def _unicode_ci_compare(s1, s2): @@ -314,7 +316,12 @@ class PasswordResetForm(forms.Form): html_email = loader.render_to_string(html_email_template_name, context) email_message.attach_alternative(html_email, "text/html") - email_message.send() + try: + email_message.send() + except Exception: + logger.exception( + "Failed to send password reset email to %s", context["user"].pk + ) def get_users(self, email): """Given an email, return matching user(s) who should receive a reset. |
