Les correctifs php2shell (CVE-2026-109618 et CVE-2026-109619) pour les versions de PHP en fin de vie sont désormais disponibles. Les réponses du service commercial étant plus lentes que d'habitude en raison d'une forte demande, le moyen le plus rapide d'obtenir les paquets corrigés est d'acheter ELS for Runtimes en ligne (s'ouvre dans un nouvel onglet). Consulter la FAQ sur les correctifs

Accédez directement au résumé généré par l'IA de cet article de blog

  • Résumez cet article avec Perplexity
  • Résume cet article avec Gemini

Principaux enseignements

  • La fin de vie de Django vous expose à des vulnérabilités non corrigées (CVE), non seulement dans Django, mais aussi dans des dépendances telles que sqlparse, ce qui peut compromettre la conformité aux normes PCI DSS, HIPAA et SOC 2.
  • Passer de Django 3.2 ou 4.2 à la version 5.2 implique une mise à niveau de l'environnement d'exécution Python et entraîne des changements incompatibles avec les versions antérieures ; cela nécessite donc une planification minutieuse plutôt qu'une mise en œuvre précipitée pour respecter une échéance.
  • TuxCare ELS pour Django assure la mise à jour et la conformité de votre version en fin de vie tout en vous permettant de migrer selon votre propre calendrier.

Si votre pile d'applications Python inclut Django pour le développement web – et il y a de fortes chances que ce soit le cas –, il est utile de se renseigner sur la fin de vie (EOL) de Django avant qu'un scanner de sécurité ou un audit de conformité ne vous y oblige.

Depuis près de deux décennies, Django est l’un des frameworks de référence pour le développement d’applications web en Python. Son modèle « tout compris » rassemble l’ORM, l’authentification, l’interface d’administration, la gestion des formulaires, les middlewares de sécurité et d’autres fonctionnalités essentielles des applications web au sein d’un seul framework, ce qui explique précisément pourquoi tant d’équipes en entreprise continuent de s’y fier en production. Mais cette stabilité à long terme engendre également des risques liés au cycle de vie. Django 3.2 LTS a atteint sa fin de vie en avril 2024, Django 4.2 LTS en avril 2026, et les versions non LTS telles que 4.0, 4.1, 5.0 et 5.1 ne sont déjà plus prises en charge. Pour toutes ces versions, les correctifs de sécurité en amont ont cessé.

Cet article explique ce que signifie concrètement la fin de vie (EOL) de Django, pourquoi les rapports sur les vulnérabilités rendent ce risque bien réel, et comment la solution TuxCare ELS pour Django aide les entreprises à rester à jour et conformes sans les contraindre à une migration précipitée avant que leurs équipes ne soient prêtes.

Qu'est-ce que Django, et pourquoi est-il encore si largement utilisé ?

Django est un framework web Python de haut niveau géré par la Django Software Foundation. Son architecture MVT (modèle-vue-modèle) sépare la logique métier, l'accès aux données et la présentation, permettant ainsi aux équipes de développer des applications web faciles à maintenir sans avoir à réimplémenter l'infrastructure dont toute application web a besoin. Le framework est livré avec un ORM intégré, un système de migration, un backend d'authentification, une interface d'administration, la validation des formulaires, une protection contre les requêtes intersites falsifiées et un middleware de sécurité : une pile complète qui a fait de Django le framework web Python de référence pour les organisations qui privilégient la fiabilité et l'exhaustivité.

L'adoption de Django est profondément ancrée dans les piles Python d'entreprise. Il est à la base de plateformes de gestion de contenu, de portails de services financiers, de systèmes gouvernementaux et de back-ends de commerce électronique dans tous les secteurs qui s'appuient sur Python depuis une décennie ou plus. La stabilité et l'exhaustivité qui ont fait l'attrait de Django contribuent également à sa persistance en production : les applications construites sur une version bien maîtrisée de Django sont rarement considérées comme candidates à une mise à niveau tant qu'un scanner CVE ou un audit de conformité n'exerce pas cette pression. C'est exactement là que réside le piège de la fin de vie (EOL) de Django.

En quoi consiste le cycle de vie des produits Django ?

Django suit un cycle de publication prévisible, basé sur des délais fixes. Les versions majeures sont publiées environ tous les huit mois. Chaque version bénéficie de correctifs de sécurité pendant seize mois au total : huit mois de support complet, suivis de huit mois de maintenance axée uniquement sur la sécurité. La désignation « Support à long terme » (LTS) constitue une exception : la version finale de chaque branche de version majeure bénéficie de trois années complètes de support de sécurité. Il est essentiel de savoir quelles versions bénéficient du statut LTS pour évaluer avec précision le risque de fin de vie (EOL) de Django dans l'ensemble de votre pile, car les versions non LTS arrivent en fin de vie beaucoup plus rapidement que ce à quoi les équipes s'attendent généralement.

Version Publié Date de fin de vie Statut
Django 3.2 LTS Avril 2021 Avril 2024 Fin de vie : aucun correctif en amont
Django 4.0 Décembre 2021 Avril 2023 Fin de vie : aucun correctif en amont
Django 4.1 Août 2022 Décembre 2023 Fin de vie : aucun correctif en amont
Django 4.2 LTS Avril 2023 Avril 2026 Fin de vie : aucun correctif en amont
Django 5.0 Décembre 2023 Avril 2025 Fin de vie : aucun correctif en amont
Django 5.1 Août 2024 Décembre 2025 Fin de vie : aucun correctif en amont
Django 5.2 LTS Avril 2025 Avril 2028 Version LTS actuelle : active
Django 6.0 Décembre 2025 Avril 2027 Version actuelle : Active

 

Django 4.2 LTS, la version précédente bénéficiant d'un support à long terme, a atteint sa fin de vie le 7 avril 2026. Django 3.2 LTS a atteint sa fin de vie en avril 2024. Les versions non LTS situées entre ces deux dates (4.0, 4.1, 5.0, 5.1) ont toutes atteint leur fin de vie plus tôt, et plusieurs d'entre elles ne bénéficient plus de correctifs en amont depuis des années. Toute organisation utilisant encore l'une de ces versions exploite un logiciel pour lequel la Django Software Foundation ne publiera aucun correctif, quels que soient les problèmes découverts.

La fin de vie (EOL) de Django est définitive. Le projet Django ne propose pas de support commercial étendu, de modes de maintenance dédiés à la sécurité, ni de rétroportage de correctifs pour les versions antérieures. Lorsqu'une version de Django arrive en fin de vie, le support en amont prend fin, ce qui correspond exactement au vide que TuxCare ELS pour Django est conçu pour combler. Cela signifie que chaque vulnérabilité CVE divulguée après la date de fin de vie constitue une exposition permanente non corrigée, à moins qu'un fournisseur tel que TuxCare ne procède au rétroportage des correctifs.

Historique des CVE : ce que révèle le registre des vulnérabilités

La fin de vie (EOL) de Django ne signifie pas que l'on cesse de découvrir des vulnérabilités dans les versions en fin de vie ; cela signifie simplement qu'elles ne sont plus corrigées. L'ORM de Django est expressif et puissant, ce qui implique également que des failles dans la manière dont il traite les données fournies par l'utilisateur peuvent se traduire directement par des injections SQL. Les deux CVE ci-dessous sont confirmées par le NVD et constituent la principale faille de sécurité directe que la fin de vie de Django engendre pour les organisations utilisant des versions non prises en charge en production. Vous pouvez suivre l'état des CVE affectant les versions de Django en fin de vie et les correctifs disponibles via le TuxCare CVE Tracker.

ID CVE NVD CVSS 3.1 Versions concernées Impact
28346 9.8 Critique Django 2.2 < 2.2.28, 3.2 < 3.2.13, 4.0 < 4.0.4 Injection SQL via les alias de colonnes dans QuerySet
42005 9.8 Critique (selon l'avis de sécurité de Django) Django 4.2 < 4.2.15, 5.0 < 5.0.8 Injection SQL via JSONField dans QuerySet.values()

CVE-2022-28346 : Injection SQL dans les alias de colonnes de QuerySet

CVE-2022-28346 (NVD CVSS 3.1 : 9,8 - Critique) est une vulnérabilité d'injection SQL dans l'ORM de Django affectant les méthodes QuerySet.annotate(), aggregate() et extra(). Lorsque des alias de colonnes sont définis à l'aide de l'expansion de dictionnaire, en passant un dictionnaire spécialement conçu en tant que **kwargs, Django ne valide pas correctement ni n'échappe les valeurs des alias de colonnes avant de les interpoler dans la requête SQL générée. Un attaquant capable de manipuler le contenu du dictionnaire peut injecter du code SQL arbitraire dans la partie de la requête relative aux alias de colonnes, contournant ainsi les protections habituelles de Django contre les requêtes paramétrées.

La vulnérabilité CVE-2022-28346 a été divulguée le 11 avril 2022, et des correctifs ont été publiés pour les versions 2.2.28, 3.2.13 et 4.0.4 de Django. Les organisations utilisant des versions dont la fin de vie était déjà dépassée au moment de la divulgation n'ont reçu aucun correctif en amont. Cette vulnérabilité fait l'objet d'une preuve de concept accessible au public et reste une faille concrète et exploitable sur toute installation de Django non corrigée.

CVE-2024-42005 : Injection SQL via JSONField dans QuerySet.values()

CVE-2024-42005 (CVSS 3.1 : 9,8 - Critique selon l'avis de sécurité de Django) est une vulnérabilité d'injection SQL dans l'ORM de Django affectant les méthodes QuerySet.values() et values_list() sur les modèles incluant un JSONField. En créant des clés d'objet JSON spécifiques et en les transmettant en tant que paramètres *arg à ces méthodes, un attaquant peut amener Django à utiliser la clé malveillante comme alias de colonne sans validation appropriée, injectant ainsi du code SQL arbitraire dans la requête générée. L'attaque est de type réseau, ne nécessite aucune authentification et présente une faible complexité.

La vulnérabilité CVE-2024-42005 a été divulguée le 6 août 2024, et des correctifs ont été publiés pour Django 4.2.15 et 5.0.8. Django 3.2 LTS avait déjà dépassé sa date de fin de vie (avril 2024) au moment de la divulgation, et Django 4.0 et 4.1 étaient en fin de vie depuis avril 2023 et décembre 2023, respectivement. Django n'a pas testé ni corrigé ces versions en fin de vie. Les organisations utilisant ces versions de Django en fin de vie sont exposées à cette vulnérabilité critique d'injection SQL (CVSS 9.8) sans qu'aucune solution officielle ne soit proposée par le projet Django.

Le risque lié aux dépendances : sqlparse

Django nécessite deux dépendances d'exécution directes : asgiref et sqlparse. sqlparse comporte CVE-2024-4340 (CVSS 7,5 – Risque élevé), une vulnérabilité de déni de service déclenchée lorsque sqlparse.parse() traite une liste profondément imbriquée, provoquant une erreur RecursionError qui plante l'analyseur. Le correctif a été publié dans la version 0.5.0 de sqlparse. Les organisations utilisant d'anciennes versions de Django en fin de vie (EOL) peuvent également être bloquées sur des versions de sqlparse antérieures à ce correctif, ce qui aggrave la surface d'exposition couverte par TuxCare ELS pour Django.

Conformité et exposition aux réglementations

L'exigence 6.3.3 de la norme PCI DSS impose que les vulnérabilités ayant un score CVSS de 7,0 ou plus soient corrigées dans un délai d'un mois à compter de leur divulgation publique. La vulnérabilité CVE-2022-28346, avec un score CVSS de 9,8, est publique depuis avril 2022, et la vulnérabilité CVE-2024-42005, avec un score CVSS de 9,8, est publique depuis août 2024. Les organisations utilisant des versions de Django en fin de vie (EOL) sans dispositif de correction sont, dans certains cas, en non-conformité avec ces délais de correction depuis des années. L'utilisation de composants de framework web connus pour être vulnérables et non corrigés dans des applications traitant des informations médicales protégées (PHI) ne satisfait pas aux exigences de la règle de sécurité HIPAA en matière de protection contre les menaces raisonnablement prévisibles. Les auditeurs SOC 2 Type II signalent les versions de bibliothèques non prises en charge comme des faiblesses de contrôle. ELS pour Django permet aux organisations de respecter ces obligations de conformité tout en planifiant et en exécutant la migration selon leur propre calendrier.

Les risques liés à une migration Django précipitée

La pression pour réagir aux résultats liés à la fin de vie de Django est bien réelle. Les outils d'analyse de la composition logicielle génèrent des résultats. Les auditeurs de sécurité posent des questions précises. Les délais de mise en conformité ne s'adaptent pas aux contraintes de capacité des équipes d'ingénierie. Les équipes qui gèrent efficacement la fin de vie de Django sont celles qui comprennent la différence entre réagir face au risque et créer un nouveau risque en agissant dans la précipitation.

 

Que se passe-t-il quand on se précipite ?

Lorsque les équipes condensent la migration Django dans un calendrier irréaliste parce qu'elles subissent la pression de problèmes de conformité ou de sécurité, les choses ont tendance à mal tourner de manière prévisible :

Augmentation de la charge de travail du support : Chaque version majeure de Django supprime des fonctionnalités obsolètes qui ont pu s'accumuler silencieusement dans les bases de code pendant des années. Lorsque les avertissements d'obsolescence ont été ignorés, ces suppressions se sont transformées en changements de compatibilité qui n'apparaissent qu'après le déploiement. Les équipes de support sont immédiatement submergées de tickets concernant des vues défectueuses, des soumissions de formulaires ayant échoué et des erreurs de requêtes ORM qui n'avaient pas été détectées lors des tests intensifs.

Instabilité du système : Le comportement de l'ORM de Django évolue de manière subtile d'une version majeure à l'autre, ce qui ne se manifeste pas toujours lors des tests unitaires. Les résultats de requêtes qui varient en raison de différences d'ordre, du comportement d'agrégation ou de la gestion des champs JSON peuvent introduire des bogues au niveau de la couche de données qui ne se manifestent qu'en conditions de production ou avec des modèles de données spécifiques, du type de ceux qui sont difficiles à reproduire et coûteux à diagnostiquer.

Accumulation de la dette technique : Dans leur empressement à se mettre en conformité, les équipes prennent des raccourcis. Des modèles obsolètes qui auraient dû être refactorisés sont corrigés à l'aide de correctifs de compatibilité. Les paramètres dont le comportement a changé d'une version à l'autre sont modifiés de manière non documentée. Le problème de fin de vie (EOL) de Django est simplement reporté par ces solutions de contournement, et non résolu, et la dette accumulée rendra la migration ultérieure plus coûteuse.

Coûts imprévus : les heures d'intervention d'urgence des ingénieurs, les retards dans la mise en place de nouvelles fonctionnalités et le coût d'opportunité lié au fait que vos meilleurs ingénieurs passent leur temps à résoudre des problèmes de compatibilité liés à la migration au lieu de développer de nouvelles fonctionnalités s'accumulent rapidement, pour atteindre généralement un montant supérieur à ce qu'auraient coûté les services d'assistance étendue pour l'ensemble de la période de planification de la migration.

Condition préalable concernant la version de Python

La migration vers Django 5.2 LTS nécessite Python 3.10 ou une version ultérieure. Les organisations utilisant Django 3.2 peuvent être sur Python 3.6, 3.7 ou 3.8, versions qui ont toutes dépassé leur date de fin de vie (EOL) en amont. Les organisations utilisant Django 4.2 peuvent être sur Python 3.8 ou 3.9. Cela signifie que, pour de nombreuses organisations, la mise en conformité totale avec la fin de vie de Django implique une migration séquentielle à la fois du runtime Python et du framework Django, avec toutes les vérifications de compatibilité des dépendances que cela implique. Les équipes qui définissent la migration comme une simple « mise à niveau de Django » et découvrent ensuite les prérequis Python en cours de projet sont celles qui sont confrontées aux plus importants dépassements de délais imprévus.

Solutions pour garantir la sécurité et la conformité

Les organisations qui utilisent des versions de Django arrivées en fin de vie ont trois options. Deux d'entre elles impliquent un effort technique important, des risques opérationnels et des délais prolongés. La troisième permet de résoudre le problème immédiatement, tout en laissant à vos équipes le temps de planifier correctement la migration.

Option 1 : Migrer vers Django 5.2 LTS

La solution à long terme consiste à migrer vers Django 5.2 LTS, la version actuelle bénéficiant d'un support à long terme et d'une couverture de sécurité active en amont jusqu'en avril 2028. Cela permet d'éliminer le risque lié à la fin de vie (EOL) de Django en adoptant un logiciel en amont activement maintenu. La migration représente un véritable défi technique. Django 5.2 nécessite Python 3.10 ou une version supérieure ; les organisations utilisant des versions plus anciennes de Python doivent donc mettre à niveau leur environnement d'exécution avant de commencer la migration vers Django. Au-delà de cette condition préalable, chaque version majeure entre votre version actuelle et la 5.2 supprime des fonctionnalités qui avaient été dépréciées dans les versions précédentes. Pour une équipe passant de la version 3.2 à la 5.2, cela signifie qu'il faut tenir compte de trois générations de suppressions. Les applications utilisant des middlewares personnalisés, des backends de modèles personnalisés ou un usage non trivial de l'ORM devraient planifier cette migration sur plusieurs trimestres, et non sur quelques semaines.

Option 2 : Remplacer Django par un autre framework

Certaines organisations considèrent la fin de vie (EOL) de Django comme l'occasion d'évaluer des alternatives. FastAPI, Flask et Starlette sont des frameworks web Python activement maintenus, proposant des modèles architecturaux différents. Si les exigences d'une application ont évolué vers une architecture en microservices ou une conception « API-first », un changement de framework peut s'aligner sur les objectifs architecturaux. Une migration complète de framework est plus perturbante qu'une mise à niveau au sein du même framework ; chaque vue, formulaire, appel ORM et middleware doit être réimplémenté dans le modèle du nouveau framework. Ni le remplacement du framework ni une mise à niveau standard ne constituent une solution rapide pour se conformer immédiatement à la fin de vie de Django. Les deux sont des voies viables à long terme pour les équipes ayant la capacité de les mettre en œuvre avec soin.

Option 3 : Assistance technique illimitée de TuxCare (la solution recommandée)

Le support à cycle de vie illimité de TuxCare pour Django est la solution qui vous permet de rester en sécurité sans avoir à effectuer une migration pour laquelle votre équipe n'est pas encore prête. Au lieu d’imposer une mise à niveau perturbatrice à l’ensemble de votre application Django et de ses dépendances, vous continuez à utiliser votre version actuelle de Django tout en bénéficiant d’une couverture continue des correctifs de sécurité, fournis sous forme de mises à jour de paquets prêtes à l’emploi via votre workflow pip existant. C’est précisément pour cela que l’ELS pour Django a été conçu : pour combler le fossé entre la fin du support officiel et le moment où votre organisation aura véritablement achevé une migration planifiée et contrôlée selon son propre calendrier.

La solution simple : TuxCare ELS pour Django EOL

TuxCare propose une assistance tout au long du cycle de vie pour les versions de Django en fin de vie, garantissant ainsi la protection de votre déploiement Django actuel grâce à des correctifs de sécurité fournis via votre flux pip existant. TuxCare a distribué plus de 220 000 correctifs de sécurité à travers l'écosystème open source.

Couverture complète de l'arborescence des dépendances : TuxCare ELS pour Django couvre non seulement le paquet Django lui-même, mais aussi l'ensemble de ses dépendances d'exécution, y compris sqlparse et sa vulnérabilité CVE connue (CVE-2024-4340, CVSS 7,5 - Risque élevé). Les scanners de vulnérabilité ne s'arrêtent pas aux limites des paquets, et la couverture de TuxCare non plus. L'ensemble des correctifs nécessaires est pris en charge sans frais supplémentaires.

Processus de correction optimisé et automatisé : TuxCare surveille le NVD, les avis de sécurité Django, les flux de sécurité GitHub et les canaux de divulgation des fournisseurs, soit toutes les sources où les vulnérabilités de Django et de ses dépendances sont divulguées. Lorsqu’un CVE est identifié, des outils algorithmiques et une automatisation assistée par l’IA se chargent de rétroporter les correctifs de sécurité vers la version prise en charge, et des experts en sécurité valident chaque correctif avant sa publication. Chaque mise à jour est soumise à des tests d’intégrité, de fonctionnalité et de régression avant d’atteindre vos dépôts. Pour plus de détails techniques, consultez le livre blanc de TuxCare sur le processus de correction open source .

Intégration transparente : Que vous installiez actuellement Django via pip directement ou via un miroir de paquets privé, vous pouvez basculer votre source de mise à jour vers le référentiel sécurisé de TuxCare avec un minimum de modifications de votre flux de travail existant. Aucun changement n'est nécessaire au niveau de votre pipeline CI/CD, de votre processus de déploiement ni de la manière dont vos équipes travaillent. Les paquets Django corrigés sont des remplacements directs avec la même API, la même configuration et le même comportement d'exécution, avec des correctifs de sécurité rétroportés.

Réponse rapide garantie par un accord de niveau de service (SLA) : Lorsque de nouvelles vulnérabilités affectant les versions de fin de vie (EOL) de Django sont divulguées, que ce soit dans Django lui-même, dans sqlparse ou dans asgiref, TuxCare fournit des correctifs couverts par des accords de niveau de service. Les vulnérabilités de gravité élevée et critique (CVSS 7.0 et plus) sont traitées dans les 14 jours suivant leur divulgation publique.

Une continuité de la sécurité à moindre coût : Le coût de TuxCare ELS ne représente qu'une fraction de ce que coûte une migration d'urgence imposée par une échéance de conformité. Vous planifiez une migration réfléchie vers Django 5.2 LTS lorsque cela correspond aux capacités de votre équipe, en prévoyant le temps nécessaire pour résoudre les prérequis du runtime Python, vérifier la compatibilité des paquets tiers et valider le comportement sur tous les chemins d'application. Vous pouvez également utiliser ELS pour maintenir une sécurité et une conformité totales tout en prenant ces décisions selon votre propre calendrier, et non celui d'un auditeur de conformité.

Ne laissez pas la fin de vie de Django mettre vos applications en danger

La fin de vie (EOL) de Django ne signifie pas que votre application est automatiquement compromise. Cela signifie simplement que si une vulnérabilité critique affecte la version que vous utilisez, l'équipe Django ne vous fournira pas de correctif. Chaque nouveau CVE divulgué après la fin de vie prolonge la période d'exposition – et sans correctif rétroporté, cette période reste ouverte.

 

La solution la plus appropriée dépend du calendrier de votre organisation, de sa tolérance au risque et de ses capacités techniques. Si vous pouvez passer dès maintenant à Django 5.2 LTS – y compris toute mise à niveau requise du runtime Python –, c'est la meilleure option à long terme. Mais si votre application Django est trop complexe pour être migrée en toute sécurité dans l'urgence, TuxCare ELS for Django vous assure une couverture de sécurité continue pendant que votre équipe planifie et met en œuvre la mise à niveau de manière appropriée.

Si la fin de vie de Django figure actuellement parmi vos priorités en matière de sécurité, rendez-vous sur Assistance à vie pour Django pour découvrir comment une assistance prolongée peut protéger vos applications Python, ou explorez l'offre complète de TuxCare « Assistance à vie pour les logiciels open source » de TuxCare pour couvrir l'ensemble de votre pile open source.

 

Résumé
ELS pour Django : assurez votre sécurité après la fin de vie (EOL) avec TuxCare
Nom de l'article
ELS pour Django : assurez votre sécurité après la fin de vie (EOL) avec TuxCare
Description
Vous utilisez une version de Django en fin de vie ? TuxCare ELS for Django assure la mise à jour et la conformité de vos applications Python sans vous obliger à effectuer une migration précipitée.
Auteur
Nom de l'éditeur
de TuxCare
Logo de l'éditeur

Rejoignez plus de 4 500 professionnels de Linux et de l'Open Source!

2 fois par mois. Pas de spam.

Table des matières
Obtenez les réponses à vos questions sur la sécurité des logiciels libres

Rejoignez plus de 4 500 professionnels de Linux et de l'Open Source!

2 fois par mois. Pas de spam.