La chaîne d'approvisionnement logicielle, un rempart important à sécuriser

La chaîne approvisionnement logicielle est un élément central pour les entreprises, mais aussi particulièrement vulnérable aux cyberattaques.

Dans la course à la compétition, le choix des entreprises se porte de plus en plus sur des solutions logicielles spécialisées, transformant petit à petit les écosystèmes informatiques en véritables patchworks de systèmes issus de différents fournisseurs. Cette diversité complique fortement le maintien de la sécurité des données, en multipliant le nombre de relations de confiance nécessaires et crée davantage de points d’entrées potentiels pour les attaques. La vitesse de propagation des attaques est d’autant plus accélérée en raison de l’intégration poussée des systèmes, pour optimiser au maximum les performances et la productivité.

On voit de plus en plus d’exemples d'attaques visant la chaîne d’approvisionnement qui exploitent des logiciels tiers pour infiltrer une entreprise. Un code malveillant s’est par exemple introduit, en 2020, dans une mise à jour du logiciel SolarWinds et a pénétré les systèmes de différentes branches du gouvernement fédéral américain, puis s’est diffusée à l’échelle mondiale en infectant quelques 18 000 entreprises. Plus récemment, en mars 2021, une vulnérabilité du logiciel Microsoft Exchange Server a menacé la sécurité de plus de 20 000 entreprises américaines. C’est aussi via les partenaires de la supply chain, généralement considérés comme inoffensifs, que le risque se diffuse, comme l’atteste l’exemple de l’attaque menée sur la supply chain de CodeCov, un logiciel pour les développeurs, qui a permis aux pirates de prendre le contrôle des chaînes d'approvisionnement des clients de l'entreprise.

Malgré les risques liés à la chaîne d’approvisionnement, il est inconcevable de renoncer aux avantages des nouvelles technologies. Face à ce dilemme quotidien, les développeurs logiciels doivent choisir entre la conformité aux normes de sécurité les plus élevées et davantage d'autonomie.

Pour concilier ces deux approches opposées, le processus de signature de code, qui permet de prouver qu’un logiciel n’a été ni altéré ni corrompu avant son déploiement, doit être repensé.

En effet, les techniques de signatures de code traditionnelles utilisent des clés cryptographiques pour prouver l’identité de l’auteur du code ou l’intégrité du contenu d’un livrable logiciel. Il revient aux développeurs de générer ces clés pour préserver leur sécurité. Face à cette responsabilité et cette tâche supplémentaire, certains décident de ne pas signer leurs codes (ce qui est mauvais pour la sécurité) ou d'en écrire moins (ce qui est mauvais pour l’innovation). Quelle que soit l’approche choisie, elle n’a pas un effet bénéfique sur la communauté des développeurs. La question de la provenance des logiciels, dont la plupart sont conçus sur des principes open source et peuvent être modifiés par n’importe quel utilisateur, est de plus en plus cruciale. Les logiciels propriétaires, qui utilisent de plus en plus de codes open source, ne sont pas non plus épargnés.

Dans ce contexte, la communauté open source a un grand rôle à jouer pour indiquer montrer la voie à suivre et simplifier l'environnement de signature de code pour les développeurs ; cela passe, par exemple, par le remplacement des clés permanentes par des clés éphémères liées à des éléments d’identification existants (sur le même modèle que des identifiants d’adresses e-mail ou de réseaux sociaux), ou par la production d’un log public et immuable répertoriant l’ensemble des activités. Ces deux outils permettent de soulager les développeurs du fardeau de la signature de code, et les laissent se consacrer à leur cœur de métier, tout en renforçant la sécurité du système.

Qu’est-ce que la chaîne d'approvisionnement logicielle comprend concrètement ? Il s’agit d’une variété de types d'environnements, depuis le développeur jusqu'au client final, et depuis le code source jusqu'à la livraison, en passant par la construction, les dépendances, l'assemblage, l'empaquetage. En raison de la multiplication sans limite du nombre d’objets connectés, ces chaînes ont donc plus de risque de subir une cyberattaque. Il faut donc faire preuve de davantage d’efforts pour limiter au maximum les dégâts liés à la sécurité des supply chains.

Pour résoudre ce problème, les membres de la communauté Open Source travaillent d’arrache-pied d'œuvre et mettent en place de nombreux projets voient le jour pour améliorer la sécurité de la supply chain dans son ensemble, parmi lesquels sigstore, slsa.dev ou encore CycloneDX.