Risques courants de la chaîne d’approvisionnement logicielle et comment les atténuer

D’après une Rapport Gartner, jusqu'à 45 % des organisations dans le monde auraient subi une attaque contre leur chaîne d'approvisionnement logicielle d'ici 2025. Ce type d'attaque devient fréquent et difficile à gérer en raison des changements dans la façon dont les produits logiciels sont construits de nos jours.

Aujourd’hui, les ingénieurs logiciels n’ont plus besoin de créer des applications à partir de zéro. Autant que 90 % d'une application peut être construit avec des codes tiers, des bibliothèques discrètes et des logiciels Open Source. Bien que cette approche du développement de logiciels contribue à simplifier le processus de création d'applications et à gagner beaucoup de temps, elle augmente également les menaces et les vulnérabilités de sécurité, car des packages malveillants peuvent être transmis via des codes et des logiciels tiers.

En définitive, c'est devient de plus en plus difficile pour maintenir l’intégrité des chaînes d’approvisionnement en logiciels. La récente augmentation des risques liés à la chaîne d’approvisionnement logicielle et les violations très médiatisées qu’elles provoquent montrent à quel point le problème des vulnérabilités dans la chaîne d’approvisionnement est grave.

Conformément à cette tendance, il est devenu impératif pour les organisations de prendre des mesures pour garantir l'intégrité et la sécurité de leurs logiciels. Dans cet article, nous explorerons les risques courants de la chaîne d’approvisionnement logicielle et les différentes façons dont les organisations peuvent atténuer ces vulnérabilités et protéger leurs logiciels contre les attaques.

Les vulnérabilités connues des chaînes d’approvisionnement logicielles

Les logiciels tiers peuvent constituer plusieurs menaces pour la chaîne d'approvisionnement en logiciels. Les attaquants peuvent utiliser diverses manières pour exploiter les vulnérabilités des systèmes qui dépendent de ce logiciel tiers. Certaines de ces méthodes d'attaque incluent l'introduction de code malveillant dans le logiciel, la confusion des dépendances, le typosquatting, etc.

Cependant, en raison de la complexité du développement logiciel et de la rapidité avec laquelle les nouvelles applications doivent être livrées sur le marché numérique hautement compétitif d'aujourd'hui, les ingénieurs logiciels n'ont d'autre choix que de s'appuyer sur des outils tiers et des bibliothèques externes pour créer des applications le plus rapidement possible. .

Des vulnérabilités peuvent être introduites dans les applications en raison de :

 

  • Le code que vous écrivez : mauvaises pratiques de sécurité dans le code personnalisé que vous avez écrit vous-même
  • Ce avec lequel vous créez : les outils de développement logiciel utilisés pour créer des applications peuvent être compromis, exposant votre logiciel à des failles de sécurité.
  • Ce que vous achetez : certaines applications SaaS (Software-as-a-Service) disponibles dans le commerce utilisées pour le développement d'applications peuvent contenir des vulnérabilités.
  • Ce que vous utilisez : de nombreuses applications dépendent de bibliothèques open source tierces qui peuvent constituer le maillon faible de votre chaîne d'approvisionnement.

 

Compte tenu des nombreux maillons faibles potentiels de chaque chaîne d'approvisionnement en logiciels, les organisations doivent être proactives pour prévenir et remédier vulnérabilités de la chaîne d'approvisionnement logicielle. Pour ce faire, les ingénieurs logiciels doivent comprendre ces risques ou menaces potentiels auxquels leurs projets logiciels peuvent potentiellement être confrontés. Certaines de ces menaces incluent :

Package de code malveillant intégré

L’une des actions des attaquants lors d’une attaque contre la chaîne d’approvisionnement logicielle est d’infecter les points finaux concernés avec des logiciels malveillants. Ce malware peut être un virus, un ransomware, un cheval de Troie ou un logiciel espion susceptible de faire des ravages sur les logiciels et les systèmes informatiques concernés.

Les attaquants choisissent souvent des cibles dont les systèmes disposent d'autorisations de haut niveau sur les appareils des utilisateurs. Un exemple notable d’une telle attaque est la cyberattaque de 2021 subie par Kaseya, un développeur de solutions informatiques dont les clients comprenaient des fournisseurs de services gérés et des entreprises clientes.

L'une des principales solutions informatiques proposées par Kaseya est VSA, un outil unifié de surveillance et de gestion à distance. Le serveur VSA était hautement fiable sur les appareils des clients et en l'infiltrant, les attaquants ont pu contourner les contrôles d'authentification sur les clients connectés. De cette façon, ils pourraient télécharger des charges utiles malveillantes sans entrave. L'attaque de Kaseya est similaire à celle Le fiasco de la sécurité de SolarWinds, où les attaquants ont pu diffuser des mises à jour malveillantes à des milliers de clients, les exposant ainsi à des vulnérabilités de sécurité supplémentaires.

Exfiltration de données sensibles

Toute attaque ayant pour objectif le vol de données peut être classée comme une attaque d’exfiltration de données. On dit que l’exfiltration de données se produit lorsqu’un acteur malveillant effectue un transfert non autorisé de données sensibles d’un système cible vers un autre emplacement. Un exemple notable d’attaque d’exfiltration de données survenue à la suite d’une attaque contre la chaîne d’approvisionnement est le Attaque de novembre 2013 contre Target, l'une des plus grandes entreprises de vente au détail aux États-Unis.

Les attaquants ont pénétré dans les systèmes de Target en utilisant les informations d'identification qu'ils avaient volées auprès d'un fournisseur tiers. Cette attaque leur a donné un accès non autorisé à la base de données du service client de Target, leur permettant de capturer les noms, numéros de téléphone, adresses e-mail, informations de carte de paiement et autres données sensibles des clients. Les informations de carte de paiement de 41 millions de clients cibles ont été exfiltrées vers les serveurs de l'attaquant, tandis que les coordonnées de plus de 60 millions de clients ont été exposées.

Exécution de code à distance

L'exécution de code à distance (également appelée exécution de code arbitraire) est un type de cyberattaque dans lequel un attaquant obtient l'accès pour commander le fonctionnement d'un appareil ou d'un ordinateur à distance. Généralement, l'attaquant injecte du code malveillant dans un fichier, une chaîne ou un package entier qu'une victime a l'intention d'exécuter sur son système. Cela permet à l’attaquant de lancer une attaque à grande échelle pouvant compromettre l’intégralité d’une application Web ou d’un serveur Web. Les attaques par exécution de code à distance peuvent se produire de deux manières courantes dans les attaques de la chaîne d'approvisionnement logicielle via le typosquattage et la confusion des dépendances :

Typosquattage

Pour exécuter ce type d'attaque, les acteurs malveillants créent généralement un package compromis identique aux dépendances que vous souhaitez installer. Habituellement, le package malveillant a une orthographe légèrement différente. L'intention est de profiter d'une éventuelle erreur de frappe dans une commande d'installation. Le package malveillant fonctionne normalement comme la dépendance que l'ingénieur avait l'intention d'installer, mais il exécute également un code malveillant qui y a été intégré en même temps.

Confusion des dépendances

La confusion des dépendances est une autre approche utilisée par les attaquants pour lancer une exécution de code à distance dans le cadre d’une attaque contre la chaîne d’approvisionnement logicielle. Avec ce type d'attaque, les acteurs malveillants créent un package sur une bibliothèque externe portant le même nom qu'un package de dépendance interne. Étant donné que les deux dépendances portent le même nom, le gestionnaire de packages peut installer le code malveillant à la place. Cela permet à l’attaquant de pénétrer dans l’environnement d’intégration continue/déploiement continu (CI/CD) de l’application logicielle en cours de développement.

Comment atténuer les risques dans la chaîne d’approvisionnement logicielle ?

Au cours des dernières années, les attaques contre la chaîne d’approvisionnement logicielle sont devenues l’une des plus grandes cybermenaces auxquelles sont confrontées les organisations du monde entier. L'atténuation des risques d'attaques de ce type est devenue un élément important de la cybersécurité et de la gestion des risques dans chaque organisation, en particulier celles qui dépendent d'un logiciel tiers ou d'un autre. Plutôt que de faire aveuglément confiance aux plateformes tierces et aux référentiels publics, il est préférable de prendre des précautions et d'effectuer les vérifications nécessaires sur ce qui est importé dans votre système. Lors de l’élaboration de votre plan de gestion des risques de la chaîne d’approvisionnement logicielle, vous pouvez utiliser les moyens suivants pour atténuer les risques d’attaques de la chaîne d’approvisionnement logicielle :

 

Auditez votre logiciel

Ce qui rend les attaques de la chaîne d’approvisionnement si difficiles à combattre, c’est que le risque dépasse vos propres systèmes. Pour atténuer le risque de ces attaques, vous ne devez pas simplement protéger votre propre périmètre. Au lieu de cela, votre stratégie doit être davantage axée sur la garantie que les systèmes logiciels externes connectés au vôtre sont tout aussi sécurisés.

Cependant, cela est souvent difficile à réaliser, surtout lorsque vous ne disposez même pas d'informations suffisantes sur les systèmes externes auxquels vous êtes connecté ou sur les dépendances de code utilisées dans votre application. La première étape pour atténuer le risque d’attaque de la chaîne d’approvisionnement consiste à réaliser un audit complet de votre chaîne d’approvisionnement logicielle.

Tout récemment, suite à l'attaque SolarWinds de 2020 qui a touché plusieurs agences gouvernementales américaines, le gouvernement fédéral des États-Unis a fait des audits de logiciels une obligation légale pour chaque entreprise vendant des logiciels à une agence gouvernementale américaine. Vous devriez également faire la même chose pour tous vos systèmes. Garder un enregistrement clair de toutes vos dépendances logicielles est le seul moyen de savoir si votre système est exposé au risque d'attaques de la chaîne d'approvisionnement.

En plus d'auditer immédiatement vos dépendances logicielles, vous devez également auditer à nouveau votre système à chaque nouvelle version de votre logiciel. Vous devrez peut-être également aller au-delà de l’audit manuel en effectuant un audit plus approfondi permettant d’identifier tous les types de dépendances, y compris les dépendances transitoires.

Audit automatisé

Outre l'audit manuel de vos systèmes, vous devrez peut-être également définir votre audit sur pilote automatique. L'automatisation joue un rôle clé dans la détection des vulnérabilités dans n'importe quelle partie de votre logiciel. Les analyses automatisées permettent de découvrir rapidement les vulnérabilités de votre code logiciel afin qu'elles puissent être corrigées avant que le code ne soit mis en production. L'utilisation de codes tiers dans le développement de logiciels continuera de croître et les acteurs malveillants cibleront continuellement ces systèmes comme étant un maillon faible pour lancer des attaques contre les logiciels de la chaîne de valeur. La seule façon de les arrêter est de rester continuellement au courant de la sécurité de votre système en l’auditant continuellement.

Préparer une nomenclature logicielle

La nomenclature du logiciel (SBOM) est devenu l'un des principaux moyens d'assurer la sécurité de vos logiciels et d'atténuer les risques liés à la chaîne d'approvisionnement. Ce document est une métadonnée formelle lisible par machine conçue pour identifier tout le contenu d'un progiciel. Il détaille également d'autres informations vitales telles que les données de licence et les droits d'auteur de tous les composants utilisés dans la création d'un produit logiciel.

Le concept de préparation d’une nomenclature n’est pas entièrement nouveau. Historiquement, il tire son origine du monde manufacturier. Ici, chaque produit fabriqué reçoit une nomenclature qui sert d'inventaire de tous les éléments inclus dans le processus de fabrication de ce produit.

Image sur SBOM

 

Le même principe peut être appliqué à la gestion des risques de la chaîne d’approvisionnement logicielle. Le SBOM détaille la partie de votre application que vous avez créée à partir de zéro, tout en répertoriant également toutes les parties que vous avez obtenues auprès de fournisseurs tiers. De cette façon, lorsqu’une vulnérabilité est découverte, vous pouvez facilement retracer sa source.

Les SBOM sont destinés à être partagés entre diverses organisations qui utilisent un composant logiciel. Cela assure la transparence sur tous les composants utilisés par tous les acteurs d’une chaîne d’approvisionnement logicielle. En tant qu'organisation soucieuse de la sécurité de vos logiciels, vous devez faire des SBOM une priorité. Avant d'ajouter un composant à votre produit logiciel, il serait utile d'obtenir une nomenclature du fournisseur. Il sera ainsi plus facile de répondre aux défis et aux vulnérabilités en matière de sécurité.

Développer un cadre de gestion des risques

Pour atténuer les risques d’attaques de la chaîne d’approvisionnement logicielle, il est toujours préférable d’adopter une approche proactive plutôt que d’attendre qu’une attaque se produise. En décrivant au préalable les scénarios d’attaque possibles, vous pouvez évaluer votre capacité à les combattre à l’avenir.

Dans le cadre de vos efforts de gestion des risques liés à la chaîne d’approvisionnement logicielle, vous devez développer un moyen d’évaluer la probabilité qu’un attaquant compromette votre système. Vous pourrez ainsi déterminer les stratégies préventives à adopter pour limiter ces risques ainsi que le plan d’urgence que vous devez mettre en place pour faire face au risque.

Former tous les membres de votre organisation à la manière de réagir aux attaques de la chaîne d'approvisionnement est un autre élément essentiel de votre cadre de gestion des risques. Cela permettra à chacun d’être vigilant pour anticiper de telles attaques et réagir de manière appropriée si elles se produisent.

Conclusion

Les attaques contre la chaîne d’approvisionnement logicielle continueront d’exposer les organisations à diverses formes de risques. Ainsi, les ingénieurs ne peuvent plus supposer que les packages tiers qu’ils utilisent pour créer, déployer et maintenir leurs applications logicielles sont sûrs et correctement entretenus. En fait, la principale raison pour laquelle les attaques contre la chaîne d’approvisionnement logicielle sont devenues plus courantes qu’auparavant est en partie due à la dépendance accrue à l’égard de codes tiers lors de la création d’applications logicielles. Pour atténuer ces risques, vous devez faire l'inventaire de votre chaîne d'approvisionnement logicielle et mettre en place des mesures pour minimiser l'impact de ces menaces sur votre système afin de prévenir les violations majeures et les conséquences qui en découlent.