Une crise silencieuse se profile au sein des équipes de développement logiciel partout dans le monde, et la plupart d’entre elles ne s’en rendent compte que lorsqu’un audit de sécurité atterrit sur leur bureau. Une bibliothèque centrale sur laquelle elles s’appuient depuis des années a atteint sa fin de vie (EOL), ou fin de vie. Les responsables de la maintenance en amont sont passés à autre chose. Plus de correctifs. Plus de corrections. Mais la bibliothèque ? Elle est toujours en pleine production, étroitement intégrée à une application dont la refactorisation en toute sécurité prendrait des mois.
Passer à une version prise en charge n’est pas une tâche que l’on peut accomplir en un week-end. Cela implique des API obsolètes, des tests de régression et un investissement en temps de développement qui aurait dû être consacré à de nouvelles fonctionnalités. L’équipe fait donc ce que font souvent les équipes sous pression : elle reporte cette tâche. Et pendant ce temps, les vulnérabilités s’accumulent.
Crise liée à la fin de vie des produits
Si vous développez des applications web depuis un certain temps, vous connaissez sans doute le terme « EOL ». Il désigne le moment où un éditeur ou la communauté cesse de corriger les failles de sécurité. Qu'est-ce que cela signifie pour vous ? Cela signifie que le compte à rebours commence. L'EOL offre aux acteurs malveillants une cible facile : un logiciel qui fonctionne toujours en production mais qui ne bénéficie plus de correctifs. Ce n'est pas parce qu'un responsable de maintenance en amont abandonne le code que celui-ci disparaît des environnements de production. Il est toujours bien présent, et potentiellement grand ouvert.
Définition de « terminé »
Les équipes de développement logiciel se demandent sans cesse ce que signifie réellement la « définition du « terminé » » (DoD). Pour être honnête, cela dépend des cas, mais il s’agit avant tout d’un accord commun sur ce qui constitue un produit « prêt à être livré en toute sécurité ». La mise à jour d’une version, la publication sur GitHub et le déploiement ne suffisent pas à eux seuls à considérer qu’un produit est « terminé ».
Il y a tout un cycle de vérifications à effectuer avant de pouvoir considérer qu’une mise à jour de version est terminée. Imaginons, par exemple, qu’un projet utilise diverses API, mais qu’après le changement de version, celles-ci ne fonctionnent plus. Qu’est-ce que cela implique ? Cela signifie qu’il faut passer en revue et tester chaque fonctionnalité et chaque intégration pour s’assurer que tout fonctionne toujours correctement.
Toutes les compilations doivent réussir. Vous avez bien entendu : TOUTES les compilations doivent réussir dans chaque environnement. Si une compilation échoue parce que la mise à jour se comporte différemment de la version qu’elle remplace, le processus doit être interrompu, car aucun autre test ne peut avoir lieu tant que le statut n’est pas à nouveau « vert ».
Les modifications apportées aux fonctionnalités nécessitent un travail considérable de tests de régression. Chaque fonctionnalité, qu'elle soit fonctionnelle ou non fonctionnelle, doit être testée afin de s'assurer que la nouvelle version n'a causé aucune défaillance. Et plus l'arborescence des dépendances est complexe, plus les tests de régression prennent du temps.
Enfin, il faut obtenir l'aval des développeurs. Il arrive parfois qu'ils doivent être détournés de leur travail en cours pour valider les modifications. C'est là un coût caché de l'ensemble du processus : déclarer prématurément qu'une tâche est « terminée » perturbe le rythme de l'ensemble du projet.
Ne rien faire
Rester les bras croisés est généralement une erreur qui coûte cher. On peut toujours balayer le problème sous le tapis, mais ce faisant, on rend un mauvais service non seulement au produit, mais aussi à nos utilisateurs et à tous les autres produits développés à partir de ce logiciel – qu’ils soient en fin de vie ou non.
De nouveaux CVE (Common Vulnerabilities and Exposures) sont publiés en permanence, et certains concerneront inévitablement le paquet même dont vous dépendez. À mesure que les outils de sécurité commencent à les signaler, la liste s'allonge. Même si les responsables de la maintenance ont cessé leur activité, le logiciel continuera de fonctionner. C'est là qu'il devient essentiel de disposer d'un bouclier protecteur autour de votre logiciel, du début à la fin.
Une coupole d'armure
Ce qu’il y a de mieux avec les logiciels libres, c’est l’engagement et la passion dont fait preuve la communauté pour maintenir les paquets à flot lorsque de nouvelles vulnérabilités sont découvertes. Nous devons beaucoup non seulement aux éditeurs, mais aussi à la communauté qui soutient ces projets. Ne vaudrait-il pas mieux sécuriser l’ensemble de la chaîne d’approvisionnement avant même qu’un paquet n’atteigne sa fin de vie ?
Par étapes SecureChain. Prenons l’exemple d’Angular 20. Angular 22 est la version actuellement prise en charge de manière active, tandis qu’Angular 20 est passé en phase LTS et ne bénéficiera plus d’aucun support officiel fin 2026. C’est exactement le type de version qu’il vaut mieux anticiper : encore en production dans de nombreuses équipes, toujours prise en charge aujourd’hui, mais avec une date d’expiration connue à l’horizon.
Nous pouvons désormais mettre en place des mesures de protection – une « coupole » de sécurité autour de la version 20 – avant qu’elle n’atteigne sa fin de vie (EOL), alors qu’elle bénéficie encore de correctifs en amont. L’avantage de sécuriser un logiciel avant qu’il n’atteigne sa fin de vie est que le paquet peut être recompilé à partir du code source, analysé à la recherche de logiciels malveillants, mis à jour en continu et maintenu conforme. Le contrôle revient ainsi aux développeurs et aux équipes de sécurité, qui peuvent assurer la maintenance du logiciel selon leurs propres modalités.
Cette approche permet de gagner du temps et de l'argent tout en maîtrisant la dette technique. De nouvelles vulnérabilités (CVE) apparaissent plus rapidement que jamais, en partie parce que les outils de codage basés sur l'IA accélèrent à la fois la découverte et l'introduction accidentelle de vulnérabilités, ce qui se traduit par une recrudescence des attaques visant la chaîne d'approvisionnement. Une approche couvrant l'ensemble du cycle de vie – assurant la sécurité de chaque composant tout au long de la pile – vous permet de prendre les devants grâce au « dôme de protection » de la chaîne d'approvisionnement.
Conclusion
La réalité du développement logiciel moderne est que les dépendances open source ne perdent pas pour autant de leur importance pour votre entreprise simplement parce que leurs responsables en amont ont changé de poste. Ne pas appliquer de correctifs aux paquets en fin de vie (EOL) n’est pas une décision neutre ; c’est un choix délibéré d’assumer un risque croissant à chaque nouvelle vulnérabilité CVE qui reste sans solution.
La bonne nouvelle, c’est que les mises à niveau forcées et les réécritures perturbatrices ne sont plus les seules options possibles. Le portage en amont des correctifs de sécurité vers les versions que vous utilisez déjà permet à votre équipe de rester protégée sans bouleverser votre feuille de route ni votre définition du « terminé ». La couverture de sécurité ne devrait pas avoir de date d’expiration, et avec une stratégie de correctifs adaptée, ce n’est pas une fatalité.
Découvrez la couverture de l'ensemble du cycle de vie offerte par SecureChain →

