À mesure que le cycle de vie de la chaîne d'approvisionnement des logiciels progresse du code source aux artefacts exécutables, la phase de construction constitue un moment critique. Pourtant, cette phase de transformation est également exposée à une série de menaces qui peuvent compromettre l'intégrité et la fiabilité du logiciel. build securityCes menaces peuvent s'infiltrer dans le processus de construction par diverses méthodes, notamment en contournant les règles établies. CI/CD pipeline, en modifiant le contrôle post-source du code, en compromettant le processus de construction lui-même ou en manipulant les référentiels d'artefacts. Dans cet article de blog, nous approfondissons ces menaces et examinons les attaques les plus répandues liées à la création de chaînes d’approvisionnement logicielles. Ce contenu poursuit notre série de blogs explorant software supply chain security tout au long de l' SDLC.
L'étape de construction dans le cycle de vie du développement logiciel
L'étape de construction du cycle de vie de la chaîne d'approvisionnement logicielle englobe le processus de transformation du code source en artefacts logiciels exécutables. Cette étape implique la compilation, la liaison et le packaging du code source, ainsi que la génération de packages d'installation et de fichiers de configuration.
Build security Les menaces sont des vulnérabilités qui pourraient permettre à un adversaire d'introduire des modifications non autorisées dans le logiciel pendant le processus de construction sans modifier le code source. Ces menaces peuvent être introduites par diverses méthodes, telles que la compromission de l'environnement de construction ou l'exploitation des vulnérabilités des outils de construction.
Menaces les plus courantes liées à la chaîne d'approvisionnement logicielle – Attaques de construction
Bypass CI/CD
Il s’agit de la pratique consistant à contourner les règles établies. CI/CD (intégration continue et livraison continue) pipeline pour créer et publier directement des logiciels sans subir les processus rigoureux de tests, de vérification et d'audit qui sont généralement appliqués par le fonctionnaire pipeline. Cela peut être fait en construisant manuellement le logiciel en dehors du CI/CD environnement ou en utilisant des outils ou des scripts permettant des modifications non autorisées du processus de construction. Un exemple de ce type d'attaque vectorielle était Attaque de Jenkins. En 2022, des hackers ont infiltré le build pipeline d'un projet de logiciel open source populaire appelé Jenkins. Les pirates ont injecté du code malveillant dans un fichier Jenkins, un script définissant le processus de compilation. Ce code malveillant leur a permis de contourner le CI/CD pipelineet injectent leur code dans le processus de construction. Ce code est ensuite exécuté sur les systèmes des organisations qui ont installé le logiciel.
Modifier le code après le contrôle de source
Cette pratique implique d'apporter des modifications non autorisées au code source une fois qu'il a été commitconnecté à un système de contrôle de source fiable (SCS), puis en créant le logiciel à l'aide de ce code modifié. Cela peut être fait en modifiant directement le code sur le poste de travail d'un développeur ou en utilisant des outils ou des scripts externes pour injecter du code malveillant dans le processus de construction. Un exemple de cette attaque vectorielle est l’attaque GitLab en 2022. Des pirates ont infiltré la version pipeline of gitlab ceLes pirates ont injecté du code malveillant dans GitLab CI/CD pipeline, qui est un outil qui automatise la build security processus. Le code malveillant a permis aux pirates de modifier le code après l'avoir vérifié dans le contrôle de source. Cela leur a permis d'injecter leur code dans le logiciel, qui a ensuite été exécuté sur les systèmes des organisations qui ont installé le logiciel.
Processus de création de compromis
Cela implique de manipuler ou de modifier le processus de build lui-même, soit via un accès direct à l'environnement de build, soit en exploitant les vulnérabilités des outils de build ou des dépendances tierces. Cela peut être fait pour introduire du code malveillant dans la sortie de la construction, altérer la provenance de la construction ou perturber complètement le processus de construction. L'exemple le plus célèbre de cette attaque vectorielle est le Attaque de SolarWinds. Un attaquant avait obtenu un accès non autorisé à la plateforme de build de SolarWinds, un système utilisé pour compiler et empaqueter le logiciel SolarWinds Orion. Ce script a injecté du code malveillant dans le logiciel SolarWinds Orion compilé. Lorsque les utilisateurs installaient le logiciel compromis, le code malveillant était exécuté sur leurs systèmes, donnant à l'attaquant un accès non autorisé à leurs systèmes. L'attaquant a également pu voler des données sensibles de leurs systèmes, telles que les informations d'identification, la propriété intellectuelle et les informations sur les clients.
Dépôt d'artefacts compromis
Il s'agit de l'accès non autorisé ou de la manipulation d'un référentiel d'artefacts, où les progiciels et les binaires sont stockés pour être distribués à des utilisateurs internes ou externes. Les attaquants peuvent exploiter cette vulnérabilité pour introduire du code malveillant, altérer l'authenticité du logiciel ou perturber le processus de déploiement. Un exemple de cette attaque vectorielle était Les RubyGems en 2022. Des pirates ont infiltré le référentiel d'artefacts de RubyGems. Les pirates ont remplacé un artefact légitime par un autre malveillant, qui a ensuite été téléchargé par des milliers d'organisations créant des logiciels avec Ruby on Rails. L'artefact malveillant a permis aux pirates informatiques d'exécuter du code arbitraire sur les systèmes des organisations qui ont installé le logiciel. Cela pourrait potentiellement leur permettre de voler des données, d’installer des logiciels malveillants ou de perturber les opérations.
Remarques finales
Alors que les organisations continuent d’adopter des pratiques de développement de logiciels qui mettent l’accent sur l’automatisation et la livraison continue, la sécurisation du processus de création de logiciels n’a jamais été aussi importante. En mettant en œuvre des mesures de sécurité robustes tout au long de la phase de développement, les organisations peuvent réduire considérablement leur risque d'être victimes d'attaques malveillantes susceptibles de compromettre l'intégrité et la sécurité de leurs logiciels.
Les stratégies décrites dans cet article de blog et les exemples fournis rappellent que la phase de construction est un point vulnérable de la chaîne d'approvisionnement logicielle. Les organisations doivent prendre en compte ces menaces et mettre en œuvre les mesures de sécurité nécessaires pour protéger leurs logiciels contre les attaques. Ce faisant, ils peuvent garantir l'intégrité, la sécurité et la fiabilité de leurs logiciels pour leurs utilisateurs et clients.
Rejoignez notre voyage vers un écosystème logiciel sécurisé
Ne manquez pas cette opportunité de garder une longueur d'avance en évitant les menaces liées à la chaîne d'approvisionnement logicielle. Abonnez-vous à notre blog dès aujourd'hui et soyez le premier à recevoir nos dernières informations, garantissant ainsi que votre organisation reste résiliente et sécurisée face à l'évolution des menaces. Ensemble, nous pouvons créer un écosystème logiciel plus robuste et plus sécurisé pour tous.
Regardez notre démo vidéo





