Guía sobre el fin de vida útil de Django: fechas, riesgos y soluciones en 2026

Ya están disponibles los parches de php2shell (CVE-2026-109618 y CVE-2026-109619) para PHP en fin de vida útil. Dado que las respuestas del departamento de ventas están tardando más de lo habitual debido a la elevada demanda, la forma más rápida de obtener los paquetes parcheados es comprar ELS para Runtimes en línea (se abre en una pestaña nueva). Lee las preguntas frecuentes sobre los parches

Ir directamente al resumen generado por IA de esta entrada del blog

  • Resume esta entrada con Perplexity
  • Resume esta publicación con Gemini

Principales conclusiones

  • Las versiones 3.2, 4.0, 4.1, 5.0 y 5.1 de Django ya han llegado al final de su ciclo de vida; Django 4.2 es la última en alcanzar ese estado.
  • El uso de una versión de Django que ha llegado al final de su ciclo de vida (EOL) no provoca fallos inmediatos, pero las vulnerabilidades CVE sin parchear y los incumplimientos de normas de cumplimiento se acumulan rápidamente.
  • Las organizaciones no tienen por qué elegir entre una migración apresurada y un riesgo para la seguridad; TuxCare ofrece la aplicación continua de parches de vulnerabilidad para estas versiones de Django fuera de soporte durante todo el tiempo que requiera su calendario de migración.

Cuando Django 4.2 llegó al final de su ciclo de vida el 7 de abril de 2026, muchas aplicaciones en producción siguieron funcionando sin ningún contratiempo, y ahí radica precisamente el problema. El final del ciclo de vida (EOL), o el fin del soporte técnico, no afecta al funcionamiento, pero sí significa que el proyecto Django ha dejado oficialmente de publicar parches de seguridad. Esto deja a la versión 4.2 en la misma categoría de vulnerabilidad que versiones como la 3.2 (fin de vida útil en abril de 2024), la 4.0 (fin de vida útil en abril de 2023), la 4.1 (fin de vida útil en diciembre de 2023), la 5.0 (fin de vida útil en abril de 2025) y la 5.1 (fin de vida útil en diciembre de 2025). Cualquier vulnerabilidad que se descubra en estas versiones a partir de ahora quedará sin parchear, a menos que tú mismo hagas algo al respecto.

Esta guía abarca todo lo que necesitas saber sobre el fin de la vida útil (EOL) de Django, lo que esto supone realmente en materia de seguridad y cumplimiento normativo, y las opciones viables para los equipos que no pueden dejarlo todo de lado para llevar a cabo una actualización a una versión superior.

¿Qué es el fin de vida útil (EOL) de Django?

Cada versión de Django tiene una fecha de caducidad; una vez pasada esa fecha, el equipo encargado del mantenimiento de Django deja de trabajar en ella: ni actualizaciones de seguridad, ni correcciones de errores, nada. Eso es el fin de su ciclo de vida.

Tu aplicación no dejará de funcionar de repente cuando una versión llegue al final de su ciclo de vida (EOL), pero sin parches del proveedor, los riesgos de seguridad se vuelven significativos y se acumulan con el tiempo. Por ejemplo, si mañana un investigador de seguridad descubre una vulnerabilidad de inyección SQL en Django 4.2, no habrá ningún parche disponible. La vulnerabilidad se documenta, se le asigna un CVE y su versión sigue expuesta. Para las organizaciones sujetas a obligaciones de cumplimiento normativo, esto genera un hallazgo de auditoría automático, ya que su entorno está ejecutando software con CVE conocidos y sin parchear.

Ciclo de lanzamiento de Django y calendario de fin de vida útil

Django sigue un ciclo de lanzamientos predecible: cada ocho meses aproximadamente se lanza una versión con nuevas funciones. Cada versión pasa por dos fases de soporte de seguridad antes de que se retire definitivamente.

Versiones estándar (no LTS) cuentan con ocho meses de soporte activo, seguidos de otros ocho meses de soporte dedicado exclusivamente a la seguridad. Dieciséis meses en total. Tras ese periodo, llegan al final de su vida útil (EOL).

Versiones LTS (soporte a largo plazo) funcionan de manera diferente: cuentan con los mismos ocho meses de soporte activo, pero la fase dedicada exclusivamente a la seguridad se prolonga hasta los veintiocho meses, lo que ofrece un periodo de soporte total de unos tres años.

Si utilizas una versión que no sea LTS, el plazo de actualización es más breve en comparación con las versiones LTS. Django 5.1, por ejemplo, se lanzó en agosto de 2024 y ya había llegado al final de su ciclo de vida (EOL) en diciembre de 2025, aproximadamente dieciséis meses después. Los equipos que no actualizaron durante ese plazo están utilizando ahora software sin soporte técnico.

Consejo profesional: La última versión con nuevas funciones de una versión principal será una versión LTS. Elige siempre una versión LTS de Django. El plazo de tres años te da un margen de maniobra real para las actualizaciones planificadas.

A continuación se muestra el estado actual de las últimas versiones del proyecto Django:

Django publica las fechas del ciclo de vida

Riesgos que supone el fin de la vida útil de Django para su organización

Utilizar una versión de Django que ha llegado al final de su ciclo de vida no supone una emergencia inmediata, como ocurre con una brecha de seguridad en un entorno de producción. Sin embargo, el perfil de riesgo cambia radicalmente en el momento en que finaliza el soporte técnico del desarrollador original, y sigue empeorando cuanto más tiempo se permanece en una versión obsoleta.

riesgos de utilizar versiones obsoletas de Django

Vulnerabilidades de seguridad sin parchear

Esto es algo obvio, pero vale la pena concretar cómo se traduce en la práctica.
Django tiene un historial de CVE bastante constante. Inyección SQL a través de métodos QuerySet, denegación de servicio mediante entradas XML manipuladas, recorrido de directorios en comandos de plantillas, inyección de registros a través de rutas de solicitud no sanitizadas: no se trata de tipos de ataques teóricos. Son patrones de vulnerabilidad que han aparecido en los propios avisos de seguridad de Django, algunos tan recientes como 2025. Por ejemplo, CVE-2025-57833, CVE-2025-64460, CVE-2025-59682 y CVE-2025-48432.

Cuando tu versión llega al final de su ciclo de vida, esos avisos de seguridad se siguen publicando. Se sigue asignando el CVE, pero las correcciones solo se publican para las versiones compatibles. Tu versión simplemente no las recibe.

Solo en 2024 y 2025, se corrigieron varios problemas de seguridad de alta gravedad en todas las versiones compatibles, mientras que en múltiples avisos recientes se señaló explícitamente que las ramas con fin de vida útil, como 3.2.x y 5.0.x, se veían afectadas, pero no se habían evaluado.

Cumplimiento y fallos de auditoría

El software al final de su ciclo de vida plantea un problema específico en materia de cumplimiento normativo: es difícil argumentar que los controles de seguridad son adecuados cuando el marco sobre el que se basa la aplicación ya no recibe actualizaciones de seguridad.

La norma PCI DSS 6.3.3 exige que todos los componentes del sistema estén protegidos frente a vulnerabilidades conocidas mediante la instalación de los parches de seguridad pertinentes. Los auditores de SOC 2 consideran cada vez más las dependencias de productos al final de su ciclo de vida (EOL) como una deficiencia en los controles. La norma ISO 27001 exige a las organizaciones que gestionen las vulnerabilidades técnicas; el uso de software sin soporte técnico constituye un claro incumplimiento de ese requisito.

La deriva de los ecosistemas y las brechas de compatibilidad

Las versiones de Django que han llegado al final de su ciclo de vida no existen de forma aislada, sino que forman parte de una pila tecnológica. Y esa pila está en constante evolución. El propio Python tiene un ciclo de lanzamientos. Python 3.8 y 3.9, sobre los que se basaron Django 3.2 y 4.0, ya han dejado de recibir soporte. El soporte para Python 3.10 finaliza en octubre de 2026. Los controladores de bases de datos, las bibliotecas de autenticación, los SDK en la nube... todos ellos dejan de dar soporte a las versiones antiguas de Python y Django con el tiempo. El resultado es una pila que se vuelve cada vez más difícil de mantener, no porque todo se rompa de golpe, sino porque la brecha entre dónde estás y hacia dónde se ha desplazado el ecosistema no deja de ampliarse.

Los conflictos de dependencias que hoy parecen insignificantes tienden a acumularse hasta convertir el sistema en una pesadilla de mantenimiento. Una biblioteca deja de ser compatible con Django 4.2 en su próxima versión principal. Una corrección de seguridad requiere una versión de Python que tu versión de Django, ya fuera de ciclo de vida, no admite. No se trata de casos aislados, sino de la trayectoria habitual de cualquier aplicación que no se mantenga al día con sus dependencias.

El creciente peso de los gastos de mantenimiento

Hay algo que no aparece en los modelos de amenazas, pero que se refleja muy claramente en las horas de ingeniería: cuanto más tiempo se permanece en una versión al final de su ciclo de vida, más caro resulta seguir utilizándola.

Sin parches de origen, tu equipo debe aceptar el riesgo o encargarse él mismo de aplicar los parches: supervisar los feeds de CVE, evaluar si cada vulnerabilidad afecta a tu configuración específica, adaptar las correcciones de las ramas compatibles, realizar pruebas e implementar los cambios. Se trata de una carga de trabajo considerable, que va en aumento con el tiempo a medida que se amplía la brecha entre tu versión y la versión actual. Los cambios que rompen la compatibilidad se acumulan de una versión a otra. Lo que podría haber sido una migración manejable se convierte en un proyecto de gran envergadura con riesgos reales.

¿Qué hacer si tu versión de Django ha llegado al final de su ciclo de vida?

El hecho de utilizar una versión de Django que ha llegado al final de su ciclo de vida no significa que no tengas opciones. Significa que debes elegir una de forma deliberada, ya que no hacer nada también es una opción, y es la que presenta un mayor riesgo.

Hay tres opciones viables. La más adecuada dependerá de tu código fuente, de la capacidad de tu equipo y del margen de tiempo del que dispongas antes de que las exigencias de cumplimiento normativo o de seguridad obliguen a tomar una decisión.

Actualizar a una versión compatible

La opción más limpia, y la solución adecuada a largo plazo para la mayoría de los equipos, es actualizar a una versión de Django con soporte técnico. En este momento, eso significa o bien Django 5.2 LTS —con soporte hasta abril de 2028— o bien la última versión, Django 6.0, cuyo soporte se extiende hasta abril de 2027.

Eso es fácil de decir. Lo difícil es que, para muchas aplicaciones de producción, sobre todo aquellas que llevan años funcionando con la versión 3.2 o 4.2, una actualización no es algo que se pueda hacer en un fin de semana.

Las API obsoletas se eliminan entre versiones principales. Es posible que los paquetes de terceros no hayan mantenido la compatibilidad. La cobertura de pruebas que parecía adecuada en la versión anterior a veces revela lagunas cuando se empieza a migrar. Y si se saltan varias versiones —por ejemplo, de la 3.2 directamente a la 5.2—, se atraviesan varios ciclos de obsolescencia a la vez.

Utilizar el soporte de seguridad ampliado

Para los equipos que no pueden actualizar sus sistemas en un plazo breve —y hay muchas razones de peso para ello—, el servicio Endless Lifecycle Support (ELS) de TuxCare para Django ofrece una solución de seguridad fundamental.

El equipo de TuxCare realiza un seguimiento de los CVE que afectan a las versiones de Django fuera de soporte, adapta las correcciones del código original, prueba y verifica los parches, y los distribuye a través de los repositorios de TuxCare. Sin cambios en el código, sin tareas de migración y sin necesidad de clasificar manualmente los CVE por tu parte.

Actualmente, TuxCare es compatible con una amplia lista de versiones de Django que han llegado al final de su ciclo de vida (entre ellas, 3.2.25, 4.0, 4.2.22, 5.0, 5.0.1, 5.0.2, 5.1, 5.1.4, 5.1.9 y 5.1.10), y el soporte continúa durante el tiempo que lo necesite tras la fecha oficial de fin de vida útil. ELS ofrece una forma práctica de mantener el sistema actualizado y cumplir con los requisitos mientras se realiza la actualización correctamente, en un plazo que se adapte a su equipo en lugar de uno impuesto por el vencimiento del periodo de soporte.

Puede visitar el CVE Tracker para ver qué vulnerabilidades se han identificado en todas las versiones fuera de soporte y comprobar que los parches ELS de TuxCare están disponibles y listos para su implementación.

Asistencia de seguridad ampliada de Tuxcare

Aplicar medidas temporales de mitigación de riesgos

Algunos equipos, que suelen enfrentarse a plazos muy ajustados, intentan gestionar la exposición a productos al final de su ciclo de vida mediante controles compensatorios, en lugar de aplicar parches para subsanar las vulnerabilidades. Por ejemplo:

  • Reglas del WAF para bloquear vectores de ataque conocidos
  • Segmentación de la red para limitar la exposición
  • Mejora de la supervisión y la detección de anomalías
  • Una validación más estricta de los datos introducidos en el nivel de la aplicación

Estas medidas pueden reducir la superficie de ataque. No la eliminan por completo, y por sí solas no cumplen la mayoría de los requisitos de cumplimiento normativo. Una regla de WAF diseñada para bloquear un patrón específico de explotación CVE solo funciona si el ataque sigue ese patrón, y los atacantes no siempre cooperan.

Consejo profesional: Considera esta opción como una solución provisional que dura semanas, no meses. Si estás utilizando medidas de mitigación para ganar tiempo hasta realizar una actualización adecuada o implementar ELS, se trata de una estrategia razonable a corto plazo. Si las utilizas para evitar por completo el debate, el riesgo simplemente seguirá acumulándose.

¿Qué pasa si no haces nada tras el fin de vida útil de Django?

En realidad, esto no es una opción, pero es lo que ocurre por defecto cuando los equipos no toman una decisión activa.

La aplicación sigue funcionando. Nadie programa la actualización. Las vulnerabilidades (CVE) se acumulan silenciosamente. Y como no se aprecia ningún fallo a simple vista, la urgencia nunca llega a materializarse del todo hasta que algo lo obliga: una auditoría fallida, un incidente de seguridad o un requisito de cumplimiento que de repente cobra importancia.

El riesgo aquí es que la exposición se agrava de forma silenciosa. Cada mes que pasa con una versión obsoleta sin parches supone un mes más de vulnerabilidades (CVE) a las que tu aplicación está expuesta, otro ciclo de auditoría en el que tu inventario de software se convierte en un lastre, y otro mes de cambios incompatibles que se acumulan entre tu versión actual y aquella a la que, tarde o temprano, tendrás que migrar. En esencia, no solo estás retrasando una actualización, sino que, sin darte cuenta, estás aumentando la dificultad y el coste de la inevitable migración a la que, tarde o temprano, te verás obligado a realizar.

Mantén la seguridad y el cumplimiento normativo tras el fin de vida útil de Django con TuxCare

Actualizar una aplicación de Django en producción lleva tiempo, a veces mucho. Mientras tanto, las vulnerabilidades de seguridad no esperan a que tu ciclo de desarrollo se ponga al día.

El servicio de soporte de ciclo de vida ilimitado de TuxCare para Django se basa en un problema concreto: las organizaciones que utilizan versiones de Django llegadas al final de su ciclo de vida (EOL) necesitan mantenerse al día con los parches y cumplir con los requisitos normativos mientras llevan a cabo un plan de migración, no porque así lo dicte el calendario, sino porque su código así lo exige.

Las versiones de Django compatibles actualmente con el servicio ELS de TuxCare son las siguientes: 3.2.25, 4.0, 4.2.22, 5.0, 5.0.1, 5.0.2, 5.1, 5.1.4, 5.1.9 y 5.1.10.

Además, Django rara vez es el único componente en fase de fin de vida útil (EOL) de una pila tecnológica. Es habitual que una aplicación Django en fase de fin de vida útil se desarrolle sobre un entorno de ejecución de Python en fase de fin de vida útil o se aloje en una distribución de Linux en fase de fin de vida útil. TuxCare también ofrece cobertura para entornos de ejecución de Python, bibliotecas de código abierto y distribuciones de Linux en fase de fin de vida útil a través de su servicio «Endless Lifecycle Support».

Preguntas frecuentes sobre el fin de vida útil de Django

¿Durante cuánto tiempo se ofrece soporte para una versión de Django?

Depende de la versión. Las versiones estándar (no LTS) cuentan con soporte técnico durante unos 16 meses. Las versiones LTS (soporte a largo plazo) cuentan con soporte técnico durante aproximadamente 3 años.

¿Cuál es la diferencia entre una versión LTS y una versión estándar?

La diferencia fundamental radica en la duración del periodo de soporte exclusivo de seguridad. Las versiones estándar alcanzan el fin de su vida útil (EOL) mucho más rápido, mientras que las versiones LTS cuentan con un periodo ampliado de soporte exclusivo de seguridad de 28 meses (lo que supone un ciclo de vida total de 3 años), lo que las convierte en el estándar del sector para entornos de producción.

¿Sigue recibiendo soporte Django 4.2?

No. Django 4.2 LTS llegó oficialmente al final de su ciclo de vida el 7 de abril de 2026. Si utilizas la versión 4.2, ya no recibirás parches de seguridad del desarrollador original.

¿Puedo obtener parches de seguridad para Django al final de su ciclo de vida sin actualizar?

Sí. El servicio Endless Lifecycle Support (ELS) de TuxCare proporciona parches de seguridad continuos y de nivel empresarial para las versiones de Django que han llegado al final de su ciclo de vida (incluidas las versiones 3.2.x, 4.0.x, 4.2.x, 5.0.x y 5.1.x). Esto te permite mantener un entorno seguro y conforme a la normativa mientras planificas la migración según tu propio calendario.

Resumen
Guía sobre el fin de vida útil de Django: fechas, riesgos y soluciones en 2026
Nombre del artículo
Guía sobre el fin de vida útil de Django: fechas, riesgos y soluciones en 2026
Descripción
Infórmate sobre las fechas de fin de vida útil de Django, las versiones compatibles, la política de ciclo de vida, los riesgos de seguridad y cómo actualizar de forma segura antes de que tu versión llegue al fin de su vida útil.
Autor
Nombre del editor
TuxCare
Logotipo de la editorial

Únase a más de 4.500 profesionales de Linux y el código abierto.

2 veces al mes. Sin spam.

Índice
Obtenga las respuestas de seguridad de código abierto que necesita

Únase a más de 4.500 profesionales de Linux y el código abierto.

2 veces al mes. Sin spam.