Une nouvelle façon de certifier les logiciels open source. Le défi du projet AssureMOSS

(Pour Matthieu Mauri)
04/08/21

L'Europe est largement dépendante des logiciels open-source principalement conçu à l'étranger. Au sein du marché unique numérique européen, la plupart des logiciels sont assemblés en ligne et plus de la moitié proviennent de logiciels (référentiels) open-source fait de l'autre côté de la frontière.

Quelques universités, petites, moyennes et grandes entreprises, un groupe d'intérêt spécialisé et un conseil consultatif avec des compétences clés dans le domaine du logiciel open-source, se sont réunis dans un partenariat stratégique pour créer de nouvelles méthodes et approches pour accélérer le développement de logiciels plus efficaces et sécurisés.

Dans cet article nous verrons brièvement la tentative du projet AssureMOSS (Assurance and certification in secure Multi-party Open Software and Services - https://assuremoss.eu) pour relever le défi du logiciel open-source « Conçu partout, mais garanti en Europe ». Le projet de trois ans (octobre 2020 - septembre 2023) est financé par la Commission européenne dans le cadre du programme HORIZON 2020 [1].

La ruée vers les logiciels assemblés et le paradigme MOSS

Au cours de la dernière décennie, parmi les nombreuses innovations, deux caractéristiques principales en particulier ont radicalement changé et conditionné les projets de développement de logiciels [2]. Premièrement, le raccourcissement de la boucle de rétroaction entre les équipes de développement et la réponse aux produits que ces équipes publient (par exemple, les tests A / B, DevOps) ont conduit à un développement effréné avec des changements de produits plus rapides. Deuxièmement, les développeurs se sont de plus en plus concentrés sur les fonctionnalités de différenciation dans leurs produits finaux, mais en s'appuyant de plus en plus sur des tiers pour tout le reste (implémentation du cloud, utilisation intensive de frameworks ouverts tels que OpenSSL [3] ou Node .js [4], ou utilisation de plus des produits restreints mais avec des protocoles, des procédures, des bibliothèques et des API [5] de toute façon open-source). Tout cela a conduit à un développement qui implique différentes parties (appelées multi-acteurs, de l'anglais : multi-interested party) : le résultat est un assemblage opéré par différents acteurs, chacun avec ses propres pratiques/politiques de sécurité et de confidentialité.

Nous pouvons déjà introduire ici un acronyme que nous utiliserons dans la suite de l'article. Le logiciel moderne est basé sur un paradigme appelé Multi-party Open Software and Services (MOSS). Par conséquent, une entreprise de logiciels qui développe un produit ne représente qu'un des protagonistes impliqués dans le processus de garantie de la sécurité du logiciel sur ce même produit.

Ces parties impliquées incluent les communautés de développement d'OS, par exemple, dans la création de mises à jour de sécurité, ou des entreprises qui fournissent de nouveaux services de sécurité ou des mises à jour d'interfaces existantes. Le paradigme MOSS s'applique certainement au cas des grandes entreprises, tandis que les petites entreprises, telles que les PME et les start-up, peuvent avoir une chaîne d'approvisionnement plus courte qui repose principalement sur des logiciels libres et open source (FOSS - Free and Open Source Software).

Ce dernier est l'épine dorsale de l'industrie du logiciel : près de 80 % des produits commerciaux contiennent aujourd'hui au moins un composant FOSS au point que le Parlement européen a formellement reconnu son rôle clé. Il est également intéressant de noter la tendance progressive à la réduction de la part de code produit en interne par les sociétés de développement de logiciels. À la fin des années 90, plus de 95 % de la pile logicielle était constituée de code auto-développé. Seuls les bases de données et les systèmes d'exploitation provenaient de fournisseurs de sources fermées sous licence. En observant la tendance actuelle, on constate qu'en 2019, en revanche, la part de code produit en interne a drastiquement diminué pour ne représenter que 5% du gâteau : navigateurs, frameworks UI, gestionnaires de packages, serveurs d'applications, plateformes de microservices, conteneurs, systèmes fonctionnant en conteneurs, ce sont tous généralement des composants logiciels tiers (principalement open-source) que les éditeurs de logiciels utilisent quotidiennement [6-7-8].

Certification et recertification de logiciels

Cette évolution du processus de développement logiciel en cycles rapides et fragmentés impliquerait autant de processus/cycles de certification et de garantie de sécurité logicielle en raison des nombreux changements qui ont des conséquences sur la sécurité et la confidentialité (une nouvelle vulnérabilité pourrait par exemple être introduite par l'utilisation d'une nouvelle bibliothèque capable d'accéder aux données personnelles et éventuellement de les transmettre). Par conséquent, le nouveau paradigme pour garantir la sécurité devrait être « léger et continu » par rapport au paradigme précédent « rigide et fixe ». Il ne faut donc pas parler de certification mais plutôt de certification, de recertification et d'évaluation des risques.

Le fait que le développement de logiciels soit, en fait, une activité multipartite (où certaines parties prenantes sont cachées dans des sous-sous-dépendances de bibliothèques tierces) signifie que les techniques d'assurance devraient fonctionner dans un écosystème fragmenté avec de multiples sources d'artefacts (par ex. de la communauté open-source), différentes technologies et langages et différents domaines de décision. En conséquence, un nouveau paradigme pour l'assurance de la sécurité implique une approche « intelligente et flexible » - une approche capable d'apprendre, de s'adapter et de s'améliorer au fil du temps grâce à la disponibilité de nouvelles données et de commentaires supplémentaires.

À moins que des techniques d'assurance de sécurité innovantes, légères et intelligentes ne soient créées qui puissent s'intégrer avec de multiples parties prenantes et des développeurs au rythme rapide, la sécurité continuera d'être pénalisée [9] par la course à la productivité des équipes de développement. .

Le développement rapide et multipartite pose également un défi pour garantir la certification des logiciels. Systèmes de certification de sécurité existants, y compris ceux pour les projets open-source, tels que le programme de badges Core Infrastructure Initiative (CII) [10], se concentrent sur la certification que les projets logiciels suivent certaines meilleures pratiques de sécurité. Essentiellement, ces schémas se concentrent sur le processus de développement logiciel. Cependant, dans les projets logiciels modernes, le processus de développement devient plus fluide et continuellement adapté par les développeurs (au lieu d'être rigide et appliqué de manière centralisée). En conséquence, les installations impliquées dans chaque phase peuvent ne pas disposer des ressources nécessaires pour acquérir et maintenir ces certifications.

Le défi du projet AssureMOSS

De ce qui vient d'être dit, on aura certainement perçu la nécessité d'un changement de perspective de la part de l'Union européenne qui a tenté d'amorcer une nouvelle approche en finançant le projet AssureMOSS. Le projet implique une équipe composée de 4 universités (Delft, Gotheborg, Trento, Vienne), 3 PME innovantes (Pluribus One, FrontEndArt, Search-Lab), 2 grandes entreprises (SAP, Thales), l'organisation EU-VRi et un cabinet de conseil Conseil composé de personnalités stratégiques du monde de l'industrie et des logiciels libres (OSS).

Plus précisément, AssureMOSS propose de mettre en œuvre la transition d'une évaluation de la sécurité basée sur les processus à une évaluation de la sécurité basée sur les artefacts (modèles, code source, images de conteneurs, services), en prenant en charge toutes les phases du cycle de vie continu du logiciel (conception, développement, mise en œuvre, évaluation et sauvegarde) .

AssureMOSS adopte donc une approche globale de l'assurance de la sécurité et de la recertification et a l'ambition de contribuer à chaque étape du processus de développement logiciel, grâce à un ensemble cohérent de techniques automatisées et légères qui permettent aux éditeurs de logiciels d'évaluer, de gérer et de recertifier la sécurité et la confidentialité. les risques associés au développement rapide et à la livraison continue de logiciels et de services ouverts multipartites. À terme, le projet vise à soutenir la création de logiciels MOSS plus sécurisés.

L'idée clé est de prendre en charge des mécanismes de filtrage légers et évolutifs qui peuvent être automatiquement appliqués à l'ensemble de la population de composants logiciels en :

• utilisation du Machine Learning pour l'identification intelligente des problèmes de sécurité parmi les artefacts ;

• analyse et vérification des changements grâce à un suivi continu des effets secondaires sur la confidentialité et la sécurité ;

• analyse constante des risques et évaluation de la sécurité des logiciels (avec une attention particulière aux impacts potentiels sur l'entreprise causés par des produits potentiellement vulnérables).

Le projet générera non seulement un certain nombre de méthodes innovantes et d'outils open source, mais également des jeux de données de référence avec des milliers de vulnérabilités et de code pouvant être utilisés par d'autres chercheurs.

Les outils AssureMOSS permettront par exemple de gagner du temps dans la recherche de bugs et de vulnérabilités grâce au filtrage semi-automatique des ajouts, suppressions et modifications dans les référentiels de code (commit analysis [11]), accélérant ainsi également l'évaluation et processus d'analyse du logiciel.

Le changement de perspective (artefacts vs processus) et le concept de recertification continue des logiciels développés, sont donc à la base d'un défi extrêmement ambitieux : établir les lignes directrices qui peuvent être utilisées, par exemple, par les organismes de certification et de normalisation pour fonder un Système de certification axé sur les artefacts pour les logiciels MOSS.

L'intuition de base est bien résumée par une pratique bien connue dans le domaine de la santé médicale [12] et que nous adaptons ici à cet effet : « Le dépistage se définit comme l'identification préventive d'une maladie dans une population apparemment saine et asymptomatique au moyen de tests (de composants logiciels), examens ou autres procédures qui peuvent être appliqués rapidement et facilement à la population cible. [...] En soutenant les programmes de dépistage, il est important d'éviter d'imposer des modèles dérivés d'environnements hautement efficaces avec des systèmes de santé avancés et des systèmes de vérification (de sécurité) sophistiqués et coûteux, aux entreprises, aux processus (développeurs et utilisateurs) dans les pays qui ne pas les infrastructures et les ressources nécessaires pour obtenir une prévention adéquate sur la population ».

1 Le projet AssureMOSS est réglementé par la convention de subvention n°952647, et est financé pour un total de 4.689.425 XNUMX XNUMX euros, www.pluribus-one.it/it/ricerca/progetti/assuremoss

2 janv. Bosch, Vitesse, données et écosystèmes : exceller dans un monde piloté par les logiciels, CRC Press, 2016

3 OpenSSL est une implémentation open source des protocoles SSL et TLS, disponible pour la plupart des systèmes d'exploitation de type Unix, y compris GNU/Linux et macOS, ainsi que pour Microsoft Windows, www.openssl.org

4 Node.js est un système d'exécution open source multiplateforme orienté événement pour l'exécution de code JavaScript, construit sur le moteur JavaScript V8 de Google Chrome. Beaucoup de ses modules de base sont écrits en JavaScript, et les développeurs peuvent écrire de nouveaux modules en JavaScript, https://nodejs.org/it/

5 API, acronyme de Application Programming Interface, www.redhat.com/en/topics/api/what-are-application-programming-interfaces

6 Enquête sur l'avenir de l'open source de Black Duck, 2015

7 Holger Mack, Tom Schröer, Security Midlife Crisis, SAP Product Security Summit 2019

http://www.europarl.europa.eu/oeil/popups/ficheprocedure.do?lang=en&refe...

9 Selon CVE Details, 2017 a battu le record de vulnérabilités des années précédentes (14714 en 2017 contre le précédent record de 7946 en 2014). Malheureusement, 2018 a fait encore pire (16555 vulnérabilités). https://www.cvedetails.com/browse-by-date.php

10 https://www.coreinfrastructure.org

11 https://wiki.ubuntu-it.org/Programmazione/Git/Commit

12 https://www.who.int/cancer/prevention/diagnosis-screening/screening/en/

13 Eoin Woods, Democratizing Software Architecture, Keynote à l'ICSA 2019, en ligne sur https://speakerdeck.com/eoinwoods/democratising-software-architecture

14 www.pluribus-one.it/it/chi-siamo/blog/88-cybersecomics/111-bug