Principes et modèle de menace
#Principes et modèle de menace
La sécurité informatique repose sur des principes fondamentaux et une compréhension des menaces. Un modèle de menace permet d'identifier et d'évaluer les risques pour un système.
#Risques, actifs, attaquants, surfaces d’attaque
#Risques
Un risque est la probabilité qu'une menace exploite une vulnérabilité pour causer un dommage à un actif.
#Actifs
Un actif est toute ressource ayant de la valeur pour l'organisation (données, systèmes, réputation, etc.).
#Attaquants
Un attaquant (ou threat actor) est une entité qui tente d'exploiter une vulnérabilité. Cela peut être un individu, un groupe ou une organisation.
#Surfaces d'attaque
La surface d'attaque est l'ensemble des points d'entrée qu'un attaquant peut utiliser pour compromettre un système.
#Principes de sécurité
#Moindre privilège
Le principe du moindre privilège stipule qu'un utilisateur ou un processus ne doit disposer que des droits strictement nécessaires pour accomplir sa tâche.
Exemple
1# Mauvais : Droits administrateur pour tous les utilisateurs2# Bon : Droits limités par défaut, élévation ponctuelle
#Défense en profondeur
La défense en profondeur consiste à utiliser plusieurs couches de sécurité pour protéger un système. Si une couche est compromise, les autres peuvent encore fournir une protection.
Exemple
- Pare-feu
- Système de détection d'intrusion (IDS)
- Antivirus
- Contrôles d'accès
- Chiffrement
#Séparation des préoccupations
Séparer les différentes fonctionnalités d'un système pour limiter l'impact d'une compromission.
Exemple
- Séparer les environnements de développement, test et production.
- Cloisonner les services réseau.
#Modèle de menace (STRIDE)
STRIDE est un modèle de menace développé par Microsoft qui catégorise les menaces en six types :
- Spoofing (usurpation d'identité)
- Tampering (altération)
- Repudiation (répudiation)
- Information Disclosure (divulgation d'information)
- Denial of Service (déni de service)
- Elevation of Privilege (élévation de privilège)
#Exemple d'application
Considérons une application web de banque en ligne :
| Menace STRIDE | Exemple | Mitigation | |---------------|---------|------------| | Spoofing | Usurpation de compte utilisateur | Authentification forte (2FA) | | Tampering | Modification des données de transaction | Intégrité des données (HMAC) | | Repudiation | Nier avoir effectué une transaction | Journalisation et audit | | Information Disclosure | Fuite de données personnelles | Chiffrement des données | | Denial of Service | Surcharge du serveur | Limitation de débit, CDN | | Elevation of Privilege | Accès non autorisé aux fonctions admin | Contrôles d'accès stricts |
#Exercice : Identifier les menaces
Voici un exemple de code vulnérable. Identifiez les menaces possibles en utilisant le modèle STRIDE.
1# Code vulnérable2username = request.form['username']3password = request.form['password']4query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'"5cursor.execute(query)6user = cursor.fetchone()
#Menaces identifiées
- Injection SQL (Tampering) : L'utilisateur peut injecter du SQL malveillant.
- Divulgation d'information (Information Disclosure) : Les mots de passe sont stockés en clair (hypothèse).
- Répudiation (Repudiation) : Aucune journalisation des tentatives de connexion.
#Exercice : Modèle de menace STRIDE pour une application de chat
Créez un modèle de menace STRIDE pour une application de chat en ligne simple.
#Description de l'application
L'application permet aux utilisateurs de :
- S'inscrire et se connecter.
- Rejoindre des canaux de discussion publics.
- Envoyer et recevoir des messages en temps réel.
- Ajouter des amis et chatter en privé.
#Instructions
- Identifiez les composants principaux de l'application (serveur, base de données, clients).
- Pour chaque composant, listez les menaces possibles selon le modèle STRIDE.
- Proposez des mitigations pour chaque menace identifiée.
#Exemple de modèle de menace
| Composant | Menace STRIDE | Description | Mitigation | |----------|---------------|-------------|------------| | Serveur de chat | Spoofing | Usurpation d'identité d'un utilisateur | Authentification forte (2FA), tokens JWT | | Base de données | Tampering | Modification des messages ou des comptes | Contrôles d'accès stricts, audit | | Serveur de chat | Repudiation | Nier avoir envoyé un message | Journalisation des messages avec horodatage | | Base de données | Information Disclosure | Fuite de messages privés | Chiffrement des données au repos | | Serveur de chat | Denial of Service | Surcharge du serveur pour empêcher les communications | Limitation de débit, CDN | | Serveur de chat | Elevation of Privilege | Accès non autorisé aux fonctions admin | Rôles et permissions stricts |
#Exercice à compléter
Complétez le tableau ci-dessus avec des menaces et mitigations supplémentaires pour les autres composants de l'application.
- Toujours valider et assainir les entrées utilisateur.
- Utiliser des requêtes préparées pour éviter les injections SQL.
- Stocker les mots de passe de manière sécurisée (hash + salt).
- Mettre en place une journalisation des événements de sécurité.