Pour mieux se préparer aux potentielles attaques de la chaîne d’approvisionnement, il est nécessaire pour les entreprises d’améliorer leur niveau de compréhension grâce à la visibilité, leur gestion grâce à la gouvernance et leur anticipation grâce à un déploiement continu.
Améliorer la sécurité en renforçant la résilience de la chaîne d’approvisionnement logicielle
De la tentative d’attaque “backdoor” (ou de porte dérobée) dans XZ Utils à la prise de contrôle et à la distribution de logiciels malveillants dans le projet Polyfill JS, les attaques de la chaîne d'approvisionnement logicielle posent un véritable défi à la communauté DevSecOps. Ces incidents, qui peuvent même surprendre les professionnels les plus aguerris, ont mis en évidence le caractère inévitable de ces menaces et leurs conséquences potentiellement désastreuses.
Les entreprises doivent alors renforcer leur résilience en mettant l'accent sur trois éléments essentiels dans leurs environnements de création de logiciels : la visibilité, la gouvernance et le déploiement continu. C'est en se concentrant sur ces domaines que les organisations pourront renforcer leurs défenses et réduire le temps nécessaire pour se rétablir des cyberattaques.
La visibilité : Déterminer un état dans les systèmes dynamiques
Les experts en sécurité possèdent des connaissances limitées et temporaires sur les systèmes logiciels qu'ils défendent. Alors que les données qui alimentent les opérations sont des représentations de systèmes informatiques très dynamiques et complexes, les représentations des contrôles de sécurité sont elles-mêmes une référence ponctuelle de l'état de la sécurité.
adaptables. Cependant, la grande majorité des périmètres de sécurité aujourd'hui sont statiques ou basées sur des approches intuitives.
À l'inverse, le nombre de variables inconnues dans les environnements informatiques à grande échelle est illimité. Alors que le code peut être mis à jour des centaines, voire des milliers de fois par jour, les changements d'infrastructure peuvent effacer les périmètres de sécurité précédemment définis. Il est donc possible que les dépendances préalables aient des répercussions importantes sur la sécurité.
Pour se préparer au prochain incident, les professionnels de la sécurité doivent avoir une compréhension en temps réel de leur environnement et réduire le nombre d'inconnues. Par exemple, l'utilisation d'une nomenclature logicielle (SBOM) est cruciale pour les logiciels commerciaux comme pour les logiciels libres (OSS). En effet, elle fournit un inventaire complet des composants utilisés dans les logiciels et permet d'identifier rapidement ceux qui sont vulnérables lors de l’apparition de nouvelles menaces. Pour maximiser leur utilité et leur valeur, les inventaires doivent servir de source principale pour chaque actif, en prenant en charge l'indexation, les API extensibles et les interfaces iQueryable.
La compréhension du niveau de maturité des logiciels d'une organisation peut également contribuer à l'élaboration de stratégies de sécurité. Comme ils ne sont pas déployés aussi souvent ou entretenus aussi fréquemment, les systèmes les plus anciens sont davantage sujets des attaques ou des vulnérabilités de tiers. D'autre part, les nouveaux logiciels sont plus sujets aux problèmes dits de "first-party", tels que des failles dans la business logic ou, plus rarement, des attaques d'un type entièrement nouveau. Par ailleurs, la combinaison de nouveaux et d'anciens logiciels peut entraîner des risques en raison de la cohabitation de périmètres de sécurité qui ont été redéfinies ou qui ne sont plus efficaces.
La gouvernance : Pour une gestion de la chaîne d'approvisionnement logicielle
Comprendre les systèmes logiciels d'une organisation ne suffit plus. La mise en place d’une bonne gouvernance, avec un cadre de politiques, de processus et de contrôles garantissant des pratiques sûres, souvent placé sous la surveillance de la direction, est essentielle. En effet, elle permet d’assurer le maintien cohérent des mesures de sécurité et de la responsabilité tout au long du cycle de vie des logiciels.
Plusieurs éléments doivent être pris en compte pour créer des logiciels sécurisés dès leur conception (security-by-design) :
- Construire des logiciels reproductibles et maintenir des mesures "par service" pour assurer leur sécurité.
- Effectuer des contrôles pour s'assurer que les périmètres de sécurité fonctionnent comme prévu.
- Utiliser des modèles de conception “infrastructure-as-code” (IaC) préétablis.
- Construire des SBOM capables d'être exploités par des équipes et des outils d'alerte sur les opérations de sécurité et les vulnérabilités.
- Automatiser les contrôles de sécurité pour s'assurer que les principes de sécurité par défaut sont respectés.
- Intégrer la validation par l'IA dans le SDLC afin d'améliorer l'efficacité, réduire les erreurs et fournir des informations plus approfondies sur le processus de développement.
- Mettre en œuvre des policy-as-code (ou politiques en tant que code) pour automatiser la gestion et l'application des politiques de sécurité dans les services cloud, les applications, les réseaux et les données. Cela permet de garantir une couverture de sécurité cohérente et complète.
- Concevoir des périmètres de sécurité qui délimitent les domaines à risque dès la conception.
Les entreprises peuvent également envisager de mettre en place un Open Source Program Office (OSPO) pour renforcer la sécurité des logiciels en open source. Les équipes intégrées à ce bureau sont chargées de la gestion de l'utilisation des logiciels open source, de la supervision des pratiques de sécurité, de l’entretien des relations avec la communauté open source. Elles ont également pour mission de s’informer des dernières évolutions en matière de sécurité et de conformité, et de contrôler la fiabilité et la sécurité des composants open source.
Évaluation continue : anticiper les inconnues
Le test et la surveillance continus d'un environnement sont essentiels à la résilience d'une entreprise face aux vulnérabilités qui mettent à mal la sécurité de la chaîne d'approvisionnement logicielle. Le déploiement continu permet de tester automatiquement les modifications de code et de les déployer en production dès qu'elles passent les tests automatisés, jusqu’à des centaines ou des milliers de fois par jour. Cette approche va au-delà de l'intégration et de la livraison en continu. En effet, en automatisant l'ensemble du processus de déploiement, cette méthode permet d'améliorer la qualité des logiciels et d'en accélérer la livraison. Cependant, le déploiement continu n'est possible que lorsque des modules de visibilité et de gouvernance sont mis en place.
De nombreux développeurs détestent écrire des tests. De plus, la portée des tests est souvent inférieure à celle souhaitée par les équipes. Une couverture de test complète, comprenant des tests unitaires et d'intégration, garantit que chaque partie d'un environnement est vérifiée pour détecter les erreurs de façon isolée et lors d'interactions avec d'autres composants. Ici, l'IA générative (GenAI) peut grandement contribuer à l'automatisation ou à l'accélération d'un travail fastidieux. Ainsi, les équipes d'ingénieurs peuvent gagner en rapidité, mais aussi garantir en permanence la sécurité et la résilience de leurs logiciels.
Le contrôle automatisé des périmètres de sécurité permet également de vérifier qu'ils sont impénétrables et bien entretenus. Il s'agit ainsi d'une première ligne de défense contre les failles potentielles. La supervision des environnements de production est également essentielle pour détecter les anomalies ou les comportements inattendus susceptibles de signaler un problème de sécurité. Enfin, la découverte programmatique continue est essentielle pour que les inventaires restent complets et cohérents.
Renforcer la résilience face à l'inconnu
La cyber-résilience est la capacité d'une organisation à s'adapter et à faire évoluer son dispositif de sécurité pour rester à l'affût de la prochaine menace. Pour se préparer, les professionnels de la sécurité doivent s'assurer que leur écosystème logiciel est bien instrumenté pour une réponse et une résilience efficace, en minimisant la fenêtre d'exposition de l'identification à la remédiation.
En améliorant la compréhension grâce à la visibilité, en gérant grâce à la gouvernance et en anticipant grâce au déploiement continu, les organisations seront mieux préparées à la prochaine attaque de la chaîne d'approvisionnement logicielle.