De plus en plus d'organisations s'appuient sur divers outils externes et fournisseurs de logiciels pour fournir des services à leurs clients. La complexité de la chaîne d'approvisionnement en logiciels ne fait qu'augmenter, et il est donc essentiel de comprendre comment ces composants interagissent et affectent le système dans son ensemble.
Cet article présente les différents maillons de la chaîne d'approvisionnement en logiciels, leurs vulnérabilités et les solutions pour les sécuriser contre les pirates informatiques et autres acteurs malveillants.
Étapes de la sécurité de la chaîne d'approvisionnement en logiciels
- Évaluation des fournisseurs
- Contrôle continu
- Mettre en œuvre le SBOM
- Chiffrement et communication sécurisée
- Audits et tests réguliers
- Effectuer des tests de sécurité automatisés
- Gestion des dépendances
- Formation à la sécurité
Qu'est-ce qu'une chaîne d'approvisionnement en logiciels ?
Une chaîne d'approvisionnement en logiciels fait référence à tous les processus, outils et composants tiers qui constituent le développement, la production et la livraison de produits logiciels. Elle va du code écrit par les développeurs aux bibliothèques open-source, en passant par les applications tierces et les services cloud .
Éléments clés d'une chaîne d'approvisionnement en logiciels
- Développeurs et outils de développement: Environnements de développement intégré (IDE), référentiels de code source et systèmes de contrôle de version.
- Logiciels libres et bibliothèques: Dépendances de tiers qui sont incorporées dans le logiciel.
- Fournisseurs tiers: Outils et fournisseurs de logiciels tiers qui intègrent des solutions à l'application principale.
- Pipelines CI/CD: Automatisation des systèmes qui testent, construisent et déploient le logiciel.
- Cloud infrastructure: Environnements d'hébergement et services cloud utilisés dans le produit final.
Pourquoi la sécurité de la chaîne d'approvisionnement en logiciels est-elle si importante ?
La sécurité de la chaîne d'approvisionnement des logiciels est importante car la plupart des logiciels modernes s'appuient fortement sur des outils tiers et des bibliothèques à code source ouvert, entre autres, fournis par des vendeurs externes. Un seul point faible au sein d'une chaîne d'approvisionnement peut exposer une organisation à de graves cyberrisques, ce qui fait que la chaîne d'approvisionnement fait partie de la cybersécurité générale.
Le nombre croissant d'attaques contre la chaîne d'approvisionnement nombre croissant d'attaques contre la chaîne d'approvisionnement indique que les organisations devraient mettre l'accent sur la sécurité tout au long du cycle de vie du logiciel. Une stratégie efficace de sécurité de la chaîne d'approvisionnement favorise une culture d'entreprise dans laquelle les vulnérabilités des outils et des bibliothèques de tiers sont d'abord corrigées et atténuées avant d'avoir un impact sur l'ensemble de l'écosystème logiciel.
Exemples d'attaques contre la chaîne d'approvisionnement en logiciels
Chacun des incidents suivants illustre grosso modo la manière dont les attaquants ont tiré parti des vulnérabilités de la chaîne d'approvisionnement en logiciels pour produire des effets de grande ampleur.
Attaque de SolarWinds
L'attaque de attaque SolarWinds est l'une des attaques les plus connues et les plus dévastatrices de l'histoire récente de la chaîne d'approvisionnement en logiciels. Elle s'est produite en 2020 et a consisté en une attaque sophistiquée contre le logiciel de surveillance et de gestion informatique Orion de SolarWinds.
Cette attaque a mis en évidence la vulnérabilité de la chaîne d'approvisionnement en logiciels, en particulier les problèmes liés aux relations de confiance qui existent entre les fournisseurs et leurs clients. Cela a entraîné une plus grande prise de conscience de la nécessité d'une surveillance continue et de pratiques de sécurité robustes, même chez les fournisseurs bien établis.
Attaque NotPetya
L'attaque attaque NotPetyaqui s'est produite en juin 2017, est un exemple classique d'attaque destructrice de la chaîne d'approvisionnement en logiciels qui a paralysé des entreprises dans le monde entier. Contrairement à d'autres attaques, NotPetya n'était pas axée sur le vol de données, mais plutôt conçue pour provoquer un maximum de perturbations.
Une fois diffusé, le logiciel malveillant s'est facilement propagé d'un réseau à l'autre, en s'appuyant sur les faiblesses des systèmes Microsoft qui n'avaient pas été corrigées. NotPetya a crypté les données des utilisateurs et a ensuite présenté un message de rançon demandant un paiement en bitcoins. Le préjudice financier total de NotPetya a été estimé à plus de 10 milliards de dollars, ce qui en fait l'une des cyberattaques les plus destructrices de l'histoire moderne.
Attaque du CodeCov
Début 2021, l'attaque attaque CodeCov a rappelé que même des outils de développement de logiciels fiables peuvent être compromis pour lancer des attaques à grande échelle sur la chaîne d'approvisionnement. CodeCov, un outil largement utilisé par les développeurs pour mesurer la couverture du code, a fait l'objet d'une violation malveillante qui est passée inaperçue pendant plusieurs mois.
Les attaquants ont pu infiltrer les environnements CI/CD de plusieurs organisations, exposant potentiellement la propriété intellectuelle hautement sensible, les informations d'identification et les secrets de l'infrastructure. Cette intrusion a vraiment sonné l'alarme en ce qui concerne la sécurité du pipeline CI/CD et la nécessité de renforcer les contrôles en termes de sécurité des outils de développement.
Quels sont les risques de sécurité pour la chaîne d'approvisionnement en logiciels ?
Il existe toute une série de risques critiques liés à la chaîne d'approvisionnement en logiciels, notamment :
- Bibliothèques open-source compromises: Les attaquants ciblent généralement les bibliothèques open-source parce qu'ils savent qu'elles sont largement utilisées dans tous les secteurs d'activité.
- Fournisseurs tiers malveillants: Des fournisseurs peu scrupuleux peuvent introduire des portes dérobées, des logiciels malveillants ou des pratiques peu sûres.
- Pipelines CI/CD compromis: Les pipelines d'automatisation non sécurisés peuvent être utilisés par des attaquants pour injecter du code malveillant.
- Mises à jour logicielles non sécurisées: Les attaquants peuvent intercepter les mises à jour de logiciels ou les modifier dans le but de diffuser des logiciels malveillants, voire d'obtenir un accès non autorisé.
Risque n° 1 : Logiciels libres
Les logiciels libres jouent un rôle essentiel dans le développement des logiciels modernes, de nombreuses organisations s'appuyant sur eux pour accélérer le développement et réduire les coûts.
Cependant, les logiciels libres présentent des risques uniques pour la chaîne d'approvisionnement en logiciels car ils sont normalement développés par des communautés et non par des équipes de sécurité spécialisées. Les attaquants en sont conscients et ciblent désormais activement les composants open source pour tenter d'y insérer des vulnérabilités ou des logiciels malveillants.
Pourquoi les logiciels libres sont-ils vulnérables ?
- Code non validé: Les bibliothèques et les composants open source peuvent ne pas être soumis au même niveau de test de sécurité que les logiciels commerciaux.
- Dépendances obsolètes: La plupart des projets open-source ne sont pas activement maintenus, ce qui signifie que des vulnérabilités peuvent être incluses dans le code pendant une longue période.
- Attaques de la chaîne d'approvisionnement: Les attaquants peuvent compromettre des bibliothèques populaires à code source ouvert en accédant au dépôt ou en injectant du code malveillant dans les mises à jour.
Risque n° 2 : vendeurs tiers
Les fournisseurs tiers font partie de toute chaîne d'approvisionnement en logiciels ; cependant, ils présentent certains risques, car leurs pratiques en matière de sécurité ont un effet sur l'intégrité de votre logiciel.
Le risque lié aux tiers est un risque créé dans votre système par des applications, des bibliothèques, des services ou même du matériel physique de tiers. Une position de sécurité faible de la part d'un fournisseur peut exposer stratégiquement l'ensemble de votre chaîne d'approvisionnement à un accès non autorisé, à un vol de données ou à l'injection de logiciels malveillants.
Pourquoi les fournisseurs tiers sont-ils vulnérables ?
- Mauvaises habitudes en matière de sécurité: Tous les fournisseurs n'ont pas les mêmes normes de sécurité ; certains d'entre eux sont plus vulnérables aux attaques.
- Manque de transparence: Les fournisseurs ne divulguent pas toujours leurs pratiques en matière de sécurité et il est donc difficile d'évaluer la nature du risque qu'ils apportent.
- Code non surveillé: Lorsque les fournisseurs développent des contributions de code, ce code peut inclure des vulnérabilités secrètes qui peuvent être exploitées.
- Questions de conformité: Utilisation de fournisseurs tiers qui ne respectent pas respectent pas les exigences réglementaires pourrait entraîner des problèmes juridiques et des amendes.
Risque n° 3 : pipelines CI/CD
Les pipelines d'intégration et de déploiement continus (CI/CD) constituent l'épine dorsale du développement logiciel moderne pour l'intégration, le test et le déploiement automatisés du code.
Cependant, tous ces avantages s'accompagnent de risques de sécurité considérables dans la chaîne d'approvisionnement en logiciels. S'ils ne sont pas bien sécurisés, les pipelines de CI/CD deviennent une cible très attrayante pour un attaquant désireux d'altérer le développement en y introduisant un code malveillant.
Pourquoi les pipelines CI/CD sont-ils vulnérables ?
- Accès automatisé aux systèmes critiques: Les pipelines CI/CD ont automatiquement accès aux référentiels de code, aux environnements de test et aux systèmes de production. Si un pirate accède par hasard au pipeline CI/CD, il peut manipuler de manière non détectée la construction ou le déploiement du logiciel.
- Absence de contrôles de sécurité: La plupart des organisations donnent la priorité à la vitesse de leurs pipelines CI/CD plutôt qu'à la sécurité. Il en résulte des contrôles d'accès faibles ou absents, une journalisation insuffisante et l'absence de test des vulnérabilités de sécurité.
- Intégration avec des services tiers: Un système CI/CD normal interagit avec des services et des intégrations tiers, tels que des cadres de test, des services cloud et des outils d'analyse de code, entre autres. Chaque point d'intégration devient une porte d'entrée potentielle pour un pirate si ces outils présentent des faiblesses ou de mauvaises pratiques de sécurité.
- Gestion des secrets: Les pipelines utilisent des informations sensibles telles que des clés API, des jetons et des mots de passe pour connecter une pléthore de services différents. Un mauvais stockage et une mauvaise exposition de ces secrets au sein du pipeline permettent aux attaquants de les utiliser pour pénétrer dans d'autres parties de l'environnement.
Risque n° 4 : Mises à jour des logiciels
L'un des risques les plus négligés mais les plus importants pour la chaîne d'approvisionnement en logiciels est celui des mises à jour logicielles non sécurisées. Les mises à jour logicielles sont effectuées régulièrement afin de maintenir les performances du logiciel, d'y ajouter de nouvelles fonctionnalités et, surtout, de corriger les vulnérabilités.
Cependant, lorsque ces mises à jour sont insuffisamment sécurisées, elles peuvent devenir un vecteur d'attaque critique, qui peut permettre à un pirate de distribuer des logiciels compromis directement aux utilisateurs finaux.
Pourquoi les mises à jour de logiciels sont-elles vulnérables ?
- Confiance dans le mécanisme de mise à jour: La plupart des utilisateurs et des organisations sont convaincus que les mises à jour de logiciels fournies par le fournisseur sont légitimes et sûres. Les attaquants peuvent exploiter cette confiance en insérant un code malveillant dans le processus de mise à jour.
- Attaques de l'homme du milieu (MiTM): L'attaquant peut détourner le canal de communication entre un fournisseur de logiciels et ses utilisateurs, en substituant des versions malveillantes des mises à jour à la place des versions légitimes.
- Compromis sur la chaîne d'approvisionnement: Une attaque contre les fournisseurs eux-mêmes, en particulier ceux dont les mesures de sécurité sont faibles, pour compromettre leurs serveurs de mise à jour. Les attaquants peuvent distribuer des logiciels malveillants par le biais de ce qui semble être une mise à jour logicielle légitime et contourner les mesures de sécurité traditionnelles basées sur la réputation du fournisseur.
- Mises à jour non signées ou mal signées: Mises à jour non signées ou mal signées : Les signatures numériques garantissent l'authenticité des mises à jour logicielles. Lorsque ces mises à jour ne sont pas signées ou sont signées de manière incorrecte - ou si les clés de signature ont été volées - les pirates sont en mesure de distribuer des mises à jour malveillantes en aval de la chaîne, comme si elles provenaient d'une source digne de confiance.
Gestion des risques de la chaîne d'approvisionnement et DevSecOps
La gestion des risques liés à la chaîne d'approvisionnement consiste à déterminer et à atténuer les risques liés aux fournisseurs tiers et aux composants externes utilisés dans le cadre du développement du logiciel.
DevSecOps est une approche du développement d'applications qui prend en compte la sécurité tout au long du cycle de vie du développement logiciel, de la conception au déploiement. Elle met l'accent sur la collaboration entre les équipes de développement, de sécurité et d'exploitation pour s'assurer que la sécurité est prioritaire par rapport à la fonctionnalité.
Comment sécuriser une chaîne d'approvisionnement en logiciels
La sécurisation d'une chaîne d'approvisionnement en logiciels nécessite une approche à plusieurs niveaux qui associe les personnes, les processus et la technologie. Voici les principales mesures que vous pouvez prendre pour améliorer la sécurité de votre chaîne d'approvisionnement :
- Évaluation du fournisseur: Effectuer une analyse approfondie des fournisseurs tiers et de leurs pratiques en matière de sécurité.
- Contrôle continu: Utiliser des outils pour surveiller la chaîne d'approvisionnement afin de détecter les vulnérabilités et les activités suspectes.
- Mettre en oeuvre le SBOM: Utiliser une nomenclature logicielle (SBOM) pour suivre tous les composants impliqués dans la chaîne d'approvisionnement logicielle à tous les niveaux.
- Cryptage et communication sécurisée: Des normes de cryptage strictes doivent être utilisées pour protéger les données en transit et au repos.
- Audits et tests réguliers: Auditer et tester en permanence votre chaîne d'approvisionnement en logiciels pour détecter d'éventuelles vulnérabilités.
- Effectuer des tests de sécurité automatisés: Intégrer, au moment du développement, des outils qui effectuent une analyse statique et dynamique.
- Gestion des dépendances: Utiliser des outils qui suivent et mettent à jour automatiquement les bibliothèques tierces.
- Formation à la sécurité: Tenir les développeurs informés des pratiques de sécurité les plus récentes.
- Principe du moindre privilège: Ne jamais accorder plus de droits que nécessaire aux utilisateurs et aux services afin de minimiser l'exposition à la sécurité du système.
Qu'est-ce qu'une nomenclature logicielle (SBOM) ?
Le SBOM est un enregistrement formel de tous les composants, y compris les bibliothèques tierces, nécessaires à la réalisation d'un produit logiciel donné. Un SBOM est essentiel pour suivre les dépendances et vérifier si l'un ou l'autre de ces composants reste sûr et à jour.
Les SBOM permettent à une organisation de connaître l'origine de ses logiciels et d'agir rapidement lorsqu'une vulnérabilité est découverte dans des bibliothèques ou des dépendances tierces. Ils sont essentiels dans les méthodologies de sécurité de la chaîne d'approvisionnement car ils permettent une transparence indispensable dans le processus de développement des logiciels.
Outils de tests de sécurité automatisés
Les outils de test de sécurité automatisés contribuent à l'identification précoce des vulnérabilités au cours du processus de développement afin de minimiser les risques qui pourraient conduire au déploiement d'un logiciel non sécurisé.
Analyse de la composition des logiciels (SCA)
Les outils SCA sont capables de détecter et de contrôler les bibliothèques open-source utilisées dans un projet donné en recherchant les vulnérabilités divulguées et les problèmes de licence et en veillant à ce que seuls des composants sûrs et conformes soient utilisés.
Tests statiques de sécurité des applications (SAST)
Les outils SAST analysent le code source à la recherche de failles de sécurité potentielles avant que le logiciel ne soit exécuté. Ils fournissent des informations qui permettent aux développeurs de corriger les vulnérabilités dès le début du cycle de développement.
Test dynamique de la sécurité des applications (DAST)
Outils DAST testent les applications en cours d'exécution pour détecter les vulnérabilités. Ils lancent des attaques simulées contre le logiciel pour trouver les faiblesses qu'un attaquant pourrait bien exploiter.
Sécurité de la chaîne d'approvisionnement en logiciels et sécurité des applications
Si la sécurité de la chaîne d'approvisionnement des logiciels et la sécurité des applications visent toutes deux à protéger les logiciels contre les menaces, elles se concentrent sur des aspects différents.
La sécurité de la chaîne d'approvisionnement des logiciels se concentre sur la protection des composants et des fournisseurs qui contribuent au processus de développement des logiciels. Elle implique l'évaluation d'outils tiers, la sécurisation des pipelines CI/CD et la gestion des dépendances open-source.
La sécurité des applications se concentre sur la protection du produit logiciel final, y compris le code, les données et l'infrastructure. Cela implique des évaluations de vulnérabilité, des tests de pénétration et la sécurisation des API.
Essentiellement, la sécurité de la chaîne d'approvisionnement s'intéresse aux contributeurs externes à la sécurité des logiciels, tandis que la sécurité des applications se concentre sur la sécurisation du logiciel lui-même.
Pour étendre votre périmètre de sécurité, envisagez Verimatrix XTDune solution complète conçue pour détecter et répondre aux menaces de la chaîne d'approvisionnement et des applications en temps réel. Pour en savoir plus ici.