Comprendre la modélisation des menaces
La modélisation des menaces est un élément essentiel du cycle de vie du développement de la sécurité Microsoft (SDL) et une pratique de sécurité fondamentale pour la création d’applications sécurisées. Il s’agit d’une technique d’ingénierie qui vous aide à identifier systématiquement les menaces, les attaques, les vulnérabilités et les contre-mesures susceptibles d’affecter votre application.
Présentation de la modélisation des menaces
But: La modélisation des menaces fournit une approche structurée pour comprendre les risques de sécurité dans votre application. Au lieu d’espérer que vous avez pensé à tous les problèmes de sécurité possibles, la modélisation des menaces vous guide tout au long d’un processus systématique pour identifier et résoudre les menaces.
Avantages: Vous pouvez utiliser la modélisation des menaces pour :
- Orienter la conception des applications : Influencer les décisions d'architecture sur la base de considérations de sécurité plutôt que d'ajouter la sécurité après coup.
- Atteindre les objectifs de sécurité : Assurez-vous que votre application répond aux objectifs de sécurité et aux exigences de conformité de votre organisation.
- Réduire les risques : Réduisez systématiquement les risques de sécurité en identifiant et en traitant les menaces pendant la conception plutôt que de les découvrir en production.
- Hiérarchiser le travail de sécurité : Concentrez les efforts de sécurité sur les menaces les plus importantes plutôt que d’essayer de tout résoudre en même temps.
- Communiquer les problèmes de sécurité : Fournissez un langage commun aux développeurs, aux équipes de sécurité et aux parties prenantes pour discuter de la sécurité.
Accessibilité: L’approche a été conçue avec des experts non en matière de sécurité à l’esprit. La modélisation des menaces est accessible à tous les développeurs, pas seulement aux spécialistes de la sécurité, grâce à des conseils clairs sur la création et l’analyse des modèles de menace.
Processus de modélisation des menaces en cinq étapes
La modélisation des menaces suit un processus systématique en cinq étapes :
1. Définir les exigences de sécurité
Établissez des objectifs de sécurité : Avant d’analyser les menaces, clarifiez les moyens de sécurité pour votre application :
Exigences de confidentialité :
- Quelles données doivent rester confidentielles ?
- Qui doit avoir accès à des informations sensibles ?
- Combien de temps les données doivent-elles rester confidentielles ?
- Quelles sont les conséquences des violations de confidentialité ?
Exigences d’intégrité :
- Quelles données ou opérations doivent être protégées contre toute modification non autorisée ?
- Comment détecter si les données ont été falsifiées ?
- Quelles sont les conséquences des violations d’intégrité ?
Exigences de disponibilité :
- Quelles garanties de temps d’activité sont nécessaires ?
- Quel est le temps d’arrêt acceptable pour différents composants ?
- Quel est l’impact commercial de l’indisponibilité ?
Exigences de conformité :
- Quelles exigences réglementaires s’appliquent (RGPD, HIPAA, PCI DSS, etc.) ?
- Quelles normes industrielles doivent être respectées (ISO 27001, SOC 2, etc.) ?
- Quelles obligations de sécurité contractuelles existent avec les clients ?
Exemples de conditions requises : « Les informations de paiement du client doivent rester confidentielles. Seuls les systèmes de traitement de paiement autorisés peuvent accéder à ces données. Tous les accès doivent être enregistrés à des fins d’audit. Les données doivent être chiffrées en transit et au repos. »
2. Créer un diagramme d’application
Visualisez votre architecture : Créez un diagramme qui représente l’architecture de votre application, montrant :
Composants système :
- Serveurs web, serveurs d’applications, bases de données, microservices.
- Les services externes et les API dont dépend votre application.
- Systèmes d’authentification et d’autorisation.
- Équilibreurs de charge, couches de mise en cache, files d’attente de messages.
Flux de données :
- Comment les données se déplacent entre les composants.
- Quelles données chaque connexion transmet.
- Direction du flux de données.
- Points de transformation de données.
Limites de sécurité :
- Limites de confiance où les niveaux de privilèges changent.
- Limites réseau entre différentes zones de sécurité.
- Limites de processus entre différents contextes d’exécution.
- Limites physiques entre différents emplacements ou clouds.
Exemples d’éléments :
- Utilisateurs se connectant via Internet.
- Pare-feu d’applications web à la périphérie du réseau.
- Serveurs web dans une zone DMZ.
- Serveurs d’applications dans un réseau protégé.
- Serveurs de base de données dans un réseau hautement restreint.
- Passerelle de paiement externe pour le traitement des transactions.
3. Identifier les menaces
Identification systématique des menaces : Utilisez des approches structurées pour identifier les menaces potentielles :
Méthodologie STRIDE : STRIDE est une infrastructure de catégorisation des menaces :
- Usurpation d’identité : menaces impliquant l’emprunt d’identité.
- Tampering : menaces impliquant une modification non autorisée des données.
- Répudiation : menaces où les utilisateurs refusent d’effectuer des actions.
- Divulgation d’information : menaces impliquant un accès non autorisé aux informations.
- Denial of Service : Menaces qui empêchent les utilisateurs légitimes d’accéder aux systèmes.
- Élévation de privilège : menaces où les utilisateurs obtiennent des autorisations non autorisées.
Appliquez STRIDE aux flux de données : Examinez chaque flux de données dans votre diagramme et réfléchissez à la façon dont chaque catégorie STRIDE peut s’appliquer :
- Un attaquant peut-il usurper la source de ces données ?
- Ces données peuvent-elles être falsifiées pendant la transmission ou le stockage ?
- Les actions légitimes sur ce flux de données peuvent-elles être répudiées ?
- Les informations sensibles pourraient-elles être divulguées par le biais de ce flux ?
- Ce flux peut-il être utilisé pour provoquer un déni de service ?
- Ce flux peut-il être exploité pour obtenir des privilèges élevés ?
Exemples de menaces courants :
- Injection SQL : L’attaquant manipule des requêtes de base de données par le biais d’une entrée utilisateur non approuvée (falsification, divulgation d’informations, élévation de privilège).
- Détournement de session : L’attaquant vole des jetons de session pour emprunter l’identité des utilisateurs (usurpation d’identité, élévation de privilège).
- Man-in-the-middle : L’attaquant intercepte les communications entre les composants (divulgation d’informations, falsification).
- Attaque DDoS : L’attaquant surcharge les systèmes avec le trafic (déni de service).
4. Atténuer les menaces
Développer des contre-mesures : Pour chaque menace identifiée, développez les mesures d’atténuation appropriées :
Stratégies d’atténuation :
- Éliminer: Supprimez entièrement le composant ou la fonctionnalité vulnérable s’il n’est pas essentiel.
- Empêcher: Implémentez des contrôles qui rendent la menace impossible (par exemple, la validation d’entrée empêche les attaques par injection).
- Détecter: Implémentez la surveillance et les alertes pour détecter les tentatives d’exploitation des menaces.
- Répondre: Développez des procédures de réponse aux incidents pour le moment où les menaces sont exploitées.
Exemples d’atténuations :
- Menace d’injection SQL : Utilisez des requêtes paramétrables et la validation d’entrée pour empêcher les attaques par injection.
- Menace de détournement de session : Implémentez la gestion des sessions sécurisées avec https, cookies sécurisés et délais d’expiration de session courts.
- Menace de l’homme au milieu : Assurez-vous d'appliquer le TLS pour toutes les communications et implémentez l'ancrage des certificats.
- Menace DDoS : Utilisez les services de protection DDoS basés sur le cloud et implémentez la limitation du débit.
Décisions relatives aux documents : Enregistrer les décisions d’atténuation, notamment :
- Quelles menaces sont traitées.
- Quelle approche d’atténuation a été choisie.
- Pourquoi cette approche est appropriée.
- Responsable de l’implémentation.
- Tous les risques résiduels qui restent.
5. Valider les atténuations
Vérifiez l’efficacité : Après avoir implémenté des atténuations, vérifiez qu’elles répondent efficacement aux menaces identifiées :
Tests de sécurité :
- Les tests d’intrusion pour vérifier que les menaces ne sont pas exploitables.
- Les révisions de code de sécurité pour confirmer que les atténuations sont correctement implémentées.
- Analyse de sécurité automatisée pour détecter les vulnérabilités manquées.
- Les exercices de l’équipe rouge pour tester les défenses contre les scénarios d’attaque réalistes.
Validation continue : Les menaces et les atténuations évoluent :
- De nouvelles menaces émergent à mesure que la technologie évolue.
- Les atténuations existantes peuvent devenir inefficaces.
- Les modifications d’application peuvent introduire de nouvelles vulnérabilités.
Modélisation des menaces dans le cycle de vie du développement
Processus en cours : La modélisation des menaces ne doit pas être une activité ponctuelle. Il doit faire partie de votre cycle de vie de développement classique :
Conception initiale : Effectuez une modélisation complète des menaces pendant la conception initiale de l’application pour influencer les décisions architecturales.
Développement de fonctionnalités : Effectuez une modélisation des menaces lors de l’ajout de nouvelles fonctionnalités significatives qui modifient les limites de sécurité ou introduisent de nouveaux flux de données.
Mises à jour régulières : Passez régulièrement en revue et mettez à jour les modèles de menace, même sans changements majeurs, à mesure que le paysage des menaces évolue.
Réponse aux incidents : Mettez à jour les modèles de menace après les incidents de sécurité pour incorporer les leçons apprises.
Réduction progressive des risques : Cette approche itérative vous permet d’affiner votre modèle de menace et de réduire progressivement les risques au fil du temps plutôt que de tenter de résoudre tous les risques en même temps.
Outil de modélisation des menaces Microsoft
Microsoft fournit un outil gratuit qui rend la modélisation des menaces plus accessible et structurée :
But: L’outil Microsoft Threat Modeling Tool facilite la modélisation des menaces pour tous les développeurs grâce à une notation standard pour visualiser les composants système, les flux de données et les limites de sécurité.
Identification automatisée des menaces : L’outil aide les modélisateurs de menaces à identifier les classes de menaces qu’ils doivent envisager en fonction de la structure de leur conception logicielle. Lorsque vous créez votre diagramme d’application, l’outil suggère automatiquement des menaces potentielles en fonction des composants et des flux de données que vous avez définis.
Fonctionnalités clés : L’outil de modélisation des menaces permet à n’importe quel développeur ou architecte logiciel de :
Communiquer la conception de la sécurité :
- Créez des représentations visuelles de l’architecture système.
- Utilisez une notation cohérente que les équipes de sécurité et les développeurs comprennent.
- Documenter les décisions d’architecture pertinentes pour la sécurité.
- Partagez des modèles de menace avec les parties prenantes pour passer en revue et envoyer des commentaires.
Analyser les conceptions :
- Identifiez les problèmes de sécurité potentiels à l’aide de méthodologies éprouvées (STRIDE).
- Générez automatiquement des listes de menaces en fonction de la structure de l’application.
- Hiérarchiser les menaces en fonction de la gravité et de la probabilité.
- Comparez différentes alternatives de conception du point de vue de la sécurité.
Gérer les atténuations :
- Suggérer des atténuations pour les menaces identifiées.
- Suivez l’état de l’implémentation de l’atténuation.
- Documenter les décisions de sécurité et la logique.
- Générez des rapports pour les révisions de sécurité et la conformité.
Prise en main :
- L’outil est gratuit et disponible en téléchargement à partir de Microsoft.
- Il inclut des modèles pour les types d’applications courants.
- Les conseils intégrés aident les nouveaux utilisateurs à apprendre les concepts de modélisation des menaces.
- L’intégration à Azure DevOps permet de lier des menaces à des éléments de travail.
Ressources supplémentaires
Pour plus d’informations sur la modélisation des menaces, consultez :