Notas de lanzamiento de Django 5.1.1

3 de septiembre de 2024

Django 5.1.1 resuelve un problema de seguridad con severidad «moderada», un problema de seguridad con severidad «baja» y varios errores en la versión 5.1.

CVE-2024-45230: Vulnerabilidad potencial de denegación de servicio en django.utils.html.urlize()

urlize y urlizetrunc estaban sujetos a un ataque potencial de denegación de servicio mediante entradas muy grandes con una secuencia específica de caracteres.

CVE-2024-45231: Enumeración potencial del correo electrónico del usuario a través del estado de respuesta en la restauración de contraseña

Debido a las fallas no gestionadas al enviar correos electrónicos, la clase PasswordResetForm permitía a los atacantes remotos enumerar correos electrónicos de usuarios enviando solicitudes de restablecimiento de contraseña y observando los resultados.

Para mitigar este riesgo, las excepciones que ocurren durante el envío del correo electrónico de restablecimiento de contraseña se gestionan ahora y se registran utilizando el logger django.contrib.auth.

Bugfixes

  • Se corrigió una regresión en Django 5.1 que causaba un crash de Window() cuando se pasaba una secuencia vacía al parámetro order_by, y un crash de Prefetch() para un queryset con ordenación sin recortar (#35665).

  • Se corrigió una regresión en Django 5.1 donde se incluía un nuevo campo usable_password en BaseUserCreationForm (y descendientes). Se agregó un nuevo AdminUserCreationForm que incluye este campo, aislando la característica en el administrador donde estaba destinada (#35678).

  • Se ajustó la advertencia de desuso stacklevel en Model.save() y Model.asave() para apuntar correctamente al sitio del llamado ofensivo (#35060).

  • Adjusted la advertencia de desuso stacklevel cuando se utiliza OS_OPEN_FLAGS en FileSystemStorage para apuntar correctamente al sitio de llamada ofensivo (#35326).

  • Ajustado la advertencia de desuso stacklevel en FieldCacheMixin.get_cache_name() para apuntar correctamente al sitio de llamada ofensivo (#35405).

  • Restauró, después de una regresión en Django 5.1, la capacidad de sobreescribir el comportamiento de configuración de zona horaria y rol utilizado dentro del método init_connection_state del backend PostgreSQL (#35688).

  • Se corrigió un bug en Django 5.1 donde se registraban errores de búsqueda de variables cuando se renderizaban los conjuntos de campos administrativos (#35716).