banniere aubay

< Tous les articles

Juil 4, 2023

DevSecOps, ça vous parle ?

DevSecOps est un mot composé de trois termes clés : Développement (Dev), Sécurité (Sec), Opérations (Ops). Il existe déjà le DevOps, précurseur du DevSecOps, pratique consistant à créer une culture de collaboration et de responsabilisation des équipes pour assurer un déploiement rapide, fiable et continu des applications. Cependant, à cause de l’augmentation des cyberattaques et des menaces de sécurité, il est devenu essentiel d’intégrer la sécurité dès le début du processus de développement. C’est là que le DevSecOps entre en jeu. Dans cet article, nous allons vous expliquer ces principes et vous montrer leur importance.

Figure 1 : les étapes d’une boucle DevSecOps

Approche DevSecOps

Au cours du développement d’une application, il peut arriver que des failles de sécurité apparaissent. Ces failles peuvent résulter de mauvaises méthodes de développement, de non-respect des bonnes pratiques ou l’utilisation de dépendances qui ne sont plus à jour.

Ces failles sont exploitables par des attaquants pour accéder aux systèmes informatiques de l’entreprise. Ces attaques peuvent aller d’un vol des données sensibles, jusqu’au contrôle du système informatique.
De plus, la correction de vulnérabilités dans une application déjà en production peut nécessiter des changements importants dans le code ce qui entraîne des retards dans le déploiement, des coûts supplémentaires et des perturbations pour les utilisateurs. Il est donc crucial de protéger les données de l’entreprise et de ses clients en intégrant la sécurité dans le processus de développement.

L’intégration d’un cycle DevSecOps renforce considérablement la sécurité des applications : en construisant un projet de développement incluant une couche de sécurité, on permet aux équipes de repérer et corriger des failles de sécurité au plus tôt et donc de réduire les risques d’attaques.
Un autre avantage non négligeable du DevSecOps est la réduction des coûts. Intégrer la sécurité au plus tôt dans un projet de développement permet corriger les erreurs plus rapidement, et par conséquent de réduire les coûts liés aux corrections de dernière minute qui peuvent nécessiter davantage de ressources.

Le DevSecOps favorise également une meilleure qualité du code, permettant d’obtenir un code source plus simple, plus fiable et plus facilement compréhensible. Trois éléments permettant notamment un meilleur audit et une meilleure maintenance.

Un cycle DevSecOps est aussi synonyme d’accélération dans le développement. Les tests sont automatisés, ce qui permet aux équipes de se concentrer sur d’autres aspects du développement et par conséquent d’accélérer le processus de livraison des applications.

Dernier avantage, la collaboration. Le DevSecOps offre une collaboration étroite entre l’équipe de développement, l’équipe de sécurité et l’équipe opérationnelle. En travaillant ensemble dès le début d’un projet de développement, les équipes peuvent échanger des informations, partager des connaissances et collaborer pour améliorer la sécurité de l’application.
D’autres méthodes s’allient efficacement avec le DevSecOps, c’est le cas notamment du “Security by Design ». Le DevSecOps et la “Sécurité dès la conception” sont deux approches de développement logiciel visant à intégrer la sécurité dès le début du processus de développement pour garantir la sécurité des applications. En liant ces deux approches, nous pouvons créer une culture de sécurité robuste qui garantit la sécurité des applications tout au long de leur cycle de vie.

Pour relever de potentielles vulnérabilités, nous réalisons des tests de sécurité massifs grâce à des scanners de vulnérabilités adaptés. Pour cela, deux catégories d’outils se distinguent. Les outils d’analyses statiques et les outils d’analyses dynamiques.

Le SAST (Static Application Security Testing) est une technique d’analyse statique du code source identifiant les vulnérabilités de sécurité dans les applications. Il s’agit d’une méthode automatisée qui analyse le code source d’une application pour détecter les vulnérabilités de sécurité potentielles avant que l’application ne soit mise en production. A contrario, le DAST (Dynamic Application Security Testing) est une technique d’analyse dynamique des applications détectant les vulnérabilités de sécurité en simulant des attaques réelles contre l’application en cours d’exécution. Le DAST analyse l’application lorsqu’elle est en production pour identifier les vulnérabilités potentielles.

Le traitement des vulnérabilités adopte une approche agile ce qui apporte une gestion efficace des risques et une résolution rapide des problèmes de sécurité. Toutes les vulnérabilités ne sont pas égales, et il est essentiel de les prioriser en fonction de leur criticité. L’approche agile du traitement des vulnérabilités met l’accent sur la classification et la hiérarchisation des vulnérabilités en fonction de leur impact potentiel sur la sécurité. Cela permet de concentrer les ressources sur les problèmes les plus critiques et de les traiter en priorité. Les équipes évaluent régulièrement l’efficacité des mesures de sécurité mises en place, identifient les lacunes et les domaines d’amélioration, et ajustent leurs pratiques en conséquence. Cette boucle de rétroaction permet d’améliorer en permanence la capacité de l’organisation à traiter les vulnérabilités de manière agile et efficace.

Actuellement, la détection de vulnérabilités pour une application complexe s’appuie uniquement sur les informations publiées par des sources fiables telles que l’Agence Nationale de la Sécurité des Systèmes d’Information (ANSSI) ou le Mitre grâce aux CVE (Common Vulnerabilities and Exposures) et aux CWE (Common Weakness Enumeration). Les vulnérabilités relevées enrichissent une base de connaissance, ce qui a permis de développer des outils pour scanner le code produit par les développeurs. La méthode DevSecOps s’appuie sur ces outils pour renforcer la sécurité.

 

 

Comment sécuriser une boucle DevOps ?

Différentes solutions sont mises à notre disposition pour automatiser le déploiement et la configuration des applications. Une des plus connues, Ansible, permet de jouer des “playbooks” (en français livre d’action) afin de déployer des applications, les administrer et les gérer à grande échelle. Grâce à cette technologie, fini les tâches répétitives et monotones, place à l’automatisation !
Mais ce n’est pas tout, un second outil complète ces démarches d’automatisation : GitLab.

L’outil CI/CD de GitLab est une plateforme de développement continue (CI) et de déploiement continu (CD) intégrée à GitLab, un outil de gestion de code source et de collaboration de projet. Le CI/CD de GitLab offre la possiblité aux développeurs de tester, construire, déployer et livrer rapidement des applications de haute qualité en automatisant le processus de développement grâce à un pipeline.

Le processus de CI/CD commence par l’intégration continue, qui implique la création et l’exécution de tests automatisés pour chaque modification de code dans des pipelines. GitLab fournit un environnement d’intégration continu, où les développeurs peuvent automatiser les tests unitaires, les tests de validation de code, les tests de performance et bien plus encore. Une fois que les tests sont passés avec succès, la livraison continue est activée, permettant de déployer automatiquement la nouvelle version du code dans un environnement de production ou de préproduction.

L’élaboration d’un tel processus se base sur la rédaction de pipelines dans lesquelles sont mentionnées nos outils de sécurité SAST et DAST. Du côté du SAST, on dispose d’analyseurs couvrant tous les langages populaires utilisés dans le développement. Les analyseurs appropriés sont sélectionnés selon le langage détecté au cours du processus. Ils vont alors s’exécuter et balayer tout le projet fichier par fichier (de manière statique). Pour scanner un projet, les outils utilisent des bases de données dans lesquelles se trouvent des entrées associant des morceaux de code ou des numéros de version pour les dépendances, à une ou plusieurs vulnérabilités. Les bases de données sont régulièrement mises à jour de manière à permettre aux applications d’être le plus résilientes possible face aux menaces.

Concernant le DAST, le fonctionnement des analyseurs est différent. Comme énoncé dans la partie précédente, il s’agit ici de scanner dynamiquement une application. Pour ce faire, il existe deux types d’analyseur DAST : l’analyseur basé sur un proxy et l’analyseur basé sur un navigateur. Un analyseur populaire utilisé est le proxy OWASP ZED Attack. Il intercepte les requêtes effectuées entre le serveur et le client, les inspecte, tente d’en modifier le contenu pour finalement les transmettre à la destination. Le script utilisé est capable de scanner toutes les pages d’une application web sur un temps relativement court. Ce script n’effectue aucune attaque, il simule simplement le comportement malveillant qu’un individu pourrait avoir.

Ce scanner analyse les réponses renvoyées par l’application et recherche des comportements anormaux ou des indicateurs de vulnérabilités. Il peut détecter des réponses d’erreur, des fuites d’informations sensibles, des vulnérabilités d’accès non autorisé, des erreurs de configuration de sécurité, et bien d’autres.

Le scanner émulant un navigateur est une composante essentielle du DAST, cela permet d’explorer l’application web cible en suivant les liens internes, en remplissant les formulaires, et en effectuant des interactions telles que la soumission de requêtes ou la sélection d’options. Cette exploration approfondie permet de couvrir différentes parties de l’application et de découvrir des fonctionnalités potentiellement vulnérables. Une fois que le scanner émulant un navigateur a identifié les points d’injection potentiels, il peut injecter du code malveillant (payload) pour tester la réaction de l’application. Les payloads peuvent inclure des chaînes de caractères spéciaux, des valeurs extrêmes, des scripts malveillants, ou d’autres données conçues pour exploiter les vulnérabilités connues. En injectant ces payloads, le scanner évalue la réaction de l’application et identifie les éventuelles vulnérabilités d’injection de code, les failles de sécurité comme les failles XSS (Cross-Site Scripting), les vulnérabilités d’inclusion de fichiers, etc.

A l’issu des scans réalisés par nos outils de détection, il est possible de consulter l’ensemble des vulnérabilités relevées. L’interface présentée ci-dessous propose une vue globale sur un rapport de vulnérabilité tel que l’on obtient après des scans. Cette interface offre aussi un moyen d’attribuer une vulnérabilité à un collaborateur travaillant sur l’application. Cette personne sera automatiquement notifiée qu’une “issue” (terme utilisé par la plateforme Gitlab représentant une tâche) lui a été assignée et qu’il est en charge de la corriger.
Figure

 

Figure 2 : dashboard Gitlab des différentes vulnérabilités remontés par les scanners

 

C’est également grâce à cette plateforme que l’on peut combiner DevOps (méthodologie visant à automatiser, standardiser et intégrer développement et opérations.) et sécurité (scanners SAST, DAST, de licence, de dépendances, etc.) afin de créer un processus complexe de DevSecOps.

Conclusion

La mise en place de DevSecOps permet de renforcer la sécurité des applications en intégrant la sécurité dès le début du cycle de développement et en automatisant les processus de sécurité tout au long du cycle de vie de l’application. Cela permet de réduire les risques d’attaques et de vulnérabilités, de garantir la conformité réglementaire et de renforcer la confiance des utilisateurs et des clients.
En détectant rapidement les vulnérabilités et les failles de sécurité, les équipes de développement peuvent les corriger avant qu’elles ne soient exploitées par des attaquants. En outre, l’approche DevSecOps implique une culture de responsabilisation et de collaboration entre les équipes de développement, de sécurité et d’exploitation, ce qui permet de réduire les erreurs humaines et les temps d’arrêt.

Pour finir, la mise en place de DevSecOps est un impératif pour garantir la sécurité des applications dans un contexte de plus en plus menaçant. Cela permet de garantir une sécurité accrue, une agilité de développement, une qualité supérieure des applications et une confiance accrue des utilisateurs et des clients.

 

 

Figure 3 : intégration du DevSecOps dans la plateforme Gitlab

Partagez cet article
Marin, Wanis & Martin

Marin, Wanis & Martin

Ingénieurs en cybersécurité

< Retour à tous les articles