Sécurité sur la chaîne d'approvisionnement logicielle

Les cadres et approches modernes du développement de logiciels sont axés sur la rapidité et la fiabilité de la livraison de logiciels, ainsi que sur l'appropriation partagée entre les personnes concernées.

Outre la pratique DevOps qui consiste à virer à gauche en termes de sécurité, de nombreuses autres pratiques DevOps contribuent à la fourniture de logiciels plus sécurisés. Une plus grande collaboration entre les personnes concernées, une meilleure visibilité sur le travail, des builds reproductibles, des tests automatisés, des modifications incrémentielles sont autant de pratiques qui contribuent à la sécurité logicielle. D'ailleurs, le rapport Accelerate sur l'état du DevOps en 2022 a révélé que les cultures où la confiance est plus élevée sont plus susceptibles d'adopter des pratiques visant à renforcer la chaîne d'approvisionnement logicielle, et l'utilisation de la CI/CD facilite la mise en œuvre de pratiques de sécurité.

Toutefois, les frameworks de développement modernes ne fournissent pas de conseils permettant aux entreprises de comprendre les menaces envers leurs logiciels, d'évaluer leur capacité à détecter et à gérer les menaces, et à mettre en œuvre des mesures d'atténuation. Ils ont également tendance à se concentrer spécifiquement sur le code et les processus d'une organisation, et négligent les facteurs externes susceptibles d'affecter l'intégrité des applications. Par exemple, une attaque qui pirate un package logiciel Open Source affecte tout code qui repose directement ou indirectement sur ce package. Ce type d'attaques sur la chaîne d'approvisionnement logicielle a considérablement augmenté depuis 2020.

Chaînes d'approvisionnement logicielles

Une chaîne d'approvisionnement logicielle comprend l'ensemble du code, des personnes, des systèmes et des processus qui contribuent au développement et à la livraison de votre logiciel, à l'intérieur et à l'extérieur de votre organisation. It includes:

  • Le code que vous créez, ses dépendances et les logiciels internes et externes que vous utilisez pour développer, compiler, empaqueter, installer et exécuter votre logiciel.
  • Processus et règles d'accès au système, de test, d'examen, de surveillance et de retour d'informations, de communication et d'approbation
  • Systèmes de confiance permettant de développer, de créer, de stocker et d'exécuter votre logiciel et ses dépendances

Compte tenu de la portée et de la complexité de la chaîne d'approvisionnement logicielle, il existe de nombreuses façons d'introduire des modifications non autorisées dans les logiciels que vous mettez à la disposition de vos utilisateurs. Ces vecteurs d'attaque couvrent l'ensemble du cycle de vie du logiciel. Bien que certaines attaques soient ciblées, telles que l'attaque sur le système de compilation SolarWinds, d'autres menaces sont indirectes ou entrent dans la chaîne d'approvisionnement par des faiblesses dans un processus ou par une négligence.

Par exemple, dans un article de blog concernant la faille d'exécution à distance dans Apache log4j de décembre 2021, l'équipe Google Open Source Insights a constaté que plus de 17 000 packages étaient affectés dans Maven Central. La plupart des packages affectés ne dépendaient pas directement du package log4j-core vulnérable, mais avaient des dépendances qui l'exigeaient.

Les lacunes au niveau des processus, telles que l'absence de revue de code ou de critères de sécurité pour le déploiement en production, peuvent permettre à un code malveillant d'entrer involontairement dans la chaîne d'approvisionnement. De même, un mauvais code peut pénétrer dans votre logiciel si vous compilez avec du code source en dehors de votre système de contrôle des versions approuvé, ou si vous empaquetez et déployez des applications à partir de systèmes situés en dehors de votre système de compilation de confiance et de dépôts d'artefacts.

Selon l'Rapport sur l'état de la chaîne d'approvisionnement logicielle en 2021, l'utilisation de logiciels Open Source et les attaques contre les chaînes d'approvisionnement logicielles ont fortement augmenté entre 2020 et 2021:

  • En 2021, les attaques sur la chaîne d'approvisionnement logicielle ont augmenté de 650% d'une année sur l'autre.
  • La disponibilité et la demande de packages Open Source continuent d'augmenter, avec une augmentation de 73% des téléchargements de composants Open Source d'une année sur l'autre en 2021.
  • Les failles sont les plus courantes dans les projets Open Source les plus populaires.

Pour protéger l'intégrité de vos logiciels, il est important de comprendre votre stratégie de sécurité, c'est-à-dire dans quelle mesure votre organisation est prête à détecter les menaces, à y répondre et à les corriger.

Exigences de conformité et cadres d'évaluation

Les préoccupations grandissantes à propos de la sécurité de la chaîne d'approvisionnement ont conduit à la création de nouvelles réglementations gouvernementales propres à cette sécurité, telles que:

De nouveaux frameworks émergent pour aider les entreprises à évaluer leur stratégie de sécurité et à en savoir plus sur les mesures d'atténuation des menaces.

Ces frameworks appliquent des pratiques de sécurité logicielle établies et les structurent dans un format qui vous aide à identifier les menaces de sécurité que vous devez gérer et les mesures à prendre pour les atténuer.

Protégez votre chaîne d'approvisionnement logicielle sur Google Cloud

Software Delivery Shield fournit une solution de sécurité sur la chaîne d'approvisionnement logicielle entièrement gérée sur Google Cloud. Il intègre les bonnes pratiques, y compris celles de frameworks tels que SLSA et SSDF du NIST. Vous adoptez les composants de la solution progressivement, en fonction de vos priorités et de vos besoins.

Étapes suivantes