Django 5.2.9 notas de lanzamiento

2 de diciembre de 2025

Django 5.2.9 arregla un problema de seguridad con severidad «alta», un problema de seguridad con severidad «moderada» y varios errores en la versión 5.2.8.

CVE-2025-13372: Inyección SQL potencial en alias de columnas FilteredRelation en PostgreSQL

FilteredRelation estaba sujeto a inyección SQL en aliases de columnas, utilizando un diccionario adecuadamente elaborado, con expansión de diccionario, como los **kwargs pasados a QuerySet.annotate() o QuerySet.alias() en PostgreSQL.

CVE-2025-64460: Vulnerabilidad potencial de denegación de servicio en XML Deserializer

Serialización XML estaba sujeta a un ataque potencial de denegación de servicio debido a la complejidad cuadrática del tiempo al deserializar documentos elaborados conteniendo muchos elementos inválidos anidados. El asistente interno django.core.serializers.xml_serializer.getInnerText() acumulaba texto interior de manera ineficiente durante la recursividad. Ahora recopila texto por elemento, evitando un uso excesivo de recursos.

Bugfixes

  • Se corrigió un error en Django 5.2 donde django.utils.feedgenerator.Stylesheet.__str__() no escapaba las atributos url, mimetype y media, lo que podría provocar marcado XML inválido (#36733).

  • Se corrigió un error en Django 5.2 en PostgreSQL donde bulk_create() no aplicaba los lugares de consulta personalizados de un campo (#36748).

  • Se corrigió una regresión en Django 5.2.2 que causaba un crash cuando se utilizaban funciones de agregado con un filtro vacío Q sobre un conjunto de resultados con anotaciones (#36751).

  • Se corrigió una regresión en Django 5.2.8 donde se levantaba la excepción DisallowedRedirect por HttpResponseRedirect y HttpResponsePermanentRedirect para URLs más largas de 2048 caracteres. El límite ahora es de 16384 caracteres (#36743).

  • Se corrigió un crash en Python 3.14+ que impedía la inscripción de funciones de etiquetas de plantilla cuando sus anotaciones de tipo requerían evaluación diferida (#36712).