Voilà des années que, chaque dimanche, je me rends à Genève dans mon restaurant préféré. Je m’assieds toujours à la même table, face à la même vue, et commande les mêmes plats, avec le même vin. La nourriture, exquise, ne m’avait jamais déçu... jusqu’au week-end dernier, lorsque j’ai appris que le propriétaire avait changé, tout comme le cuisinier. Je m’en suis rendu compte dès les premières bouchées, un vrai désastre. Cependant, un autre que moi n’aurait sans doute rien remarqué.
Tout comme vous ne remarquerez rien de suspect en programmant, en développant un logiciel, en administrant un conteneur, ou encore, en important des machines virtuelles. Vous ne vous apercevrez de rien en exécutant du code provenant de NPM ou de PyPI. Vous ne remarquerez rien en important des machines virtuelles et des conteneurs à partir de sources suspectes sur Internet, ni en copiant ou en collant des éléments de codes pris au hasard sur le web. Vous ne vous apercevrez de rien, tout comme vous ne vous seriez pas rendu compte du changement de propriétaire et de cuisinier.
La beauté du génie informatique réside justement dans la réutilisation de programmes, bibliothèques, progiciels, machines virtuelles, conteneurs développés par d'autres personnes. Néanmoins, la prudence est de mise, car vous devez leur faire confiance. Mais est-ce possible ? GitHub, Stack Overflow et d'autres plateformes fournissent des millions de lignes de code prêtes à être réutilisées. NPM et PyPI facilitent l'importation, la réimportation et la mise à jour du code quand sort une nouvelle version, mais leur usage repose sur la confiance. Tout comme vous vous seriez fié au propriétaire et au cuisinier d’origine comme étant des personnes honnêtes, dignes de confiance, fiables et animées de bonnes intentions, et qui n’allaient pas se transformer en êtres malveillants, prêts à vous trahir.
Des progiciels se trouvant sur NPM, PyPI, GitHub ou sur d’autres plateformes de distribution de logiciels à distance, ont déjà été piratés, soit en acceptant un code source provenant d’une porte dérobée se trouvant dans la version la plus récente de ces progiciels, soit parce que des progiciels et des bibliothèques n’ont pas été vérifiés, soit encore parce que le compte du propriétaire du code source était compromis, soit enfin parce que la maintenance de ce code source a été confiée à un nouveau gestionnaire, potentiellement malveillant. En 2021, un spécialiste de la sécurité a mené avec succès une attaque de la chaîne d’approvisionnement contre Microsoft, Apple, PayPal, Shopify, Netflix, Tesla, Yelp et Uber, en diffusant simplement des progiciels publics portant le même nom que les paquets internes de ces entreprises. Il a profité du fait que PyPI et NPM recherchent toujours la dernière version disponible des progiciels et leur donnent la priorité, et ce même sur un téléchargement provenant de sources internes. Les logiciels utilisant NPM ou PyPI avec des dépendances internes à des bibliothèques tierces vont donc, en priorité, chercher les nouvelles dépendances sur Internet. Il a suffi au spécialiste de trouver les noms de ces bibliothèques, de publier une version plus « récente » et d’attendre que PyPI et NPM fassent leur travail.
Restez sur vos gardes pour ne pas tomber dans ce piège. Nos méthodes de développement sont semblables et les risques sont les mêmes, qu'il s'agisse de PyPI, NPM ou de téléchargements automatiques sur Internet. Nous pouvons, et devons faire mieux pour garantir la fiabilité et la sécurité, mais aussi pour améliorer le contrôle des différentes versions et révisions, la gestion des dépendances et le respect des licences des logiciels. Il existe des mesures pour réduire les risques, comme l’utilisation de logiciels centraux pour gérer les dépendances, mais ceux-ci doivent être déployés, gérés et édités de manière centralisée. Le département IT du CERN vous donne déjà accès à Harbor et Nexus, des services de conteneur et de gestion de dépôt de composants logiciels, respectivement. Même si ceux-ci ne sont pas encore édités, songez à les utiliser pour éviter les téléchargements directs. Faites équipe avec d'autres groupes de développeurs pour améliorer ensemble vos logiciels, y compris les bibliothèques et les progiciels que vous importez, et faites part de vos besoins à votre interlocuteur en matière d’informatique afin qu'il mette en place un tel service centralisé !
Au fait, quel est votre restaurant préféré à Genève ? J'ai besoin d'une nouvelle adresse...
______
Pour en savoir plus sur les incidents et les problèmes en matière de sécurité informatique au CERN, consultez notre rapport mensuel (en anglais). Si vous souhaitez avoir plus d’informations, poser des questions ou obtenir de l’aide, visitez notre site ou contactez-nous à l’adresse Computer.Security@cern.ch.