1 / 44

É criture de code s é curis é – M é thodes

É 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.

braith
Download Presentation

É criture de code s é curis é – M é thodes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Écrituredecodesécurisé–Méthodes Eric Mittelette (ericmitt@microsoft.com) Jean Gautier (jeanga@microsoft.com )

  2. Sujetsabordés • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées

  3. Conditionspréalablespourlasession • ExpériencedudéveloppementavecMicrosoftVisualBasic®,MicrosoftVisualC++®ouC#

  4. Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité

  5. 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

  6. 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

  7. 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

  8. 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

  9. Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité

  10. 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

  11. Identifierlesressources à protéger 1 Créerunevued'ensembledel'architecture 2 Décomposerl'application 3 Identifierlesmenaces 4 Documenterlesmenaces 5 Évaluerlesmenaces 6 Processusdemodélisationdes menaces Processusdemodélisationdesmenaces

  12. 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

  13. 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

  14. 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é

  15. 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

  16. Processusdemodélisationdes menacesIdentifierlesmenacesàl'aidedeSTRIDEProcessusdemodélisationdes menacesIdentifierlesmenacesàl'aidedeSTRIDE

  17. 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

  18. Processusdemodélisationdes menacesÉtape5:DocumenterlesmenacesProcessusdemodélisationdes menacesÉtape5:Documenterlesmenaces • Documenterlesmenacesàl'aided'unmodèle: • Ne pas renseigner le champ Risque (pour l'instant)

  19. 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

  20. 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

  21. Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité

  22. 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é

  23. 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

  24. 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

  25. Programme • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour assurer la sécurité

  26. 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.

  27. Démonstration1SécuritédesapplicationsASP.NETÉtudedesprivilègesdesapplicationsASP.NETLimitationdesniveauxd'approbationdesapplicationsASP.NETDémonstration1SécuritédesapplicationsASP.NETÉtudedesprivilègesdesapplicationsASP.NETLimitationdesniveauxd'approbationdesapplicationsASP.NET

  28. 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.

  29. 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+)*";

  30. Pare-feuISA IPSec Pare-feuISA SSL Défenseenprofondeur(1)Utiliserplusieursgarde-barrières SQLServer IIS

  31. 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

  32. 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

  33. 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

  34. UtiliserDPAPIpourprotégerla confidentialité • DeuxfonctionsDPAPI: • CryptProtectData • CryptUnprotectData • Deux magasins pour les données cryptées avec DPAPI : • Magasin d'utilisateur • Magasin d'ordinateur

  35. Démonstration2DPAPIStockagedechaînesdeconnexiondansWeb.configCryptagedechaînesdeconnexionavecDPAPIInstallationdel'utilitaireAspnet_setregUtilisationd'attributscryptésdansunfichierdeconfigurationOctroid'autorisationssurdesclésdeRegistreDémonstration2DPAPIStockagedechaînesdeconnexiondansWeb.configCryptagedechaînesdeconnexionavecDPAPIInstallationdel'utilitaireAspnet_setregUtilisationd'attributscryptésdansunfichierdeconfigurationOctroid'autorisationssurdesclésdeRegistre

  36. É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 ?

  37. É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"/>

  38. 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 ?

  39. 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 ?

  40. Résumédelasession • Processusdedéveloppementsécurisé • Modélisation des menaces • Atténuation des risques • Méthodes conseillées pour améliorer la sécurité

  41. 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

  42. É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

  43. Questions?

More Related