Ajouter un commentaire

Par :
Prakash Sethuraman

jeu, 10/02/2022 - 11:28

Alors que les failles de sécurité ne cessent de menacer les entreprises à travers le monde, de plus en plus de dirigeants considèrent la protection de leur chaîne logicielle comme une priorité. La question n'est plus de savoir s'ils veulent ou non sécuriser leur système, mais s'ils le font correctement.   

Si vous n'êtes pas familier avec le terme "chaîne logicielle", il vous faut absolument vous informer sur ce sujet et le comprendre. Il s'agit essentiellement de tous les composants de vos logiciels et de la chaîne de procédures que vous suivez pour en créer et en lancer de nouveaux. Ce sont les matières premières de votre application, y compris le code que vous créez, ainsi que les logiciels libres, les programmes et outils tiers propriétaires, les éléments binaires, les builds, les scripts de packaging et toutes les dépendances nécessaires à l'exécution de votre logiciel. C'est aussi l'infrastructure sous-jacente et même le pipeline de build automatisé lui-même. Tous ces composants et processus constituent des points de vulnérabilité dans la chaîne logicielle, susceptibles de réduire la sécurité globale de vos systèmes - et de créer ainsi des risques pour votre entreprise et, en fin de compte, pour vos clients.    

Voici donc les trois éléments essentiels à sécurité de votre chaîne logicielle.

Développer un code propre

Avant de rentrer dans le vif du sujet, il est important de rappeler l'importance d'un code propre, c'est-à-dire sécurisé. Il constitue le pilier de la sécurité globale des applications, de l'efficacité du développement et de la rapidité de publication. Si votre code n'est pas propre, il peut causer une multitude de problèmes en cascade, surtout si le problème est découvert après la mise en production. Dans ce cas, l'identification et la résolution du problème peuvent être beaucoup plus difficiles.  

Pour obtenir un tel code, vous devez prendre toutes les mesures pour vous assurer d'écrire des lignes propres dès le départ, ce qui implique généralement d'identifier et de corriger les erreurs en vérifiant les dépendances, en analysant le code, en signant les binaires, etc. En d'autres termes, vous devez intégrer des mesures de validation de la sécurité dès le début de votre processus de développement. Il est important que les développeurs comprennent bien les mesures de sécurité préventives lorsqu'ils créent du code, mais imposer la charge de la sécurité logicielle aux seuls développeurs ne permet pas de mettre suffisamment l'accent sur la sécurité dans les processus de livraison et de production. Il est donc également important que cette responsabilité soit partagée.

Voici quelques mesures à prendre pour commencer :

  •  Assurez-vous que votre code est sécurisé dès la phase de conception. En d'autres termes, connaissez la provenance de tout artefact préconstruit que vous utilisez pour vous assurer qu'il est validé, vérifié et sécurisé.
  •  Adoptez un contrôleur. Il s’agit de l'outil qui vous aide à surveiller de manière proactive votre environnement pour repérer les problèmes afin de les résoudre le plus rapidement possible.
  • Automatisez autant que possible. Vous éliminerez ainsi les erreurs humaines et les oublis qui peuvent causer des difficultés par la suite.   

Adopter un système de mesure du "temps moyen d'atténuation" 

Vous pourriez penser qu'une fois votre code déployé, il est "hors de vue, hors d'esprit", mais cela ne devrait pas être le cas. Les mises en production étant fréquentes et rapides, vous ne pouvez pas vous contenter de les faire valoir et de les laisser tomber. Même après la mise en production de votre application, il est essentiel de garder une trace du code et de vous assurer que vous êtes en mesure de réagir efficacement si un problème de sécurité logicielle survient.  

Le processus se compose de deux éléments fondamentaux - la détection des problèmes de sécurité et leur résolution - qui sont associés aux indicateurs suivants, bien connus dans le secteur :

  • Temps moyen de détection (MTTD) : Il s'agit du temps nécessaire pour détecter un problème après la publication de votre logiciel.
  • Temps moyen de réparation (MTTR) : Il s'agit du temps nécessaire pour résoudre le problème détecté.

Bien sûr, entre la détection d'un problème de sécurité et sa réparation, il y a toujours un laps de temps. Si vous êtes confronté à une sérieuse faille, ce que vous faites pendant ce délai - cet espace entre la détection et la réparation - est extrêmement important. C'est là que de nouvelles techniques telles que le balisage des fonctionnalités et les retours en arrière automatiques peuvent vous aider. Ces stratégies de réaction rapide ont même donné naissance à une nouvelle mesure dans le secteur, appelée temps moyen d'atténuation ou MTTM. 

L'atténuation ne consiste pas à réparer un problème mais plutôt à neutraliser une menace dès qu'elle est découverte pour limiter les dommages potentiels, pendant que l'équipe travaille à la réparation.  Cela peut aller de la fermeture d'un site Web à la désactivation d'une application ou d'une fonctionnalité. Lorsque vous atténuez une faille ou une brèche de sécurité, vous empêchez immédiatement les acteurs malveillants de causer d'autres dommages et vous autoriser à procéder en toute sécurité à la réparation de la faille sous-jacente.    

Assurer une livraison optimale

Un autre élément essentiel est de s'assurer que la livraison du logiciel soit sécurisée et que le processus soit le plus intègre possible. La " sécurité de la livraison " consiste essentiellement à maîtriser tous les éléments susceptibles de dysfonctionner dans le processus de livraison, en dehors du code lui-même. N'oubliez pas que même si votre code est solide comme un roc, sans un pipeline sécurisé, vous demeurez exposé au risque de dommages causés par les acteurs malveillants et les erreurs humaines.

Voici les mesures que vous pouvez prendre pour sécuriser vos livraisons :

  • Automatisez autant que vous le pouvez. L'automatisation élimine les erreurs humaines et les oublis qui peuvent causer des difficultés et des problèmes de sécurité par la suite.
  •  Créez des contrôles d'accès et de privilèges pour le code et le pipeline lui-même. Pour être sur la bonne voie en matière de sécurité, il faut s'assurer que les bonnes personnes ont accès aux bonnes informations.
  • Créez et mettez à jour un catalogue d'objets immuables. Ceux-ci empêchent les utilisateurs de modifier le code après son déploiement. Si cela n'a pas beaucoup d'importance dans un environnement de test, la dérive fait toute la différence une fois que vous êtes en production.  

Dans un monde où la priorité est non seulement de sécuriser la chaîne logicielle - mais aussi de bien le faire - être responsable de la prévention des vulnérabilités et de la réduction des risques peut être stressant. Savoir par où commencer et s'assurer que les bonnes mesures sont appliquées à tous les composants du logiciel peut alléger le poids de cette responsabilité. Développer un code propre, atténuer les problèmes de sécurité et rendre le processus de livraison des logiciels aussi sûr que possible sont des mesures qui peuvent vous aider à contrer les acteurs malveillants et les brèches, tout en vous donnant la confiance nécessaire pour faire de la sécurité une priorité absolue. 

A propos de l'auteur

Prakash Sethuraman
Chief Information Security Officer, CloudBees

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H   AA   Y   Y  L     EEEE 
H H A A Y Y L E
HHHH AAAA Y L EEE
H H A A Y L E
H H A A Y LLLL EEEE