Agence web » Actualités du digital » Comment utiliser en toute sécurité le code Open Source dans votre projet

Comment utiliser en toute sécurité le code Open Source dans votre projet

Deux hommes et une femme développent le code de programmation.
Shutterstock / REDPIXEL.PL

Il y a du code open source dans presque tous les projets de développement logiciel auxquels vous pouvez penser. Les développeurs l’adorent. Mais vous devez comprendre les risques cachés et comment les minimiser, sinon vous pourriez laisser votre application ouverte à des vulnérabilités de sécurité inconnues.

Codage avant Open Source

Il était une fois, les développeurs de logiciels écrivaient tout à partir de zéro. Ensuite, des bibliothèques de code, des boîtes à outils et d’autres modules complémentaires ont commencé à apparaître. Vous pouvez avoir une longueur d’avance en utilisant une boîte à outils pour fournir certaines fonctionnalités, telles qu’un module de rapport ou un widget d’interface. Vous pouvez les insérer dans votre projet en tant que composants entièrement formés prêts à l’emploi et les utiliser immédiatement. L’alternative était de perdre du temps, de l’argent et des efforts de développement à réinventer la roue.

Bien sûr, au fil du temps, vous construirez votre propre bibliothèque de routines et de modules qui avaient été écrits en interne. Ainsi, lorsque vous développiez une nouvelle routine de code ou un nouvel élément d’interface, vous aviez trois options. Écrivez-le vous-même, réutilisez du code interne précédemment écrit ou achetez dans une bibliothèque ou une boîte à outils.

L’essor de l’open source

L’avènement du code open source a changé tout cela. Un logiciel libre rend le code source d’un projet librement disponible pour une utilisation par d’autres, dans les limites d’une licence – généralement bénigne. La croissance et l’adoption de l’open source ont toutes deux été stupéfiantes. Le mot prolifération ne semble pas le couvrir. Il y a eu une augmentation phénoménale des logiciels open source, et pas seulement en termes du nombre ahurissant de projets et de produits open source qui existent, mais aussi de l’utilisation de l’open source dans les produits commerciaux.

Les logiciels open source ont atteint une masse critique il y a quelques années, et ils sont passés d’une position de niche en marge à une ressource de développement grand public pleinement intégrée. Parce qu’il était dirigé et développé par une communauté et non par une entreprise commerciale traditionnelle, il était également considéré comme une sorte d’amateur.

Maintenant, on a l’impression que l’open source a grandi et mûri. Et c’est le cas. Mais le plus grand changement a été une appréciation plus large de l’open source, une compréhension des avantages qu’elle apporte et la reconnaissance du fait que l’inclusion de l’open source dans votre produit n’est pas une raison d’avoir honte.

Les estimations suggèrent que les projets logiciels non triviaux écrivent au maximum 20% du code original. Les 80% restants sont open source. Le principal site d’hébergement de référentiels open source, GitHub, a atteint plus de 100 millions de référentiels en 2018. Et il existe de nombreuses autres plates-formes Git hébergées, telles que GitLab et BitBucket.

L’open source est un phénomène de développement logiciel. Mais ce ne sont pas toutes les roses dans le jardin de développement. Il y a des problèmes que vous devez connaître et gérer.

Les problèmes de sécurité

bugs au fil du temps

L’utilisation de composants open-source dans de grands projets logiciels réduit les coûts de développement, raccourcit le temps de développement de bout en bout et – il a été soutenu – favorise l’innovation. Parce que cela libère votre personnel de développement de l’ordinaire, cela leur permet de se concentrer sur les aspects uniques et attractifs de votre produit.

Il existe des produits open source qui ont une entité commerciale derrière eux. L’organisation commercialise son produit dans le cadre d’un système de double licence. Une version commerciale aura un canal d’assistance officiel, professionnel et peut contenir d’autres avantages tels que des extras propriétaires qui sont fournis avec le produit. Ils publient également une version soutenue par la communauté qui bénéficiera des efforts de codage de l’équipe commerciale ainsi que des contributions de sa propre communauté. Des contributions importantes de la communauté reviendront également dans la version commerciale.

Cependant, la majorité des projets open source sont entièrement pilotés par la communauté. Ils peuvent avoir le soutien d’entités commerciales, mais ce soutien est constitué de dons et de parrainage, pas de contributions au code.

Quelle que soit leur provenance, les composants open source qui sont choisis pour être inclus dans de nouveaux projets de développement ont tendance à être des projets bien établis et réputés à part entière. Ils ont gagné une grande confiance. Mais ce n’est pas toujours le cas. Parfois, la fonctionnalité dont vous avez besoin est disponible, mais elle est contenue dans un projet nouveau et peu prouvé. Mais vous avez le code source, non? Vous pouvez en faire un examen de code.

Du point de vue de la sécurité, l’open source n’est ni plus ni moins sûr que le code propriétaire local. C’est tout du code écrit par l’homme après tout. Les partisans de l’open source font référence à la loi d’Eric S. Raymond qu’il a nommée en l’honneur de Linus Torvalds, qui stipule que «avec suffisamment de globes oculaires, tous les bogues sont superficiels». Avec suffisamment de personnes examinant le code et le testant en version bêta, les problèmes doivent être identifiés, caractérisés et résolus rapidement.

C’est vrai pour autant. Mais les problèmes de sécurité ne sont pas nécessairement des bogues. Une vulnérabilité peut être une circonstance qui survient comme un effet secondaire d’une logique complexe dans un projet de nombreux modules de code source représentant des millions de lignes de code. Le produit fait ce qu’il est censé faire et il semble donc fonctionner comme prévu. Ainsi, il passe l’examen du code, la vérification du produit, les tests sur le terrain et obtient un bilan de santé propre.

En dehors de la chance aveugle et du hasard, cette boucle d’examen, de test, d’essai et de publication ne découvrira pas les failles de sécurité.

Pourquoi l’open source est attrayant pour les pirates

De plus, certains aspects de l’open source sont positivement attrayants pour les pirates et les acteurs de la menace. Ils peuvent également voir le code source. Ils peuvent rechercher des vulnérabilités avec un état d’esprit différent de celui du contributeur de communauté moyen qui, bien qu’il puisse être un développeur compétent, a peu de chances d’avoir une véritable expérience en matière de sécurité.

Bien sûr, les contributeurs à l’open source sont de toutes les saveurs avec des parcours variés. Certains d’entre eux auront sans aucun doute une expérience concrète en matière de sécurité – mais ils seront minoritaires. Les acteurs de la menace sont une autre bête. Et ils ne se limitent pas à trouver des vulnérabilités, ils peuvent également les injecter.

Il y a eu de nombreux cas où un acteur menaçant a introduit une vulnérabilité via un correctif qu’il a créé et soumis à un projet. Il a fait son chemin à travers la révision du code, dans la base de code et dans la prochaine version du produit.

L’exemple ultime de ceci était peut-être un composant JavaScript appelé event-stream. Ce projet open source a été maintenu par un seul développeur. Le fardeau de la gestion du projet l’a dépassé. Il a été persuadé de le remettre à un nouveau responsable.

Le nouveau responsable était un acteur de la menace. Ils ont repris le projet, l’ont exécuté normalement pendant une courte période, puis y ont ajouté du code malveillant. Chaque copie de tous les autres programmes utilisant ce composant logiciel détournait discrètement certains types de portefeuille Bitcoin pour l’acteur de la menace.

Ce que vous pouvez faire pour réduire le risque

qu39est-ce-que-le-hsts-et-comment-le-configurer-cloudsavvy-9247648

Comme pour de nombreux aspects de la sécurité, vous gérez ce risque en appliquant des contrôles. Cela nécessite une gouvernance – en d’autres termes, des politiques et des procédures. Heureusement, il existe des logiciels qui peuvent vous aider.

Créer un registre Open Source

Vous devez quantifier l’open source que vous utilisez. Créez un registre répertoriant les composants open source que vous utilisez dans vos projets. Répertoriez chaque composant open source, la ou les versions que vous avez utilisées, les projets dans lesquels vous les avez utilisés, la dernière version et l’endroit où elle peut être téléchargée. Dans la documentation de conception de chacun de vos projets, vous devez répertorier les composants open source qui sont utilisés.

Le diable est dans les détails. N’oubliez pas les dépendances et la nature hiérarchique d’une grande partie de l’open source. Les projets open-source utilisent souvent d’autres projets en eux-mêmes, imbriqués comme des poupées russes, ou ils nécessitent l’installation d’autres composants open-source sur la machine cible afin de pouvoir les utiliser.

Explorez ces dépendances et répertoriez-les dans votre registre open source.

Exécuter des audits automatiques

Les vulnérabilités dans les packages open-source sont un problème majeur pour NPM, le gestionnaire de packages pour JavaScript. Pour résoudre ce problème, ils ont créé un outil d’audit automatique qui recherchera les packages obsolètes avec des mises à jour de sécurité.

Ceci, bien sûr, a ses limites, et il est important d’être conscient et de ne pas compter entièrement sur l’outillage automatique. Il n’attrapera que les paquets avec des vulnérabilités connues et mises à jour. Si le package a une vulnérabilité, mais n’a pas été mis à jour pour la corriger, l’audit NPM ne vous dira rien.

Créer une carte de vulnérabilité

Votre registre open-source vous donne une image claire de l’open source que vous utilisez. L’étape suivante consiste à mapper les vulnérabilités connues sur ce registre. Parfois, ils peuvent être découverts en visitant la page d’accueil du projet et en consultant la liste des problèmes connus.

La base de données nationale sur les vulnérabilités (NVD) vous donnera une image beaucoup plus granulaire. Vous pouvez utiliser leur page de recherche pour rechercher des produits par nom afin de savoir quelles vulnérabilités et expositions courantes affectent ce composant logiciel. Le NVD est une excellente ressource, même si son format prend un peu de temps jusqu’à ce que vous vous y habituiez.

Mettez à jour votre registre et votre carte de vulnérabilité

Bien sûr, c’est quelque chose dont vous devez vous tenir au courant. De nouvelles vulnérabilités sont découvertes en permanence, de sorte que l’état de sécurité de votre produit au lancement est susceptible de s’éroder lentement avec le temps.

Reconnaissant ce nouveau besoin, il existe des applications commerciales (Black Duck, WhiteSource) qui vous aideront à y parvenir. Ils peuvent analyser vos projets et identifier le code open source et rechercher automatiquement les vulnérabilités. Certains d’entre eux (FOSSA) offrent un niveau gratuit.

L’analyse statique de votre base de code, y compris les composants open-source, devrait de toute façon faire partie intégrante de votre rigueur de développement. Des outils tels que Coverity Scan peuvent détecter des défauts dans votre code, tels que des débordements de tampon, qui peuvent entraîner des vulnérabilités. Il donnera même des conseils sur la façon de les rectifier.

Vérifiez les licences Open Source et respectez-les

Assurez-vous de bien comprendre les licences en vigueur sur l’open source que vous utilisez. Il existe de nombreuses licences différentes, alors vérifiez que vous vous conformez à toutes les exigences. Impliquez votre responsable des licences ou de la conformité, si vous en avez un.

Le non-respect d’une licence open source peut entraîner des litiges. Les projets open source réagissent aussi rapidement aux violations de licence que les éditeurs de logiciels commerciaux.

Mettez à jour vos composants Open-Source

Comme les vulnérabilités sont corrigées par les communautés de l’open source que vous utilisez, assurez-vous de mettre à niveau vos versions afin de bénéficier de ces correctifs. L’Open source utilise un modèle «pull». Ils annoncent un nouveau correctif et vous devez ensuite télécharger cette nouvelle version. C’est le contraire de la plupart des logiciels commerciaux qui ont un modèle «push» où les mises à jour sont transmises aux utilisateurs enregistrés.

Surveillez les pages du projet pour les annonces de nouvelles versions, puis téléchargez et testez les nouvelles versions.

Le coût de l’open source

Les logiciels open source sont gratuits, mais ils comportent des frais généraux de gestion et de gouvernance. Les implications doivent être comprises et contrôlées afin de pouvoir l’utiliser en toute sécurité et avec un minimum de risques.

★★★★★