El equipo de desarrollo de Django está firmemente comprometido con la denuncia y divulgación responsable de problemas relacionados con la seguridad, tal como se describe en Políticas de seguridad de Django.
Como parte de ese compromiso, mantenemos la siguiente lista histórica de problemas que han sido resueltos y divulgados. Para cada problema, la lista a continuación incluye la fecha, una breve descripción, el identificador CVE si corresponde, una lista de versiones afectadas, un enlace al descubrimiento completo y enlaces a las correcciones adecuadas.
Algunas importantes advertencias se aplican a esta información:
Las listas de versiones afectadas incluyen solo aquellas versiones de Django que tenían lanzamientos estables, con soporte de seguridad, en el momento de la divulgación. Esto significa que las versiones más antiguas (cuyos soportes de seguridad habían expirado) y versiones que se encontraban en estados pre-lanzamiento (alpha/beta/RC) en el momento de la divulgación pueden haber sido afectadas, pero no están listadas.
El proyecto Django ha emitido ocasionalmente avisos de seguridad, señalando problemas potenciales de seguridad que pueden surgir debido a una configuración inadecuada o debido a otros problemas fuera de Django mismo. Algunos de estos avisos han recibido CVEs; cuando es el caso, se enumeran aquí, pero como no tienen correcciones ni lanzamientos acompañantes, solo se incluirán la descripción, la divulgación y el CVE.
Todos los problemas de seguridad han sido tratados bajo versiones del proceso de seguridad de Django. Estos se enumeran a continuación.
Vulnerabilidad potencial de denegación de servicio en solicitudes ASGI mediante el bypass del límite de subida de archivos. Descripción completa
Fijación de sesión a través de páginas de caché públicas y SESSION_SAVE_EVERY_REQUEST. Descripción completa
Exposición potencial de datos privados debido a un manejo incorrecto de Vary: * en UpdateCacheMiddleware. Descripción completa
Spoofeo de encabezados ASGI mediante confluencia de guión bajo/hífen. Descripción completa
Abuso de privilegios en GenericInlineModelAdmin. Descripción completa
Abuso de privilegios en ModelAdmin.list_editable. Descripción completa
Vulnerabilidad potencial de denegación de servicio en MultiPartParser a través de archivo de carga base64 codificado. Descripción completa
Vulnerabilidad potencial de denegación de servicio en solicitudes ASGI mediante el bypass del límite de carga de memoria. Descripción completa
Vulnerabilidad potencial de denegación de servicio en URLField mediante la normalización Unicode en Windows. Descripción completa
Posibles permisos incorrectos en objetos del sistema de archivos recién creados. Full description
Enumeración de usuario a través de la diferencia en tiempo en el manejo de autenticación del handler mod_wsgi. Full description
Vulnerabilidad potencial de denegación de servicio a través de encabezados repetidos cuando se utiliza ASGI. Descripción completa
Vulnerabilidad potencial de inyección SQL a través de consultas raster en PostGIS. Descripción completa
Vulnerabilidad potencial de denegación de servicio en los métodos HTML de django.utils.text.Truncator. Descripción completa
Inyección SQL potencial en alias de columnas mediante caracteres de control. Descripción completa
Inyección SQL potencial a través de QuerySet.order_by y FilteredRelation. Descripción completa
Inyección SQL potencial en alias de columnas de FilteredRelation en PostgreSQL. Descripción completa
Vulnerabilidad potencial de denegación de servicio en la extracción de texto del serializador XML. Descripción completa
Vulnerabilidad potencial de denegación de servicio en HttpResponseRedirect y HttpResponsePermanentRedirect en Windows. Descripción completa
Posible inyección SQL a través de la palabra clave _connector en objetos QuerySet y Q. Descripción completa
Potential inyección SQL en QuerySet.annotate(), alias(), aggregate(), y extra() en MySQL y MariaDB. Descripción completa
Inyección parcial de directorio a través de archive.extract(). Descripción completa
Inyección SQL potencial en alias de columnas de FilteredRelation. Descripción completa
Inyección potencial en el registro a través de la ruta de solicitud no escapada. Descripción completa
Había una hardening adicional con nuevas versiones de parches publicadas el 10 de junio de 2025. Descripción completa
Posibilidad de denegación de servicio en strip_tags(). Descripción completa
Vulnerabilidad potencial de denegación de servicio en LoginView, LogoutView y set_language() en Windows. Descripción completa
Vulnerabilidad potencial de denegación de servicio en django.utils.text.wrap(). Descripción completa
Potential vulnerabilidad de denegación de servicio en la validación de IPv6. Descripción completa
Vulnerabilidad potencial de denegación de servicio en django.utils.html.strip_tags(). Descripción completa
Potential inyección SQL en HasKey(lhs, rhs) en Oracle. Descripción completa
Inyección potencial de correo electrónico del usuario a través del estado de respuesta en la restauración de contraseña. Descripción completa
Potencial vulnerabilidad de denegación de servicio en django.utils.html.urlize(). Descripción completa
Potencial inyección SQL en QuerySet.values() y values_list(). Descripción completa
Potencial vulnerabilidad de denegación de servicio en django.utils.html.urlize() y AdminURLFieldWidget. Descripción completa
Vulnerabilidad potencial de denegación de servicio en django.utils.html.urlize(). Descripción completa
Exhaustión de memoria potencial en django.utils.numberformat.floatformat(). Descripción completa
Posible denegación de servicio en django.utils.translation.get_supported_language_variant(). Descripción completa
Posible travesía de directorios en django.core.files.storage.Storage.save(). Descripción completa
Enumeración de usuarios a través de la diferencia en el tiempo para los usuarios con contraseñas no utilizables. Descripción completa
Posible denegación de servicio en django.utils.html.urlize(). Descripción completa
Posible denegación de servicio por expresión regular en django.utils.text.Truncator.words(). Descripción completa
Posible denegación de servicio en el filtro de plantilla intcomma. Descripción completa
Posible vulnerabilidad a denegación de servicio en UsernameField en Windows. Descripción completa
Posibilidad de denegación de servicio en django.utils.text.Truncator. Descripción completa
Vulnerabilidad potencial de denegación de servicio en django.utils.encoding.uri_to_iri(). Descripción completa
Vulnerabilidad potencial de denegación de servicio mediante expresiones regulares en EmailValidator/URLValidator. Descripción completa
Bypass potencial de la validación al subir múltiples archivos utilizando un campo de formulario. Descripción completa
Vulnerabilidad potencial de denegación de servicio en subidas de archivos. Descripción completa
Denegación de servicio potencial a través de encabezados Accept-Language. Descripción completa
Vulnerabilidad potencial de denegación de servicio en URLs internacionalizadas. Descripción completa
Vulnerabilidad potencial de descarga reflejada de archivos en FileResponse. Descripción completa
Inyección SQL potencial a través de los argumentos Trunc(kind) y Extract(lookup_name). Descripción completa
Inyección SQL potencial en QuerySet.annotate(), aggregate() y extra(). Descripción completa
Potential SQL inyección a través de QuerySet.explain(**options) en PostgreSQL. Descripción completa
Posible XSS a través del template tag {% debug %}. Descripción completa
Posibilidad de denegación de servicio en subidas de archivos. Descripción completa
Posible travesía de directorios mediante Storage.save(). Descripción completa
Posible divulgación de información en el filtro de plantilla dictsort. Descripción completa
Posibilidad de denegación de servicio en UserAttributeSimilarityValidator. Descripción completa
Posible bypass de un control de acceso upstream basado en rutas URL. Descripción completa
Posible inyección SQL a través de entrada no sanitizada QuerySet.order_by(). Descripción completa
Potential directory traversal via admindocs. Descripción completa
Posibles ataques SSRF, RFI y LFI indeterminados desde que los validadores aceptaban ceros en IPv4. Descripción completa
Posibilidad de inyección de encabezados debido a que URLValidator aceptaba saltos de línea en la entrada en Python 3.9.5+. Descripción completa
Posible travesía de directorios mediante archivos subidos. Descripción completa
Potential directory-traversal via uploaded files. Descripción completa
Contaminación del caché web mediante django.utils.http.limited_parse_qsl(). Descripción completa
Posible travesía de directorios mediante archive.extract(). Descripción completa
Escalada de permisos en directorios intermedios del caché del sistema de archivos en Python 3.7+. Descripción completa
Permisos incorrectos en directorios de nivel intermedio en Python 3.7+. Descripción completa
Posible XSS a través del widget ForeignKeyRawIdWidget administrativo. Descripción completa
Posible fuga de datos a través de claves malformadas de memcached. Descripción completa
Posible inyección SQL a través del parámetro tolerance en funciones y agregados GIS de Oracle. Descripción completa
Potential inyección SQL a través de StringAgg(delimiter). Descripción completa
Inyección potencial de cuenta a través del formulario de restablecimiento de contraseña. Descripción completa
Privilegio de escalada en la administración de Django. Descripción completa
Posible agotamiento de memoria en django.utils.encoding.uri_to_iri(). Descripción completa
Posibilidad de inyección SQL en consultas de clave e índice para JSONField/HStoreField. Descripción completa
Posibilidad de denegación de servicio en strip_tags(). Descripción completa
Posibilidad de Denial-of-service en django.utils.text.Truncator. Descripción completa
Deteción HTTP incorrecta con proxy inverso conectado mediante HTTPS. Descripción completa
Los ataques XSS a través del enlace «URL actual» generado por AdminURLFieldWidget.
Contaminación de prototipos en jQuery incorporado. Full description
Agotamiento de memoria en django.utils.numberformat.format(). Full description
Django 2.1 (patch)
Django 2.0 (patch y corrección)
Django 1.11 (patch)
Posibilidad de falsificación de contenido en la página por defecto 404. Descripción completa
Divulgación del hash de contraseña a usuarios administrativos «solo de lectura». Descripción completa
Los textos traducidos son:
Posibilidad de redirección abierta en CommonMiddleware. Descripción completa
Posibilidad de denegación de servicio en los filtros de plantilla truncatechars_html y truncatewords_html. Descripción completa
Posibilidad de denegación de servicio en los filtros de plantilla urlize y urlizetrunc. Descripción completa
Fuga de información en AuthenticationForm. Descripción completa
Posible XSS en la sección de seguimiento de errores de la página de depuración técnica 500. Descripción completa
Vulnerabilidad de redirección abierta en django.views.static.serve(). Descripción completa
Open redirect y posible ataque XSS a través de URLs de redirección numéricas proporcionadas por el usuario. Descripción completa
Vulnerabilidad de reencaminamiento DNS cuando DEBUG=True. Descripción completa
El usuario con contraseña codificada se crea cuando se ejecutan las pruebas en Oracle. https://www.djangoproject.com/weblog/2016/nov/01/security-releases/
Protección contra CSRF en un sitio con Google Analytics. https://www.djangoproject.com/weblog/2016/sep/26/security-releases/
XSS en el popup de agregar/cambiar relacionado del administrador. https://www.djangoproject.com/weblog/2016/jul/18/security-releases/
Enumeración de usuarios a través de la diferencia en tiempo en el factor de trabajo del hasheador de contraseñas. Descripción completa
Redirección maliciosa y posible ataque XSS a través de URLs de redirección proporcionadas por el usuario que contienen autenticación básica. Descripción completa
El usuario con permiso «change» pero no «add» puede crear objetos para ModelAdmin’s con save_as=True. Descripción completa
Django 1.9 (patch)
Posibilidad de filtrado de configuración en el filtro de plantilla date. Descripción completa
Posibilidad de denegación de servicio en la vista logout() al llenar el almacenamiento de sesión. Descripción completa
Posibilidad de denegación de servicio en la validación de URLs. Descripción completa
Django 1.8 (patch)
Posibilidad de inyección de encabezados desde que los validadores aceptan saltos de línea en la entrada. Descripción completa
Posibilidad de denegación de servicio al llenar el almacenamiento de sesión. Descripción completa
Se ha corregido la descarga de sesión en el backend cached_db. Descripción completa
Django 1.8 (patch)
Se ha mitigado posible ataque XSS a través de URLs de redirección proporcionadas por el usuario. Descripción completa
Posibilidad de denegación de servicio con strip_tags(). Descripción completa
Los textos traducidos son:
Denegación de servicio a la base de datos con ModelMultipleChoiceField. Descripción completa
Ataque de denegación de servicio contra django.views.static.serve(). Descripción completa
Mitigado posible ataque XSS mediante URLs de redirección proporcionadas por el usuario. Descripción completa
Spoofing del encabezado WSGI mediante confluencia de guiones y guiones bajos. Descripción completa
Fuga de datos a través de manipulación de la cadena de consulta en el panel de administración. Descripción completa
Fuga de datos en la sesión mediante RemoteUserMiddleware. Descripción completa
Denegación de servicio por subida de archivos. Descripción completa
reverse() puede generar URLs que apunten a otros hosts. Descripción completa
URLs malformadas desde la entrada del usuario no validadas correctamente. Descripción completa
Los cachés pueden almacenar y servir datos privados. Descripción completa
El tipo casting de MySQL causa resultados de consulta inesperados. Descripción completa
La caché de páginas anónimas podría revelar el token CSRF. Descripción completa
Ejecución inesperada de código utilizando reverse(). Descripción completa
Denegación de servicio mediante contraseñas grandes. Descripción completa
Django 1.4 (patch y Compatibilidad con Python) <6903d1690a92aa040adfb0c8eb37cf62e4206714>`
Django 1.5 (patch)
Traversía de directorios mediante la etiqueta de plantilla ssi. Descripción completa
Posible XSS mediante esquemas de redirección de URL no validados. Descripción completa
XSS mediante la confianza del administrador en valores URLField. Descripción completa
Django 1.5 (patch)
Ataque de denegación de servicio a través del formset max_num. Descripción completa
Fuga de información a través del registro de historial administrativo. Descripción completa
Los textos traducidos son:
Hardenización adicional del manejo del encabezado Host. Descripción completa
Hardenización adicional de la validación de redirecciones. Descripción completa
Reforzamiento adicional del manejo de la cabecera Host. Descripción completa
Envenenamiento de la cabecera Host. Descripción completa
Los ataques de denegación de servicio mediante archivos de imagen grandes. Descripción completa
Ataques de denegación de servicio mediante archivos de imagen comprimidos. Descripción completa
XSS mediante la falta de validación del esquema de redirección. Descripción completa
Django 1.3: (patch)
Los textos traducidos son:
Ataque CSRF a través del encabezado Host. Descripción completa
Esta notificación fue solo un aviso, por lo que no se emitieron parches.
Django 1.2
Django 1.3
Intoxicación del caché del encabezado Host. Descripción completa
Fuga de información/arbitraria emisión de solicitudes a través de URLField.verify_exists. Descripción completa
Negación de servicio a través de URLField.verify_exists. Descripción completa
Manipulación de sesión cuando se utiliza una caché en memoria. Descripción completa
Traversía de directorios en Windows mediante manejo incorrecto del separador de ruta. Descripción completa
XSS mediante nombres no sanitizados de archivos subidos. Descripción completa
Ataque CSRF a través de encabezados HTTP falsificados. Descripción completa
Denegación de servicio en el mecanismo de restablecimiento de contraseña. Descripción completa
Fuga de información en la interfaz administrativa. Descripción completa
Ataque de inyección de código XSS mediante confianza en el valor de cookie no seguro. Descripción completa
Django 1.2 (patch)
Denegación de servicio mediante el rendimiento patológico de expresiones regulares. Descripción completa
Directory-traversal en el manejo de medios del servidor de desarrollo. https://www.djangoproject.com/weblog/2009/jul/28/security/
CSRF a través de la preservación de datos POST durante el inicio de sesión administrativo. https://www.djangoproject.com/weblog/2008/sep/02/security/
XSS a través del redireccionamiento de inicio de sesión administrativo. https://www.djangoproject.com/weblog/2008/may/14/security/
Denegación de servicio mediante encabezado Accept-Language arbitrariamente grande. Descripción completa
Algunos problemas de seguridad se manejaron antes de que Django tuviera un proceso formalizado de seguridad en uso. En estos casos, puede que no se hayan emitido nuevas versiones y los CVE pueden no haber sido asignados.
La aparente «caché» del usuario autenticado. Descripción completa
Django 0.95 (patch)
Problema de validación de nombres de archivo en el marco de traducción. Descripción completa
may 31, 2026