Qu'est-ce que le rétroportage ou backporting ?
Le rétroportage consiste à appliquer une mise à jour ou un correctif développé pour une version récente d'un logiciel à une version plus ancienne de ce même logiciel.
Ce procédé sert le plus souvent à corriger des failles de sécurité dans un logiciel d'ancienne génération ou dans des versions plus anciennes d'un logiciel encore prises en charge par le développeur. Bien souvent, l'utilisateur conserve l'ancienne version du logiciel en raison de problèmes de stabilité ou de compatibilité de la nouvelle version avec des applications en aval.
Fonctionnement du rétroportage
Le rétroportage est un terme générique qui désigne l'application de mises à jour ou de correctifs développés pour une nouvelle version d'un logiciel à une version plus ancienne.
Il peut s'agir de la simple mise à jour de plusieurs lignes de code ou d'un remaniement majeur déployé sur plusieurs fichiers du code.
Dans ce dernier cas, le rétroportage peut se révéler moins pratique que la mise à niveau vers la version la plus récente du logiciel. En revanche, dans certains cas, il peut être nécessaire de conserver une application d'ancienne génération lorsque la nouvelle version présente des problèmes de stabilité susceptibles de perturber l'exécution d'opérations stratégiques.
Processus de rétroportage
Le rétroportage est un processus en plusieurs étapes. Nous présentons ici les étapes de base du développement et du déploiement :
- Identifier la faille de sécurité dans la version du logiciel nécessitant l'application d'un correctif ou d'une mise à jour
- Déterminer les correctifs, mises à jour ou modifications permettant de résoudre ce problème et disponibles dans les versions plus récentes du même logiciel
- Adapter la modification pour la rendre compatible avec l'ancienne version du code
- Réaliser des tests rigoureux pour s'assurer que le code rétroporté ou le package de rétroportage préserve toutes les fonctionnalités de l'architecture informatique, en plus de combler la faille de sécurité sous-jacente
- Gérer les effets indésirables identifiés à l'étape précédente
- Déployer le correctif rétroporté
Qui est chargé du rétroportage ?
Le rétroportage nécessite un accès au code source du logiciel. Il doit donc être effectué et pris en charge par l'équipe de développement de base du logiciel propriétaire, par exemple dans le cadre d'une opération officielle d'application de correctif ou de correction de bug. Pour un logiciel à code source libre, comme Linux, le rétroportage peut être effectué par un tiers, puis soumis à l'équipe de développement du logiciel.
Place du rétroportage dans la gestion des vulnérabilités
Le rétroportage présente de nombreux avantages, mais ne peut à lui seul résoudre des problèmes de sécurité complexes. Il peut même à long terme introduire d'autres risques de sécurité plus graves que le problème d'origine.
Problèmes et préoccupations courants liés au rétroportage
Coûts du support et de la maintenance à long terme
Le rétroportage permet de remédier efficacement aux failles de sécurité et aux vulnérabilités de versions plus anciennes d'un logiciel. Il introduit néanmoins un degré significatif de complexité dans l'architecture système et peut être coûteux à entretenir.
Prenons l'exemple de Python 2.7.18, la dernière version officielle de Python 2. Pour continuer à bénéficier de correctifs de sécurité à jour et des derniers développements offerts par Python, les entreprises devaient migrer vers Python 3 ou revoir leurs exigences à la baisse et choisir un support classique à long terme. L'équipe d'analyse scientifique des données de CrowdStrike a été confrontée à ce dilemme. Cet article décrit le processus décisionnel suivi par l'équipe, ainsi que l'approche adoptée pour mettre à jour environ 200 000 lignes de Python dans un cadre moderne.
Effets indésirables du rétroportage
Comme expliqué dans l'article de blog consacré à Python, chaque rétroportage peut avoir des effets indésirables au sein de l'environnement informatique. De même qu'une application logicielle en amont affecte toutes les applications en aval, un rétroportage appliqué au logiciel de base affecte l'ensemble des versions en aval. C'est également le cas si le rétroportage est appliqué au noyau.
Autres vulnérabilités et implications en termes de sécurité
Le rétroportage est une technique couramment utilisée pour corriger un bug dans l'environnement informatique. Malheureusement, la conservation d'une base de code d'ancienne génération crée d'autres problèmes de sécurité potentiellement graves pour les entreprises, notamment l'introduction de failles ou de vulnérabilités dans l'environnement. Ces problèmes affectent non seulement l'application principale, mais également toutes les bibliothèques dépendantes et applications dérivées de référentiels publics. Il est important de déterminer la manière dont chaque rétroportage s'inscrit dans la stratégie de sécurité globale de l'entreprise, ainsi que dans l'architecture informatique. Cela vaut pour les applications logicielles en amont et le noyau lui-même.
Confusion dans la numérotation des versions
Le rétroportage peut donner aux utilisateurs une fausse impression de sécurité si le processus de numérotation des versions n'est pas bien compris. Par exemple, un utilisateur peut lire un article de presse concernant la nécessité de mettre à niveau son logiciel en vue de résoudre des problèmes de sécurité. Il installe alors un package mis à jour par le fournisseur, mais pas la dernière version en amont de l'application. Dans un tel scénario, l'utilisateur utilise toujours l'ancienne version en amont du logiciel à laquelle des packages de rétroportage ont été appliqués. Il ne bénéficie donc pas de toutes les fonctionnalités de sécurité et de tous les avantages de la dernière version du logiciel. L'utilisateur doit vérifier le numéro de mise à jour du logiciel et s'assurer qu'il s'agit bien de la version la plus récente.