É criture de code s é curis é – M é thodes Eric Mittelette ([email protected])...

44
Écriture Écriture de de code code sécurisé sécurisé Méthodes Méthodes Eric Mittelette ( Eric Mittelette ( [email protected] [email protected] ) ) Jean Gautier ( Jean Gautier ( [email protected] [email protected] ) )

Transcript of É criture de code s é curis é – M é thodes Eric Mittelette ([email protected])...

Page 1: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ÉcritureÉcriture dede codecode sécurisésécurisé –– MéthodesMéthodesÉcritureÉcriture dede codecode sécurisésécurisé –– MéthodesMéthodes

Eric Mittelette (Eric Mittelette ([email protected]@microsoft.com))Jean Gautier (Jean Gautier ([email protected]@microsoft.com ) )

Page 2: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

SujetsSujets abordésabordés

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseilléesMéthodes conseillées

Page 3: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ConditionsConditions préalablespréalables pourpour la sessionla session

ExpérienceExpérience dudu développementdéveloppement avecavec MicrosoftMicrosoftVisualVisual Basic®,Basic®, MicrosoftMicrosoft VisualVisual C++®C++® ouou C#C#

Page 4: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProgrammeProgramme

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseillées pour assurer la sécuritéMéthodes conseillées pour assurer la sécurité

Page 5: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

AméliorationAmélioration dudu processusprocessus dede développementdéveloppement d'applicationsd'applications

PrendrePrendre enen comptecompte lala sécuritésécurité  ::Au début du processusAu début du processus

Pendant le développementPendant le développement

Pendant le déploiementPendant le déploiement

À chaque étape clé de la révision du logicielÀ chaque étape clé de la révision du logiciel

Continuer l’effort de sécurité jusqu'à la fin Continuer l’effort de sécurité jusqu'à la fin du processus de développementdu processus de développement

Page 6: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

SDSD33

SécuritéSécurité dèsdès lala

conceptionconception

SécuritéSécurité parpar défautdéfaut

SécuritéSécurité dudu déploiementdéploiement

CodeCode etet architecturearchitecture sécuriséssécurisésAnalyse des menacesAnalyse des menacesDiminution des vulnérabilitésDiminution des vulnérabilités

SurfaceSurface d'attaqued'attaque réduiteréduiteFonctionnalités inutilisées Fonctionnalités inutilisées désactivées par défautdésactivées par défautPrivilèges minimum utilisésPrivilèges minimum utilisés

ProtectionProtection  :: Détection,Détection, défense,défense, récupérationrécupération etet gestiongestionProcessus : Guides pratiques, Processus : Guides pratiques, Guides d'architectureGuides d'architecturePersonnes : FormationPersonnes : Formation

ArchitectureArchitecture SDSD33

Page 7: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ChronologieChronologie dudu développementdéveloppement d'un produitd'un produit sécurisésécurisé

PlansPlans dede testtestterminésterminés

ConceptionsConceptionsterminéesterminées

ConceptConcept CodeCodeterminéterminé

DiffusionDiffusion Post-diffusionPost-diffusion

Tester les vulnérabilités

de sécurité

Évaluer les connaissances sur la sécurité lors du

recrutement de l'équipe

Déterminer les critères de validation

de la sécurité

Envoyer pour une révision

externe

Analyser les menaces

Apprendre et affiner

Révision de la sécurité par l'équipe

Former les membres de l'équipe

Tester la mutation des données et les

privilèges minimaux

Résoudre les problèmes liés à la sécurité, vérifier que le code respecte

les consignes de sécurité

=continu

Page 8: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

SécuritéSécurité dèsdès lala conceptionconception

SensibiliserSensibiliser l'équipel'équipe dede conceptionconception àà lala sécuritésécurité

Assurer une formation continueAssurer une formation continueBousculer les esprits : « Ne pas avoir conscience Bousculer les esprits : « Ne pas avoir conscience d’un danger ne signifie pas qu’il n’existe pas!»d’un danger ne signifie pas qu’il n’existe pas!»

Prendre en compte la sécurité dès la phase Prendre en compte la sécurité dès la phase de conceptionde conception

Définir les objectifs du produit en termes de Définir les objectifs du produit en termes de sécuritésécuritéMettre en œuvre la sécurité comme fonctionnalité Mettre en œuvre la sécurité comme fonctionnalité clé du produitclé du produit

Utiliser la modélisation des menaces dès la phase Utiliser la modélisation des menaces dès la phase de conceptionde conception

Page 9: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProgrammeProgramme

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseillées pour assurer la sécuritéMéthodes conseillées pour assurer la sécurité

Page 10: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

AvantagesAvantages dede lala modélisationmodélisation des menacesdes menaces

PermetPermet dede mieuxmieux comprendrecomprendre votrevotre applicationapplication

Permet de rechercher Permet de rechercher les erreursles erreurs

Permet d'identifier les Permet d'identifier les erreurs de conception erreurs de conception complexescomplexes

Permet d'intégrer de Permet d'intégrer de nouveaux membres à l'équipenouveaux membres à l'équipe

Permet d'établir des programmes Permet d'établir des programmes de test de sécurité bien conçusde test de sécurité bien conçus

Risque

Vulnérabilité

Ressource

Page 11: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces

Identifier les ressources à protéger1

Créer une vue d'ensemble de l'architecture2

Décomposer l'application3

Identifier les menaces4

Documenter les menaces5

Évaluer les menaces6

Processus de modélisation des menaces

Page 12: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 11  :: IdentifierIdentifier lesles ressourcesressources

ÉtablirÉtablir lala listeliste desdes ressourcesressources devantdevant être protégéesêtre protégées  ::

Données confidentielles, telles que les bases Données confidentielles, telles que les bases de données des clientsde données des clients

Pages WebPages Web

Disponibilité systèmeDisponibilité système

Tous les autres éléments qui, s'ils étaient Tous les autres éléments qui, s'ils étaient endommagés, pourraient empêcher le bon endommagés, pourraient empêcher le bon fonctionnement de votre applicationfonctionnement de votre application

Page 13: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 22  :: CréerCréer uneune vuevue d'ensembled'ensemble de l'architecturede l'architecture

IdentifierIdentifier cece queque faitfait l'applicationl'applicationCréer un diagramme de l'architectureCréer un diagramme de l'architecture

Identifier les technologiesIdentifier les technologies

Autorisations NTFS(authentification)

Autorisation de fichierAutorisation d'URL

Rôles .NET(authentification)

Rôle défini par l'utilisateur(authentification)

SSL(Confidentialité/

Intégrité)

Frontière sécurisée

Alice MirwaultLaura BartoliVictor Nahas

IISIIS

Authentificationanonyme

Authentificationpar formulaires

IPSec(Privé/Intégrité)

Frontière sécurisée

ASPNET(identité du processus)Microsoft

ASP.NETMicrosoft ASP.NET

Authentification de Microsoft® Windows

MicrosoftSQL Server

Page 14: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 33  :: DécomposerDécomposer l'applicationl'application

DécomposezDécomposez l'applicationl'application

Créez un profil de sécurité Créez un profil de sécurité basé sur les domaines de basé sur les domaines de vulnérabilité classiquesvulnérabilité classiques

Examinez les interactions Examinez les interactions entre les différents sous-entre les différents sous-systèmessystèmes

Utilisez les diagrammes UML Utilisez les diagrammes UML ou de flux de donnéesou de flux de données

IdentifierIdentifier lesles frontièresfrontières sécuriséessécurisées

IdentifierIdentifier lele fluxflux dede donnéesdonnées

IdentifierIdentifier lesles pointspoints d'entréed'entrée

IdentifierIdentifier lele codecode privilégiéprivilégié

DocumenterDocumenter lele profilprofil dede sécuritésécurité

Page 15: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 44  :: IdentifierIdentifier lesles menacesmenaces

ConstituerConstituer uneune équipeéquipe

Identifier les menacesIdentifier les menacesMenaces liées au réseauMenaces liées au réseau

Menaces liées aux hôtesMenaces liées aux hôtes

Menaces liées à l'applicationMenaces liées à l'application

Page 16: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

Types de menaces Exemples

USurpation Falsification de messages électroniques Rediffusion de paquets d'authentification

FalsificaTion Modification des données lors d'une transmission Changement des données dans des fichiers

Répudiation Suppression d'un fichier important et déni de l'action Achat d'un produit et déni de l'action

Divulgation

d'Informations

Exposition d'informations dans des messages d'erreur Exposition de code sur des sites Web

Deni de serviceSubmersion d'un réseau avec des paquets SYNSubmersion d'un réseau avec des paquets ICMP falsifiés

Elévation de privilèges

Exploitation du débordement de mémoire tampon pour obtenir des privilèges systèmeObtention illégale des privilèges d'administrateur

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces IdentifierIdentifier lesles menacesmenaces àà l'aidel'aide dede STRIDESTRIDE

Page 17: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

Menace n°1 (I)Voir les informations relatives aux salaires

1.1Le trafic n'est pas protégé

1.2L'intrus voitle trafic

1.2.1Espionner le trafic avec un analyseur de protocole

1.2.2Écouter le traficdu routeur

1.2.2.1Routeur non équipé d'un correctif

1.2.2.2Endommager le routeur

1.2.2.3Deviner le mot de passe du routeur

1.0 Voir les informations relatives aux salaires (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

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces IdentifierIdentifier lesles menacesmenaces àà l'aidel'aide d'organigrammesd'organigrammes desdes menacesmenaces

Page 18: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 55  :: DocumenterDocumenter lesles menacesmenaces

DocumenterDocumenter lesles menacesmenaces àà l'aidel'aide d'und'un modèlemodèle  ::

Ne pas renseigner le champ Risque Ne pas renseigner le champ Risque (pour l'instant)(pour l'instant)

Description de la menace

Injection de commandes SQL

Cible de la menace Composant de l'accès aux données

Risque

Techniques d'attaque L'intrus ajoute des commandes SQL au nom d'utilisateur utilisé pour former une requête SQL

Contre-mesures Utiliser une expression régulière pour valider le nom d'utilisateur et une procédure stockée avec des paramètres pour accéder à la base de données

Page 19: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisationmodélisation des menacesdes menaces ÉtapeÉtape 66  :: ÉvaluerÉvaluer lesles menacesmenaces

UtilisezUtilisez lala formuleformule suivantesuivante  :: Risque = Probabilité * Dommage potentielRisque = Probabilité * Dommage potentiel

Utilisez le modèle DREAD pour noter Utilisez le modèle DREAD pour noter les menacesles menaces

DDommage potentielommage potentiel  

RReproductibilitéeproductibilité  

EExploitationxploitation     

Utilisateurs AAffectésffectés  

DDécouverteécouverte  

Page 20: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus dede modélisation modélisation des menacesdes menacesExempleExemple  :: ÉvaluerÉvaluer lesles menacesmenaces

Menace n°1 (I)Voir les informations relatives aux salaires

1.1Le trafic n'est pas protégé

1.2L'intrus voitle trafic

1.2.1Espionner le trafic avec un analyseur de protocole

1.2.2Écouter le traficdu routeur

1.2.2.1Routeur non équipé d'un correctif

1.2.2.2Endommager le routeur

1.2.2.3Deviner le mot de passe du routeur

•Dommage potentiel•Utilisateurs affectésOu•Dommage

•Reproductibilité•Exploitation•DécouverteOu•Probabilité

Page 21: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProgrammeProgramme

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseillées pour assurer la sécuritéMéthodes conseillées pour assurer la sécurité

Page 22: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

OptionsOptions relativesrelatives àà l'atténuationl'atténuation des risquesdes risques

OptionOption 11  :: NeNe rienrien fairefaire

Option 2 : Avertir l'utilisateurOption 2 : Avertir l'utilisateur

Option 3 : Supprimer le problèmeOption 3 : Supprimer le problème

Option 4 : Résoudre le problèmeOption 4 : Résoudre le problème

Surveillé

Page 23: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProcessusProcessus d'atténuationd'atténuation des risquesdes risques

Type de menace(STRIDE)

Technique d'atténuation Technique d'atténuation

Technologie Technologie Technologie Technologie

Usurpation Authentification

NTLMCertificats X.509Clés PGPBasicDigestKerberosSSL/TLS

1.1. IdentifierIdentifier lala catégoriecatégorieParPar exempleexemple  :: UsurpationUsurpation

2.2. SélectionnerSélectionner les techniquesles techniquesParPar exempleexemple  :: AuthentificationAuthentification ou protectionou protection des donnéesdes données confidentiellesconfidentielles

3.3. SélectionnerSélectionner lala technologietechnologieParPar exempleexemple  :: KerberosKerberos

Page 24: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ExemplesExemples dede techniquestechniques d'atténuationd'atténuation

Client Serveur

Donnéespersistantes

Donnéesd'authentification

Données deconfiguration SSTTRRIDIDEE

STSTRRIDEIDE

STRISTRIDDEE

SSTTRRIIDEDESSTRIDTRIDEE

SSL/TLS IPSec RPC/DCO

avec confidentialité

Pare-feu Limitation de

l'utilisation des ressources pour les connexions anonymes

Contrôle d'accès rigoureux

Signatures numériques

AuditRéseau

non sécurisé

Page 25: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ProgrammeProgramme

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseillées pour assurer la sécuritéMéthodes conseillées pour assurer la sécurité

Page 26: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ExécuterExécuter avecavec lele moinsmoins dede privilègesprivilèges possiblepossible

PrincipePrincipe dede sécuritésécurité connuconnu  ::« Exécuter l'application avec juste assez de « Exécuter l'application avec juste assez de privilèges pour faire le travail, et pas plus »privilèges pour faire le travail, et pas plus »

Un privilège élevé peut avoir des Un privilège élevé peut avoir des conséquences désastreuses :conséquences désastreuses :

Un code nuisible s'exécutant à l'intérieur d'un Un code nuisible s'exécutant à l'intérieur d'un processus à privilège élevé s'exécute également processus à privilège élevé s'exécute également avec ces privilèges.avec ces privilèges.

De nombreux virus se propagent parce que la De nombreux virus se propagent parce que la source infectée a des privilèges d'administrateur.source infectée a des privilèges d'administrateur.

Page 27: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

DémonstrationDémonstration 11 SécuritéSécurité desdes applicationsapplications ASP.NETASP.NET

ÉtudeÉtude desdes privilègesprivilèges desdes applicationsapplications ASP.NETASP.NET

LimitationLimitation desdes niveauxniveaux d'approbationd'approbationdesdes applicationsapplications ASP.NETASP.NET

DémonstrationDémonstration 11 SécuritéSécurité desdes applicationsapplications ASP.NETASP.NET

ÉtudeÉtude desdes privilègesprivilèges desdes applicationsapplications ASP.NETASP.NET

LimitationLimitation desdes niveauxniveaux d'approbationd'approbationdesdes applicationsapplications ASP.NETASP.NET

Page 28: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

RéduireRéduire lala surfacesurface d'attaqued'attaque

ExposezExposez uniquementuniquement lesles interfacesinterfaces bienbien documentéesdocumentées etet limitéeslimitées dede votrevotre application.application.

Utilisez uniquement les services nécessaires à Utilisez uniquement les services nécessaires à votre application.votre application.

Les virus Slammer et CodeRed ne se seraient pas Les virus Slammer et CodeRed ne se seraient pas propagés si certaines fonctionnalités n'avaient pas propagés si certaines fonctionnalités n'avaient pas été activées par défautété activées par défaut

ILoveYou (et d'autres virus) ne se serait pas ILoveYou (et d'autres virus) ne se serait pas propagé si l'écriture de script avait été désactivéepropagé si l'écriture de script avait été désactivée

Désactivez tout le reste.Désactivez tout le reste.

Page 29: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

SeSe méfierméfier desdes entréesentrées utilisateurutilisateurValiderValider toutestoutes lesles entréesentrées

Considérer que toute entrée est néfaste jusqu'à preuve Considérer que toute entrée est néfaste jusqu'à preuve du contrairedu contraireRechercher les entrées valides et refuser toutes les Rechercher les entrées valides et refuser toutes les autresautres

Limiter et/ou rejeter les entrées utilisateur avec :Limiter et/ou rejeter les entrées utilisateur avec :Contrôles de typesContrôles de typesContrôles de longueursContrôles de longueursContrôles de limitesContrôles de limitesContrôles de formatsContrôles de formats

Validator.ValidationExpression =

"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

http://regexlib.com/Default.aspxhttp://regexlib.com/Default.aspxhttp://www.3leafsolutions.com/resources/http://www.3leafsolutions.com/resources/articles/regex.aspxarticles/regex.aspxRegExp Workbench sur www.gotdotnet.com

Page 30: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

DéfenseDéfense enen profondeurprofondeur (1)(1)UtiliserUtiliser plusieursplusieurs garde-barrièresgarde-barrières

SSL

Pare-feu ISA

IIS

SQL Server

Pare-feu ISAIPSec

Page 31: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

DéfenseDéfense enen profondeurprofondeur (2)(2)AppliquerAppliquer desdes mesuresmesures appropriéesappropriées à chaqueà chaque niveauniveau

Contrôler la sécurité

Contrôler la sécurité

Application.dll

Application.exe

Contrôler la sécurité

Contrôler la sécurité

Sécuriser la ressource avec une ACL

Application.dll

Page 32: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

DéfenseDéfense enen profondeurprofondeur (3)(3)AppliquerAppliquer desdes ACLACL fortesfortes auxaux ressourcesressources

ConcevezConcevez desdes ACLACL dansdans l'applicationl'application dèsdès lele débutdébut

Appliquez les ACL aux fichiers, dossiers, Appliquez les ACL aux fichiers, dossiers, pages Web, paramètres du Registre, fichiers pages Web, paramètres du Registre, fichiers de base de données, imprimantes et objets de base de données, imprimantes et objets contenus dans Active Directorycontenus dans Active Directory

Créez vos propres ACL pendant l'installation Créez vos propres ACL pendant l'installation de l'applicationde l'application

Ajoutez des ACE DENYAjoutez des ACE DENY

N'utilisez pas les DACL NULLN'utilisez pas les DACL NULL

Page 33: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

SeSe méfierméfier dede lala sécuritésécurité parpar la dissimulationla dissimulation

NeNe cachezcachez paspas lesles clésclés dede sécuritésécurité dansdans desdes fichiersfichiers

Méfiez-vous des clés du Registre non Méfiez-vous des clés du Registre non documentéesdocumentées

Partez toujours du principe qu'un intrus Partez toujours du principe qu'un intrus en sait autant que vousen sait autant que vous

Page 34: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

UtiliserUtiliser DPAPIDPAPI pourpour protégerprotéger la confidentialitéla confidentialité

DeuxDeux fonctionsfonctions DPAPIDPAPI  ::CryptProtectDataCryptProtectData

CryptUnprotectDataCryptUnprotectData

Deux magasins pour les données cryptées Deux magasins pour les données cryptées avec DPAPI :avec DPAPI :

Magasin d'utilisateurMagasin d'utilisateur

Magasin d'ordinateurMagasin d'ordinateur

Page 35: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

DémonstrationDémonstration 22 DPAPIDPAPI

StockageStockage dede chaîneschaînes dede connexionconnexion dansdans Web.configWeb.config

CryptageCryptage dede chaîneschaînes dede connexionconnexion avecavec DPAPIDPAPIInstallationInstallation dede l'utilitairel'utilitaire Aspnet_setregAspnet_setreg

UtilisationUtilisation d'attributsd'attributs cryptéscryptés dansdans unun fichierfichier dede configurationconfiguration

OctroiOctroi d'autorisationsd'autorisations sursur desdes clésclés dede RegistreRegistre

DémonstrationDémonstration 22 DPAPIDPAPI

StockageStockage dede chaîneschaînes dede connexionconnexion dansdans Web.configWeb.config

CryptageCryptage dede chaîneschaînes dede connexionconnexion avecavec DPAPIDPAPIInstallationInstallation dede l'utilitairel'utilitaire Aspnet_setregAspnet_setreg

UtilisationUtilisation d'attributsd'attributs cryptéscryptés dansdans unun fichierfichier dede configurationconfiguration

OctroiOctroi d'autorisationsd'autorisations sursur desdes clésclés dede RegistreRegistre

Page 36: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ÉchouerÉchouer intelligemmentintelligemment (1)(1)

SiSi votrevotre codecode échoue,échoue, vérifiezvérifiez qu'ilqu'il lele faitfait dede manièremanière sécuriséesécurisée

DWORD dwRet = 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…

}

Que faire si IsAccessAllowed()

renvoie ERROR_NOT_

ENOUGH_MEMORY ?

Que faire si IsAccessAllowed()

renvoie ERROR_NOT_

ENOUGH_MEMORY ?

Page 37: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ÉchouerÉchouer intelligemmentintelligemment (2)(2)NeNe paspas fairefaire  ::

Révéler des informations dans des messages Révéler des informations dans des messages d'erreurd'erreur

Utiliser des ressources immédiatement après Utiliser des ressources immédiatement après une défaillanceune défaillance

Faire :Faire :Utiliser des blocs de gestion des exceptions pour Utiliser des blocs de gestion des exceptions pour empêcher la propagation des erreurs vers empêcher la propagation des erreurs vers l'appelantl'appelantÉcrire les échecs suspects dans un journal des Écrire les échecs suspects dans un journal des événementsévénements

<customErrors mode="On"/>

Page 38: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

TesterTester lala sécuritésécuritéImpliquezImpliquez lesles équipeséquipes dede testtest dèsdès lele débutdébut desdes projetsprojetsUtilisez la modélisation des menaces pour Utilisez la modélisation des menaces pour développer développer une stratégie de test de sécuritéune stratégie de test de sécuritéPensez comme l'ennemi. Soyez comme l'ennemi. Pensez comme l'ennemi. Soyez comme l'ennemi. Testez comme l'ennemi.Testez comme l'ennemi.

Automatisez les attaques avec des scripts et des Automatisez les attaques avec des scripts et des langages langages de programmation de niveau inférieurde programmation de niveau inférieurSoumettez des données non validesSoumettez des données non validesSupprimez ou refusez l'accès aux fichiers ou aux Supprimez ou refusez l'accès aux fichiers ou aux entrées entrées de Registrede RegistreTestez avec un compte non administrateurTestez avec un compte non administrateur

Apprenez à connaître votre ennemiApprenez à connaître votre ennemiQuelles techniques et technologies utiliseront les Quelles techniques et technologies utiliseront les pirates ?pirates ?

Quelles techniques et technologies peuvent utiliser les Quelles techniques et technologies peuvent utiliser les testeurs ?testeurs ?

Page 39: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

TirerTirer lesles leçonsleçons dede sesses erreurserreursSiSi vousvous rencontrezrencontrez unun problèmeproblème liélié àà lala sécurité,sécurité, tirez-entirez-en lesles leçonsleçons  ::

Comment est arrivée l'erreur de sécurité ?Comment est arrivée l'erreur de sécurité ?

Le code contient-il plusieurs fois cette même Le code contient-il plusieurs fois cette même erreur ?erreur ?

Comment aurait-elle pu être évitée ?Comment aurait-elle pu être évitée ?

Que faut-il changer pour que ce type d'erreur Que faut-il changer pour que ce type d'erreur ne se reproduise pas ?ne se reproduise pas ?

Faut-il actualiser le matériel de formation ou Faut-il actualiser le matériel de formation ou les outils d'analyse ?les outils d'analyse ?

Page 40: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

RésuméRésumé dede lala sessionsession

ProcessusProcessus dede développementdéveloppement sécurisésécurisé

Modélisation des menacesModélisation des menaces

Atténuation des risquesAtténuation des risques

Méthodes conseillées pour améliorer la Méthodes conseillées pour améliorer la sécuritésécurité

Page 41: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

PourPour plusplus d'informationsd'informations

SiteSite MicrosoftMicrosoft sursur lala sécuritésécurité (tout(tout public)public)http://www.microsoft.com/http://www.microsoft.com/france/securitefrance/securite//default.aspdefault.asp

Site MSDN sur la sécurité (développeurs)Site MSDN sur la sécurité (développeurs)http://http://msdn.microsoft.commsdn.microsoft.com/security/security (en anglais) (en anglais)

Site TechNet sur la sécurité (informaticiens)Site TechNet sur la sécurité (informaticiens)http://www.microsoft.com/france/technet/themes/shttp://www.microsoft.com/france/technet/themes/secur/default.aspecur/default.asp

Page 42: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

ÉtapesÉtapes suivantessuivantes1.1. ÊtreÊtre informéinformé sursur lala sécuritésécurité

S'inscrire aux bulletins de sécurité :S'inscrire aux bulletins de sécurité :http://www.microsoft.com/security/security_bulletins/alerts2.asphttp://www.microsoft.com/security/security_bulletins/alerts2.asp (en anglais)(en anglais)

Obtenir l'aide la plus récente de Microsoft sur la sécurité :Obtenir l'aide la plus récente de Microsoft sur la sécurité :http://www.microsoft.com/http://www.microsoft.com/france/securite/default.aspfrance/securite/default.asp

2.2. Obtenir des formations supplémentaires sur Obtenir des formations supplémentaires sur la sécuritéla sécurité1.1. Trouver des séminaires de formation en ligne et en classe :Trouver des séminaires de formation en ligne et en classe :

http://www.microsoft.com/http://www.microsoft.com/france/events/default.aspfrance/events/default.asp

1.1. Trouver un centre CTEC local pour des cours pratiques :Trouver un centre CTEC local pour des cours pratiques :http://www.microsoft.com/http://www.microsoft.com/france/formation/centres/recherche.aspfrance/formation/centres/recherche.asp

Page 43: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.

QuestionsQuestions ??

Page 44: É criture de code s é curis é – M é thodes Eric Mittelette (ericmitt@microsoft.com) ericmitt@microsoft.com Jean Gautier (jeanga@microsoft.com ) jeanga@microsoft.com.