440 likes | 607 Views
É criture de code s é curis é – M é thodes. Eric Mittelette ( ericmitt@microsoft.com ) Jean Gautier ( jeanga@microsoft.com ). Sujets abord é s. Processus de développement sécurisé Modélisation des menaces Atténuation des risques Méthodes conseillées.
E N D
Écrituredecodesécurisé–Méthodes Eric Mittelette (ericmitt@microsoft.com) Jean Gautier (jeanga@microsoft.com )
Sujetsabordés • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées
Conditionspréalablespourlasession • ExpériencedudéveloppementavecMicrosoftVisualBasic®,MicrosoftVisualC++®ouC#
Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité
Améliorationduprocessusdedéveloppementd'applications • Prendreencomptelasécurité: • Au début du processus • Pendant le développement • Pendant le déploiement • À chaque étape clé de la révision du logiciel • Continuer l’effort de sécurité jusqu'à la fin du processus de développement
ArchitectureSD3 SD3 Codeetarchitecturesécurisés Analyse des menaces Diminution des vulnérabilités Sécuritédèslaconception Surfaced'attaqueréduite Fonctionnalités inutilisées désactivées par défaut Privilèges minimum utilisés Sécuritépardéfaut Protection:Détection,défense,récupérationetgestion Processus : Guides pratiques, Guides d'architecture Personnes : Formation Sécuritédudéploiement
Chronologiedudéveloppementd'unproduitsécurisé Apprendreetaffiner Envoyerpourunerévision externe Analyser les menaces Évaluerlesconnaissances sur la sécurité lors du recrutement de l'équipe Déterminerles critères de validation de la sécurité Testerlesvulnérabilités de sécurité Concept Diffusion Post-diffusion Conceptions terminées Plansdetestterminés Code terminé Résoudrelesproblèmesliésàlasécurité,vérifier que le code respecteles consignes de sécurité Formerlesmembres de l'équipe Testerlamutationdesdonnéesetlesprivilègesminimaux Révisiondelasécuritéparl'équipe =continu
Sécuritédèslaconception • Sensibiliserl'équipedeconceptionàlasécurité • Assurer une formation continue • Bousculer les esprits : « Ne pas avoir conscience d’un danger ne signifie pas qu’il n’existe pas!» • Prendre en compte la sécurité dès la phase de conception • Définir les objectifs du produit en termes de sécurité • Mettre en œuvre la sécurité comme fonctionnalité clé du produit Utiliser la modélisation des menaces dès la phase de conception
Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité
Vulnérabilité Risque Ressource Avantagesdelamodélisationdes menaces • Permetdemieuxcomprendrevotreapplication • Permet de rechercher les erreurs • Permet d'identifier les erreurs de conception complexes • Permet d'intégrer de nouveaux membres à l'équipe • Permet d'établir des programmes de test de sécurité bien conçus
Identifierlesressources à protéger 1 Créerunevued'ensembledel'architecture 2 Décomposerl'application 3 Identifierlesmenaces 4 Documenterlesmenaces 5 Évaluerlesmenaces 6 Processusdemodélisationdes menaces Processusdemodélisationdesmenaces
Processusdemodélisationdes menacesÉtape1:IdentifierlesressourcesProcessusdemodélisationdes menacesÉtape1:Identifierlesressources • Établirlalistedesressourcesdevantêtre protégées: • Données confidentielles, telles que les bases de données des clients • Pages Web • Disponibilité système • Tous les autres éléments qui, s'ils étaient endommagés, pourraient empêcher le bon fonctionnement de votre application
Autorisationdefichier Autorisation d'URL Rôles .NET (authentification) Rôledéfiniparl'utilisateur (authentification) AutorisationsNTFS (authentification) Frontièresécurisée Frontièresécurisée ASPNET (identité du processus) AliceMirwault Microsoft SQL Server IIS Microsoft ASP.NET LauraBartoli VictorNahas IPSec (Privé/Intégrité) SSL (Confidentialité/Intégrité) AuthentificationdeMicrosoft®Windows Authentification anonyme Authentification par formulaires ProcessusdemodélisationdesmenacesÉtape2:Créerunevued'ensembledel'architecture • Identifiercequefaitl'application • Créer un diagramme de l'architecture • Identifier les technologies
Processusdemodélisationdes menacesÉtape3:Décomposerl'applicationProcessusdemodélisationdes menacesÉtape3:Décomposerl'application • Décomposezl'application • Créez un profil de sécurité basé sur les domaines de vulnérabilité classiques • Examinez les interactions entre les différents sous-systèmes • Utilisez les diagrammes UML ou de flux de données Identifierlesfrontièressécurisées Identifierlefluxdedonnées Identifierlespointsd'entrée Identifierlecodeprivilégié Documenterleprofildesécurité
Processusdemodélisationdes menacesÉtape4:IdentifierlesmenacesProcessusdemodélisationdes menacesÉtape4:Identifierlesmenaces • Constitueruneéquipe • Identifier les menaces • Menaces liées au réseau • Menaces liées aux hôtes • Menaces liées à l'application
Processusdemodélisationdes menacesIdentifierlesmenacesàl'aidedeSTRIDEProcessusdemodélisationdes menacesIdentifierlesmenacesàl'aidedeSTRIDE
Processusdemodélisationdes menacesIdentifierlesmenacesàl'aided'organigrammesdesmenacesProcessusdemodélisationdes menacesIdentifierlesmenacesàl'aided'organigrammesdesmenaces 1.0Voirlesinformationsrelativesauxsalaires(I) 1.1 Le trafic n'est pas protégé (ET) 1.2 L'intrus voit le trafic 1.2.1 Espionner le trafic avec un analyseur de protocole 1.2.2 Écouter le trafic du routeur 1.2.2.1 Routeur non équipé d'un correctif (ET) 1.2.2.2 Endommager le routeur 1.2.2.3 Deviner le mot de passe du routeur Menacen°1(I) Voir les informations relatives aux salaires 1.1 Le trafic n'est pas protégé 1.2 L'intrus voit le trafic 1.2.1 Espionner le trafic avecun analyseur de protocole 1.2.2 Écouter le trafic du routeur 1.2.2.1 Routeur non équipé d'un correctif 1.2.2.2 Endommager le routeur 1.2.2.3 Deviner le mot de passe du routeur
Processusdemodélisationdes menacesÉtape5:DocumenterlesmenacesProcessusdemodélisationdes menacesÉtape5:Documenterlesmenaces • Documenterlesmenacesàl'aided'unmodèle: • Ne pas renseigner le champ Risque (pour l'instant)
Processusdemodélisationdes menacesÉtape6:ÉvaluerlesmenacesProcessusdemodélisationdes menacesÉtape6:Évaluerlesmenaces • Utilisezlaformulesuivante: Risque = Probabilité * Dommage potentiel • Utilisez le modèle DREAD pour noter les menaces • Dommage potentiel • Reproductibilité • Exploitation • Utilisateurs Affectés • Découverte
Processusdemodélisation des menacesExemple:Évaluerlesmenaces • Dommagepotentiel • Utilisateurs affectés • Ou • Dommage Menacen°1(I) Voir les informations relatives aux salaires 1.1 Le trafic n'est pas protégé 1.2 L'intrus voit le trafic • Reproductibilité • Exploitation • Découverte • Ou • Probabilité 1.2.1 Espionner le trafic avecun analyseur de protocole 1.2.2 Écouter le trafic du routeur 1.2.2.1 Routeur non équipé d'un correctif 1.2.2.2 Endommager le routeur 1.2.2.3 Deviner le mot de passe du routeur
Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité
Optionsrelativesàl'atténuationdes risques Option1:Nerienfaire Option 2 : Avertir l'utilisateur Option 3 : Supprimer le problème Option 4 : Résoudre le problème Surveillé
NTLM Certificats X.509 Clés PGP Basic Digest Kerberos SSL/TLS Usurpation Authentification Processusd'atténuationdes risques • IdentifierlacatégorieParexemple:Usurpation Typedemenace (STRIDE) • Sélectionnerles techniquesParexemple:Authentificationou protectiondes donnéesconfidentielles Techniqued'atténuation Techniqued'atténuation Technologie Technologie Technologie Technologie • SélectionnerlatechnologieParexemple:Kerberos
STRIDE Donnéesdeconfiguration STRIDE STRIDE • SSL/TLS • IPSec • RPC/DCO avec confidentialité • Contrôled'accèsrigoureux • Signatures numériques • Audit Réseaunonsécurisé Donnéesd'authentification • Pare-feu • Limitation de l'utilisation des ressources pour les connexions anonymes Serveur STRIDE Client STRIDE Donnéespersistantes Exemplesdetechniquesd'atténuation
Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité
Exécuteraveclemoinsdeprivilègespossible • Principedesécuritéconnu: « Exécuter l'application avec juste assez de privilèges pour faire le travail, et pas plus » • Un privilège élevé peut avoir des conséquences désastreuses : • Un code nuisible s'exécutant à l'intérieur d'un processus à privilège élevé s'exécute également avec ces privilèges. • De nombreux virus se propagent parce que la source infectée a des privilèges d'administrateur.
Démonstration1SécuritédesapplicationsASP.NETÉtudedesprivilègesdesapplicationsASP.NETLimitationdesniveauxd'approbationdesapplicationsASP.NETDémonstration1SécuritédesapplicationsASP.NETÉtudedesprivilègesdesapplicationsASP.NETLimitationdesniveauxd'approbationdesapplicationsASP.NET
Réduirelasurfaced'attaque • Exposezuniquementlesinterfacesbiendocumentéesetlimitéesdevotreapplication. • Utilisez uniquement les services nécessaires à votre application. • Les virus Slammer et CodeRed ne se seraient pas propagés si certaines fonctionnalités n'avaient pas été activées par défaut • ILoveYou (et d'autres virus) ne se serait pas propagé si l'écriture de script avait été désactivée • Désactivez tout le reste.
Seméfierdesentréesutilisateur • Validertouteslesentrées • Considérer que toute entrée est néfaste jusqu'à preuve du contraire • Rechercher les entrées valides et refuser toutes les autres • Limiter et/ou rejeter les entrées utilisateur avec : • Contrôles de types • Contrôles de longueurs • Contrôles de limites • Contrôles de formats http://regexlib.com/Default.aspx http://www.3leafsolutions.com/resources/articles/regex.aspx RegExp Workbench sur www.gotdotnet.com Validator.ValidationExpression= "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
Pare-feuISA IPSec Pare-feuISA SSL Défenseenprofondeur(1)Utiliserplusieursgarde-barrières SQLServer IIS
Contrôlerlasécurité Contrôlerlasécurité SécuriserlaressourceavecuneACL Contrôlerlasécurité Application.dll Application.dll Contrôlerlasécurité Défenseenprofondeur(2)Appliquerdesmesuresappropriéesà chaqueniveau Application.exe
Défenseenprofondeur(3)AppliquerdesACLfortesauxressources • ConcevezdesACLdansl'applicationdèsledébut • Appliquez les ACL aux fichiers, dossiers, pages Web, paramètres du Registre, fichiers de base de données, imprimantes et objets contenus dans Active Directory • Créez vos propres ACL pendant l'installation de l'application • Ajoutez des ACE DENY • N'utilisez pas les DACL NULL
Seméfierdelasécuritéparla dissimulation • Necachezpaslesclésdesécuritédansdesfichiers • Méfiez-vous des clés du Registre non documentées • Partez toujours du principe qu'un intrus en sait autant que vous
UtiliserDPAPIpourprotégerla confidentialité • DeuxfonctionsDPAPI: • CryptProtectData • CryptUnprotectData • Deux magasins pour les données cryptées avec DPAPI : • Magasin d'utilisateur • Magasin d'ordinateur
Démonstration2DPAPIStockagedechaînesdeconnexiondansWeb.configCryptagedechaînesdeconnexionavecDPAPIInstallationdel'utilitaireAspnet_setregUtilisationd'attributscryptésdansunfichierdeconfigurationOctroid'autorisationssurdesclésdeRegistreDémonstration2DPAPIStockagedechaînesdeconnexiondansWeb.configCryptagedechaînesdeconnexionavecDPAPIInstallationdel'utilitaireAspnet_setregUtilisationd'attributscryptésdansunfichierdeconfigurationOctroid'autorisationssurdesclésdeRegistre
Échouerintelligemment(1) DWORDdwRet=IsAccessAllowed(…); if (dwRet == ERROR_ACCESS_DENIED) { // Échec du contrôle de sécurité. // Informer l'utilisateur que l'accès est refusé } else { // Contrôle de sécurité OK. // Effectuer la tâche… } • Sivotrecodeéchoue,vérifiezqu'illefaitdemanièresécurisée Quefairesi IsAccessAllowed() renvoie ERROR_NOT_ENOUGH_MEMORY ?
Échouerintelligemment(2) • Nepasfaire: • Révéler des informations dans des messages d'erreur • Utiliser des ressources immédiatement après une défaillance • Faire : • Utiliser des blocs de gestion des exceptions pour empêcher la propagation des erreurs vers l'appelant • Écrire les échecs suspects dans un journal des événements <customErrorsmode="On"/>
Testerlasécurité • Impliquezleséquipesdetestdèsledébutdesprojets • Utilisez la modélisation des menaces pour développer une stratégie de test de sécurité • Pensez comme l'ennemi. Soyez comme l'ennemi. Testez comme l'ennemi. • Automatisez les attaques avec des scripts et des langages de programmation de niveau inférieur • Soumettez des données non valides • Supprimez ou refusez l'accès aux fichiers ou aux entrées de Registre • Testez avec un compte non administrateur • Apprenez à connaître votre ennemi • Quelles techniques et technologies utiliseront les pirates ? • Quelles techniques et technologies peuvent utiliser les testeurs ?
Tirerlesleçonsdeseserreurs • Sivousrencontrezunproblèmeliéàlasécurité,tirez-enlesleçons: • Comment est arrivée l'erreur de sécurité ? • Le code contient-il plusieurs fois cette même erreur ? • Comment aurait-elle pu être évitée ? • Que faut-il changer pour que ce type d'erreur ne se reproduise pas ? • Faut-il actualiser le matériel de formation ou les outils d'analyse ?
Résumédelasession • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour améliorer la sécurité
Pourplusd'informations • SiteMicrosoftsurlasécurité(toutpublic) • http://www.microsoft.com/france/securite/default.asp • Site MSDN sur la sécurité (développeurs) • http://msdn.microsoft.com/security (en anglais) • Site TechNet sur la sécurité (informaticiens) • http://www.microsoft.com/france/technet/themes/secur/default.asp
Étapessuivantes • Êtreinformésurlasécurité • S'inscrire aux bulletins de sécurité : http://www.microsoft.com/security/security_bulletins/alerts2.asp(en anglais) • Obtenir l'aide la plus récente de Microsoft sur la sécurité : http://www.microsoft.com/france/securite/default.asp • Obtenir des formations supplémentaires sur la sécurité • Trouver des séminaires de formation en ligne et en classe : http://www.microsoft.com/france/events/default.asp • Trouver un centre CTEC local pour des cours pratiques : http://www.microsoft.com/france/formation/centres/recherche.asp