Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et...
-
Upload
alain-blanchet -
Category
Documents
-
view
105 -
download
0
Transcript of Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et...
Écriture de code Écriture de code sécurisé : la quête sécurisé : la quête du Graal ?du Graal ?
Écriture de code Écriture de code sécurisé : la quête sécurisé : la quête du Graal ?du Graal ?
Bernard OurghanlianBernard OurghanlianDirecteur Technologie et Directeur Technologie et SécuritéSécuritéMicrosoft France Microsoft France
La quête du Graal ?La quête du Graal ?
« La programmation est aujourd’hui une course entre les ingénieurs informaticiens qui essaient de construire des programmes plus grands et mieux à l’épreuve des idiots, et l’univers qui essaie de produire des idiots plus grands et plus idiots. Jusqu’à présent, l’univers gagne. »
Rich Cook
La quête du Graal ?La quête du Graal ?
Convocation de centenaires à l'école Convocation de centenaires à l'école :: Convocation à l’école de personnes âgées de 106 Convocation à l’école de personnes âgées de 106 ansans
CauseCause : codage sur deux caractères : codage sur deux caractères
Mission VénusMission Vénus : Passage à 5 000 000 Km de la : Passage à 5 000 000 Km de la planète, au lieu des 5 000 Km prévusplanète, au lieu des 5 000 Km prévus
CauseCause : remplacement d'une virgule par un point (format : remplacement d'une virgule par un point (format US des nombres)US des nombres)
Passage de la ligne :Passage de la ligne : Au passage de l’équateur Au passage de l’équateur un F16 est déclaré se retrouver sur le dosun F16 est déclaré se retrouver sur le dos
CauseCause : changement de signe de la latitude mal pris en : changement de signe de la latitude mal pris en comptecompte
Y2KY2K : La célèbre bogue de l’an 2 000 : La célèbre bogue de l’an 2 000La lutte contre le bogue de l’an 2000 aurait coûté à la La lutte contre le bogue de l’an 2000 aurait coûté à la France 500 milliards de francsFrance 500 milliards de francsCauseCause : la donnée « année » était codée sur deux : la donnée « année » était codée sur deux caractères, pour gagner un peu de place (et parce que l’on caractères, pour gagner un peu de place (et parce que l’on imaginait pas que les programmes dureraient si imaginait pas que les programmes dureraient si longtemps…)longtemps…)
La quête du Graal ?La quête du Graal ?
Faux départ de la première navetteFaux départ de la première navetteCauseCause : manque de synchronisation entre les calculateurs : manque de synchronisation entre les calculateurs assurant la redondanceassurant la redondance
280 morts « inutiles » pendant la guerre du 280 morts « inutiles » pendant la guerre du Golfe Golfe
CauseCause : non différenciation entre avion civil et avion militaire : non différenciation entre avion civil et avion militaire
Bogue du 21 août 2000Bogue du 21 août 2000 pour le système GPSpour le système GPSCauseCause : les 24 satellites du système GPS ont deux compteurs : les 24 satellites du système GPS ont deux compteurs de temps : l’un pour les secondes, remis à zéro chaque de temps : l’un pour les secondes, remis à zéro chaque semaine ; l’autre totalisant les semaines écoulées depuis le 5 semaine ; l’autre totalisant les semaines écoulées depuis le 5 janvier 1980, sur 10 bits (1024 valeurs)janvier 1980, sur 10 bits (1024 valeurs)
Ce compteur aurait malheureusement subi à un dépassement le Ce compteur aurait malheureusement subi à un dépassement le 21 août en question si des précautions n’avaient pas été prises à 21 août en question si des précautions n’avaient pas été prises à tempstemps
2 jours sans courant pour la station Mir, 2 jours sans courant pour la station Mir, du 14 au du 14 au 16 novembre 199716 novembre 1997
CauseCause : problème sur un ordinateur qui contrôlait l’orientation : problème sur un ordinateur qui contrôlait l’orientation des panneaux solairesdes panneaux solaires
La quête du Graal ?La quête du Graal ?
Échec du premier lancement d'Ariane V : Échec du premier lancement d'Ariane V : la nouvelle fusée Ariane V, quarante secondes la nouvelle fusée Ariane V, quarante secondes après son décollage, explosait en vol après son décollage, explosait en vol CauseCause : Une simple bogue dans une : Une simple bogue dans une conversion de format pour faire un calcul ne conversion de format pour faire un calcul ne servant à rienservant à rien
Le rapport de la commission d’enquête met Le rapport de la commission d’enquête met clairement en cause une portion de code qui a clairement en cause une portion de code qui a essayé de convertir un nombre flottant trop grand essayé de convertir un nombre flottant trop grand en un entier codé sur 16 bits en un entier codé sur 16 bits Un bogue dans une conversion de format pour Un bogue dans une conversion de format pour faire un calcul qui ne sert à rien (le calcul de la faire un calcul qui ne sert à rien (le calcul de la composante horizontale de la vitesse ne sert pas composante horizontale de la vitesse ne sert pas sur Ariane V) ce n’est qu’une simple, une toute sur Ariane V) ce n’est qu’une simple, une toute petite erreur mais son coût a été énorme (coût du petite erreur mais son coût a été énorme (coût du programme d’étude d’Ariane V : 38 milliards de programme d’étude d’Ariane V : 38 milliards de francs) et à provoqué un retard de plus d’un an francs) et à provoqué un retard de plus d’un an pour le programme du nouveau lanceurpour le programme du nouveau lanceur
La quête du Graal ?La quête du Graal ?
Difficultés sur la mission Mars Difficultés sur la mission Mars Pathfinder Pathfinder (atterrissage le 4 juillet (atterrissage le 4 juillet 1997)1997)
CauseCause : Des réinitialisations inopinées de : Des réinitialisations inopinées de l’ordinateur de bord retardent la mission l’ordinateur de bord retardent la mission
A Pasadena, les informaticiens travaillent A Pasadena, les informaticiens travaillent d’arrache-pied pour dénicher le bogue. Celui-ci d’arrache-pied pour dénicher le bogue. Celui-ci est finalement débusqué au sortir d’une nuit est finalement débusqué au sortir d’une nuit blanche : une mauvaise gestion des priorités des blanche : une mauvaise gestion des priorités des tâches à effectuer est à l’origine du problèmetâches à effectuer est à l’origine du problème
Une instruction suit pour le réparer. Le patch est Une instruction suit pour le réparer. Le patch est téléchargé vers la sonde après quelques tests téléchargé vers la sonde après quelques tests supplémentairessupplémentaires
Logiciel de qualitéLogiciel de qualité
Logicielsécurisé
Logiciel fiable
Logiciel dequalité
Un logiciel sécurité est un sous-ensemble d’un logiciel de qualité
error_status_t _RemoteActivation(WCHAR *pwszObjectName, ... ) { *phr = GetServerPath( pwszObjectName, &pwszObjectName); ...}
HRESULT GetServerPath(WCHAR *pwszPath, WCHAR **pwszServerPath ){ WCHAR * pwszFinalPath = pwszPath; WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]; hr = GetMachineName(pwszPath, wszMachineName); *pwszServerPath = pwszFinalPath;
}
HRESULT GetMachineName( WCHAR * pwszPath, WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]) { pwszServerName = wszMachineName; LPWSTR pwszTemp = pwszPath + 2; while ( *pwszTemp != L'\\' ) *pwszServerName++ = *pwszTemp++;
La quête du Graal ?La quête du Graal ?Port 135 (en provenance de l’Internet)Port 135 (en provenance de l’Internet)
error_status_t _RemoteActivation(WCHAR *pwszObjectName, ... ) { *phr = GetServerPath( pwszObjectName, &pwszObjectName); ...}
HRESULT GetServerPath(WCHAR *pwszPath, WCHAR **pwszServerPath ){ WCHAR * pwszFinalPath = pwszPath; WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]; hr = GetMachineName(pwszPath, wszMachineName); *pwszServerPath = pwszFinalPath;
}
HRESULT GetMachineName( WCHAR * pwszPath, WCHAR wszMachineName[MAX_COMPUTERNAME_LENGTH_FQDN + 1]) { pwszServerName = wszMachineName; LPWSTR pwszTemp = pwszPath + 2; while ((*pwszTemp != 0) &&
(( *pwszTemp != L'\\' ) &&
( dwCount < MAX_COMPUTERNAME_LENGTH_FQDN ) )){
*pwszServerName++ = *pwszTemp++;
dwCount++;
}
La quête du Graal ?La quête du Graal ?
CORRIGE
Le coeur de l’erreur…Le coeur de l’erreur…
Copier des données Copier des données indignes de indignes de confianceconfiance
while (*c!=somechar) *p++ = *c++while (*c!=somechar) *p++ = *c++ est contraint par les données sources, est contraint par les données sources, pas par la taille de la destinationpas par la taille de la destination
while (*c != ‘\\’) *p++ = *c++;
Contraint seulement par les données source
Vient du réseau !
Pourquoi est-ce important de Pourquoi est-ce important de se préoccuper des se préoccuper des applications ?applications ?“Today over 70% of attacks against a company’s Web site or Web application come at the ‘Application Layer’ not the Network or System layer.”
Gartner Group
“Web Application incidents cost companies more than $260,000,000 in 2000.”
CSI/FBI Survey
Les failles de sécurité Les failles de sécurité coûtent cher à réparer…coûtent cher à réparer…
Coût lié à la coordination du développementCoût lié à la coordination du développementCoût des développeurs trouvant le code vulnérableCoût des développeurs trouvant le code vulnérableCoût des développeurs créant le correctifCoût des développeurs créant le correctifCoût des testeurs testant l’installation du correctifCoût des testeurs testant l’installation du correctifCoûts liés à la création et aux tests des versions Coûts liés à la création et aux tests des versions localiséeslocaliséesCoût de la signature numérique du correctifCoût de la signature numérique du correctifCoût de la mise en ligne du correctifCoût de la mise en ligne du correctifCoût de la rédaction de la documentation du Coût de la rédaction de la documentation du correctifcorrectifCoût liés aux relations publiquesCoût liés aux relations publiquesCoût de la bande passante et du téléchargementCoût de la bande passante et du téléchargementCoût de la perte de productivité des développeursCoût de la perte de productivité des développeursCoût de l’application du correctifCoût de l’application du correctifCoût potentiel lié à la perte de revenusCoût potentiel lié à la perte de revenus
Chez Microsoft, au sein du MSRC, on estime que le coût de création d’un correctif est de
100 000 $
Il y a deux types majeurs Il y a deux types majeurs de défaut de sécuritéde défaut de sécurité
1.1. Les problèmes liées à une confiance Les problèmes liées à une confiance injustifiée dans les entréesinjustifiée dans les entrées
2.2. Tout le reste…Tout le reste…
Problèmes liées à une Problèmes liées à une confiance injustifiée dans les confiance injustifiée dans les entréesentrées Buffer OverrunsBuffer Overruns
Injection SQL Injection SQL
Cross-Site ScriptingCross-Site Scripting
10101101101101011011101011011011010110111101000101001010
Dupont Dupont’ drop table facture --
Dupont <script>var i=document.cookie</script>
Pourquoi est-ce important de Pourquoi est-ce important de se préoccuper des se préoccuper des applications ?applications ?Pourcentage d’attaques réussies au niveau applicatif en fonction du type d’attaque
Cross-site scripting 80%
Database server
33%
SQL injection 62% Web server 23%
Parameter Tampering
60% Buffer overflow 19%
Cookies poisoning 37% Source Imperva basée sur plus de 300 grands comptes et sur les 4 dernières années – Netcost & Security
Que sont ces Que sont ces Buffer Buffer Overruns Overruns ??Les données en provenance de l’extérieur Les données en provenance de l’extérieur
ont une taille plus importante que la ont une taille plus importante que la destinationdestinationLe fait de déborder la taille du tampon Le fait de déborder la taille du tampon mémoire de destination écrase certaines mémoire de destination écrase certaines constructions mémoire sensibles qui constructions mémoire sensibles qui déterminent le flux d’exécutiondéterminent le flux d’exécution
Ceci a pour conséquence la modification par Ceci a pour conséquence la modification par l’application du flux d’exécutionl’application du flux d’exécutionVers le code de l’attaquant qui est inclus dans Vers le code de l’attaquant qui est inclus dans les donnéesles données
Le code C ou C++ est la victime la plus Le code C ou C++ est la victime la plus classiqueclassique
Accès direct à la mémoireAccès direct à la mémoireLa cause : accorder une trop grande La cause : accorder une trop grande confiance aux entréesconfiance aux entrées
A quel point les BO sont-ils A quel point les BO sont-ils fréquents ?fréquents ?
Source : Les sites Web des fournisseursdu 1 jan. 2003 au 1 oct. 2003
30
55
100
172
1118
27
62
0
20
40
60
80
100
120
140
160
180
200
Microsoft Sun RedHat Debian
Bulletins (2003) Buffer Overruns
Pourquoi sont-ils si fréquents Pourquoi sont-ils si fréquents ??
Il y a beaucoup de code C ou C++Il y a beaucoup de code C ou C++Une grande partie de ce code C ou C++ est Une grande partie de ce code C ou C++ est maintenant connecté à l’Internetmaintenant connecté à l’InternetDe nombreuses structures de données De nombreuses structures de données contiennent des contiennent des jumpsjumps à du code à du code
Adresse de pile, pointeurs vers des fonctions, Adresse de pile, pointeurs vers des fonctions, gestionnaires d’exception, v-tables de classes C++, etc.gestionnaires d’exception, v-tables de classes C++, etc.
Les menaces évoluent constammentLes menaces évoluent constammentIl y eut d’abord les débordement sur la pile (la Il y eut d’abord les débordement sur la pile (la stackstack))Puis les débordements sur le tas (la Puis les débordements sur le tas (la heapheap))Puis les débordements de formatage de chaînes de Puis les débordements de formatage de chaînes de caractèrescaractèresPuis les débordement d’un octetPuis les débordement d’un octetMaintenant les débordements d’entiersMaintenant les débordements d’entiersQui aura-t-il ensuite ?Qui aura-t-il ensuite ?
Les développeurs ne contrôlent pas Les développeurs ne contrôlent pas les données en entrée !les données en entrée !
Les évolutions de Les évolutions de Visual Visual StudioStudio
Adresses croissantes
Buffers Variables
EB
P
EIP Args
Visual Studio 6
Buffers Variables
EB
P
EIP Args
cookie
Visual Studio.NET (avec /GS)
BuffersVariablesEB
P
EIP Args
cookie
Visual Studio 2003 (avec /GS et sécurités supplémentaires)
EBP : Registre Stack Base pointer : détient l’adresse de base de la pileEIP : Registre Index Pointer détient le déplacement de la prochaine instruction
Option /GS :Insertion d’une valeur tampon aléatoire dans la pileappelée « canary » ou « cookie »appelée « canary » ou « cookie »
Buffer OverflowBuffer Overflow
Injection SQLInjection SQL
Le logiciel : une bête Le logiciel : une bête curieusecurieuse
Définition (encyclopédie Encarta) : Définition (encyclopédie Encarta) : Programme de traitement de l'information Programme de traitement de l'information contenant les procédures et les données contenant les procédures et les données nécessaires à une application nécessaires à une application
Ensemble des programmes constituant le Ensemble des programmes constituant le dispositif de base qui permet de faire dispositif de base qui permet de faire fonctionner un ordinateurfonctionner un ordinateur
Le logiciel devrait un produit industriel Le logiciel devrait un produit industriel comme les autrescomme les autres et pourtant, c'est un et pourtant, c'est un « être » scientifique « être » scientifique pas comme les pas comme les autresautres
Le logiciel : une bête Le logiciel : une bête curieusecurieuse
Il est visible mais intangibleIl est visible mais intangible
Il vieillit mais ne s’use pasIl vieillit mais ne s’use pas
Il ne se détériore pas sous l’effet des testsIl ne se détériore pas sous l’effet des tests
Il est encore et toujours fabriqué Il est encore et toujours fabriqué artisanalementartisanalement
Il est (trop ?) facilement reproductibleIl est (trop ?) facilement reproductible
Il est (trop ?) facile à modifierIl est (trop ?) facile à modifier
Il est d'une grande complexité : coût très Il est d'une grande complexité : coût très (trop ?) élevé(trop ?) élevé
......
Construire du logiciel…Construire du logiciel…
LogicielLogiciel
SécuritéRespect de la vie privée
Fiabilité
Supportable
Gérable
DéployableCompatible
Abordable
International
Accessible
Utilisable (fonctions)
Faisable (calendrier, $, compétences)
Construire du logicielConstruire du logiciel
LogicielLogiciel
SécuritéSécurité
Respect de la vie privéRespect de la vie privé
FiabilitéFiabilité
Supportable
Gérable
DéployableCompatible
Abordable
International
Accessible
Utilisable (fonctions)
Faisable (cal., $, compétences)
SDSD33 + Communications + Communications
Engagement clair sur la sécuritéEngagement clair sur la sécuritéMembre à part entière de la communauté de la Membre à part entière de la communauté de la sécuritésécurité
Microsoft Security Response CenterMicrosoft Security Response Center
La sécuritéLa sécurité
Secure Secure by Designby Design
Secure Secure by Defaultby Default
Secure in Secure in DeploymentDeployment
CommunicationsCommunications
Architecture sécuriséeArchitecture sécuriséeFonctionnalités « conscientes » de sécuritéFonctionnalités « conscientes » de sécuritéRéduction des vulnérabilités dans le codeRéduction des vulnérabilités dans le code
Réduction de la surface d’attaqueRéduction de la surface d’attaqueFonctionnalités inutilisées hors service par Fonctionnalités inutilisées hors service par défautdéfautBesoin minimum en privilègesBesoin minimum en privilèges
Protéger, détecter, défendre, récupérer, gérerProtéger, détecter, défendre, récupérer, gérerProcessus : How to’s, guides d’architectureProcessus : How to’s, guides d’architectureHommes : les former !Hommes : les former !
Améliorer la qualitéAméliorer la qualitéProcessus de développement Processus de développement Trustworthy ComputingTrustworthy Computing
M1
M2
Mn
Beta
ConceptionD
ével
op
pem
ent
Sortie
Support
Revuede
sécurité
Revuede
sécurité
Chaque équipe développe une modélisation Chaque équipe développe une modélisation des menaces de son composant afin de des menaces de son composant afin de s’assurer que la conception bloque bien les s’assurer que la conception bloque bien les menaces applicablesmenaces applicables
Dév &test
Dév &test
Application des standards de codage et de Application des standards de codage et de conception de sécuritéconception de sécuritéOutils pour éliminer les erreurs du code (PREfix Outils pour éliminer les erreurs du code (PREfix & PREfast)& PREfast)Surveillance et blocage des nouvelles Surveillance et blocage des nouvelles techniques d’attaquetechniques d’attaque
Security Push
Security Push
Focalisation de toute l’équipeFocalisation de toute l’équipe
Mise à jour de la modélisation des menaces, Mise à jour de la modélisation des menaces, revue de code, passage au crible des tests et revue de code, passage au crible des tests et de la documentationde la documentation
Auditde
sécurité
Auditde
sécurité
Analyse vis à vis des menaces courantesAnalyse vis à vis des menaces courantes
Tests de pénétration par des équipes Tests de pénétration par des équipes internes et de sociétés tiercesinternes et de sociétés tierces
Security ResponseSecurity
Response
Correction des problèmes nouvellement Correction des problèmes nouvellement découvertsdécouverts
Analyse des causes pour trouver et Analyse des causes pour trouver et corriger de manière proactive les corriger de manière proactive les vulnérabilités associéesvulnérabilités associées
Docs de conception & spécifications
Développement test et
documentation
Produit
Service Packs,
correctifs
AméliorationAmélioration dudu processusprocessus dede développementdéveloppement d'applicationsd'applicationsPrenezPrenez 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 À chaque étape clé de la révision du logiciellogiciel
Recherchez les bogues liés à la Recherchez les bogues liés à la sécurité jusqu'à la fin du processus sécurité jusqu'à la fin du processus de développementde développement
ChronologieChronologie dudu développementdéveloppement d'un logicield'un logiciel sécurisésécurisé
PlansPlans dede testtestterminésterminés
ConceptionsConceptionsterminéesterminées
ConceptConcept CodeCodeterminéterminé
DiffusionDiffusion Post-diffusionPost-diffusion
Déterminer les critères de validation
de la sécurité
Apprendre et affiner
Analyser les menaces
Révision de la sécurité par l'équipe
Envoyer pour une révision
externe
Tester la mutation des données et les
privilèges minimaux
Évaluer les connaissances sur la sécurité lors du
recrutement de l'équipe
Former les membres de l'équipe
Tester les vulnérabilités
de sécurité
Résoudre les problèmes liés à la sécurité, vérifier que le code respecte
les consignes de sécurité
=continu
SécuritéSécurité dèsdès lala conceptionconceptionSensibiliserSensibiliser l'équipel'équipe dede conceptionconception àà lala sécuritésécurité
Assurer une formation continueAssurer une formation continue
Bousculer les esprits : l’idée reçue selon laquelle Bousculer les esprits : l’idée reçue selon laquelle « Ce que je ne connais pas n'est pas dangereux « Ce que je ne connais pas n'est pas dangereux pour moi » n'est pas vraie !pour moi » n'est pas vraie !
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 Mettre en œuvre la sécurité comme fonctionnalité clé du produitfonctionnalité clé du produit
Utiliser la modélisation des menaces pendant Utiliser la modélisation des menaces pendant la phase de conceptionla phase de conception
Qu'est-ceQu'est-ce queque lala modélisationmodélisation des menacesdes menaces ??
LaLa modélisationmodélisation desdes menacesmenaces estest uneune analyseanalyse baséebasée sursur lala sécuritésécurité dontdont lesles objectifsobjectifs sontsont lesles suivantssuivants ::
Aider l’équipe à identifier les vulnérabilités du Aider l’équipe à identifier les vulnérabilités du logiciellogicielÉvaluer les menaces relatives à une Évaluer les menaces relatives à une applicationapplication Réduire les risques globaux à l'égard de la Réduire les risques globaux à l'égard de la sécuritésécuritéIdentifier les ressourcesIdentifier les ressourcesDécouvrir les vulnérabilitésDécouvrir les vulnérabilitésIdentifier les menacesIdentifier les menacesPermettre d'établir la base des spécifications Permettre d'établir la base des spécifications de conception en matière de sécuritéde conception en matière de sécurité
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
ProcessusProcessus dede modélisationmodélisation des menacesdes menaces
Identifier les ressources1
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
CodageCodage pourpour unun modèlemodèle dede menacemenace
UtilisezUtilisez lala modélisationmodélisation desdes menacesmenaces pourpour ::déterminer les parties les plus « dangereuses » déterminer les parties les plus « dangereuses » de votre applicationde votre application
classer par ordre de priorité les efforts de classer par ordre de priorité les efforts de sécuritésécurité
classer par ordre de priorité les révisions classer par ordre de priorité les révisions de code régulièresde code régulières
déterminer les techniques d'atténuation déterminer les techniques d'atténuation des menaces à utiliserdes menaces à utiliser
déterminer le flux de donnéesdéterminer le flux de données
Implémenter le Implémenter le FrameworkFrameworkLes 10 points clés pour les Les 10 points clés pour les développeursdéveloppeurs
Secure Secure by by
DesignDesign
Secure Secure by by
DefaultDefault
Secure in Secure in DeploymeDeployme
ntnt
1. Construire des modèles de menace
2. Supprimer les défauts dans le code
3. Éviter de nouveaux défauts de sécurité
4. Utiliser du code managé aujourd’hui
5. Utiliser outils & checklistsRéduire la surface d’attaque :6. Mettre hors service les
fonctionnalités7. Requérir le minimum de privilèges8. Ajouter des couches défensives
supplémentaires
9. Être bien disposé à l’égard des firewalls et antivirus
10. Créer des guides de sécurité et une bonne documentation
Développeurs : Développeurs : pour résumerpour résumerSecure by DesignSecure by Design Un processus qui favorise Un processus qui favorise
les systèmes sécurisésles systèmes sécurisés Construire des modèles de Construire des modèles de
menacemenace Conduire des revues de Conduire des revues de
code, des tests de code, des tests de pénétrationpénétration
Exécuter le code avec des Exécuter le code avec des privilèges minimauxprivilèges minimauxSecure by DefaultSecure by Default
Minimiser la surface Minimiser la surface d’attaque (services d’attaque (services offoff par par défaut)défaut)
Sécuriser les servicesSécuriser les services Utiliser les fonctions de Utiliser les fonctions de
sécurité de Visual sécurité de Visual Studio .NETStudio .NETSecure in DeploymentSecure in Deployment
Tirer parti des meilleures Tirer parti des meilleures pratiquespratiques
Créer des guides de Créer des guides de sécuritésécurité
Construire des outils pour Construire des outils pour évaluer la sécurité des évaluer la sécurité des applicationsapplications
Microsoft Developer NetworkMicrosoft Developer Networkhttp://msdn.microsoft.com/securithttp://msdn.microsoft.com/securityy
Patterns and Practices GuidesPatterns and Practices Guideshttp://www.microsoft.com/patternhttp://www.microsoft.com/patternss
Écrire du Code Écrire du Code Sécurisé 2Sécurisé 2
Le balancier de la sécurité Le balancier de la sécurité logicielle – Où nous logicielle – Où nous étions…étions…
Facile à utiliserFacile à utiliser
Large surface Large surface d’attaqued’attaque
« Automagique »« Automagique »
Rapidité de l’InternetRapidité de l’Internet
Les logiciels (et les Les logiciels (et les attaques) fonctionnent attaques) fonctionnent sans que l’on se pose sans que l’on se pose de questionsde questions
Usage Usage & &
FonctionsFonctions
Sécurité Sécurité & &
Vie PrivéeVie Privée
Le balancier de la sécurité Le balancier de la sécurité logicielle – Où nous logicielle – Où nous sommes…sommes…
Surface d’attaque Surface d’attaque réduiteréduiteSouvent plus difficile à Souvent plus difficile à utiliserutiliserSécurité anxiogèneSécurité anxiogènePlus long à mettre sur le Plus long à mettre sur le marchémarchéDe nombreuses De nombreuses questions relatives à la questions relatives à la sécurité (pour sécurité (pour l’utilisateur)l’utilisateur)
Usage Usage & &
FonctionsFonctions
Sécurité Sécurité & &
Vie PrivéeVie Privée
Le balancier de la sécurité Le balancier de la sécurité logicielle – Où nous devrions logicielle – Où nous devrions être…être…
Petite surface Petite surface d’attaqued’attaqueLa sécurité et le La sécurité et le respect de la vie privée respect de la vie privée sont des fonctionnalités sont des fonctionnalités de premier plande premier planPeu de questions Peu de questions relatives à la sécuritérelatives à la sécurité
Transparent quand c’est Transparent quand c’est possiblepossibleConfigurable là où c’est Configurable là où c’est nécessairenécessaire
Utilisable de manière Utilisable de manière sécuriséesécurisée
Usage Usage & &
FonctionsFonctions
Sécurité Sécurité & &
Vie PrivéeVie Privée
Créer un Créer un système système sécurisésécurisé
Exécution en toute sécuritéExécution en toute sécuritéSecure Execution EnvironmentSecure Execution Environment (SEE) (SEE)Behavior Blocking/SandboxingBehavior Blocking/Sandboxing/NX/NXSoftware Restriction PolicySoftware Restriction PolicyCode digne de confianceCode digne de confianceLUA/PA/SEELUA/PA/SEEInterface homme machine de Interface homme machine de consentementconsentement
Exécution en toute sécuritéExécution en toute sécuritéSecure Execution EnvironmentSecure Execution Environment (SEE) (SEE)Behavior Blocking/SandboxingBehavior Blocking/Sandboxing/NX/NXSoftware Restriction PolicySoftware Restriction PolicyCode digne de confianceCode digne de confianceLUA/PA/SEELUA/PA/SEEInterface homme machine de Interface homme machine de consentementconsentement
Construire du code Construire du code sécurisésécurisé
Visual StudioVisual StudioSecure Execution Secure Execution EnvironmentEnvironment (SEE) (SEE)
Construire du code Construire du code sécurisésécurisé
Visual StudioVisual StudioSecure Execution Secure Execution EnvironmentEnvironment (SEE) (SEE)
Communiquer en toute Communiquer en toute sécuritésécurité
Carte à puce, système d’identité, Carte à puce, système d’identité, support de la biométriesupport de la biométrieRéseau sécurisé, WS-SecurityRéseau sécurisé, WS-SecurityInternet Connection FirewallInternet Connection FirewallCross-Organizational TrustCross-Organizational Trust
Communiquer en toute Communiquer en toute sécuritésécurité
Carte à puce, système d’identité, Carte à puce, système d’identité, support de la biométriesupport de la biométrieRéseau sécurisé, WS-SecurityRéseau sécurisé, WS-SecurityInternet Connection FirewallInternet Connection FirewallCross-Organizational TrustCross-Organizational Trust
Rester sécuriséRester sécuriséWindows Update Service (WUS)Windows Update Service (WUS)Microsoft Audit Collection Service Microsoft Audit Collection Service Security Configuration WizardSecurity Configuration WizardWindows UpdateWindows UpdateTrust CenterTrust Center
Rester sécuriséRester sécuriséWindows Update Service (WUS)Windows Update Service (WUS)Microsoft Audit Collection Service Microsoft Audit Collection Service Security Configuration WizardSecurity Configuration WizardWindows UpdateWindows UpdateTrust CenterTrust Center
Démarrer en toute sécuritéDémarrer en toute sécuritéSignature des driversSignature des driversProtection des DLL systèmeProtection des DLL systèmeICF tôt dans la phase de ICF tôt dans la phase de bootbootIntégrité du codeIntégrité du codeBoot Boot sécurisé assisté par le sécurisé assisté par le hardwarehardware
Démarrer en toute sécuritéDémarrer en toute sécuritéSignature des driversSignature des driversProtection des DLL systèmeProtection des DLL systèmeICF tôt dans la phase de ICF tôt dans la phase de bootbootIntégrité du codeIntégrité du codeBoot Boot sécurisé assisté par le sécurisé assisté par le hardwarehardware
LonghornLonghorn et la sécurité et la sécurité
Intégrité du codeIntégrité du codeWindows et tout le code système (y compris les Windows et tout le code système (y compris les driversdrivers) ) sont signéssont signésLe Le loaderloader contrôle le contrôle le hash hash de chaque fichier lors du de chaque fichier lors du démarrage du système pour s’assurer qu’il est bien dans démarrage du système pour s’assurer qu’il est bien dans l’un de ses catalogues signésl’un de ses catalogues signésLa politique de sécurité détermine ce qui peut être chargéLa politique de sécurité détermine ce qui peut être chargé
Software Restriction PolicySoftware Restriction PolicyLes administrateurs peuvent spécifier le code qui peut et celui Les administrateurs peuvent spécifier le code qui peut et celui qui ne peut pas s’exécuterqui ne peut pas s’exécuterLe code peut être identifié par : Le code peut être identifié par : hashhash, emplacements , emplacements d’installation ou d’exécutiond’installation ou d’exécution
Assistance hardware pour un Assistance hardware pour un bootboot sécurisé sécuriséDes technologies comme Des technologies comme Next Generation Secure Next Generation Secure Computing BaseComputing Base (NGSCB) fournissent le support pour un (NGSCB) fournissent le support pour un bootboot sécurisé assisté par le hardware sécurisé assisté par le hardware
LonghornLonghorn et la sécurité et la sécurité
Protected AdministratorProtected Administrator (PA) (PA)Les quelques applications qui ont besoin d’être Les quelques applications qui ont besoin d’être exécutées avec des privilèges d’administration exécutées avec des privilèges d’administration peuvent être marquées comme dignes de peuvent être marquées comme dignes de confiance (confiance (trustedtrusted))Le système fournit un environnement Le système fournit un environnement d’exécution isolé où seules ces applications d’exécution isolé où seules ces applications peuvent s’exécuterpeuvent s’exécuterLes applications normales ne peuvent interagir Les applications normales ne peuvent interagir avec ces applicationsavec ces applications
Least-Privileged User AccountLeast-Privileged User Account (LUA) (LUA)Les applications normales peuvent être Les applications normales peuvent être installées et maintenues par des utilisateurs installées et maintenues par des utilisateurs normaux (c’est-à-dire des non administrateurs)normaux (c’est-à-dire des non administrateurs)Les applications normales s’exécutent avec les Les applications normales s’exécutent avec les privilèges normaux des utilisateursprivilèges normaux des utilisateurs
LonghornLonghorn et la sécurité et la sécuritéStrongboxStrongbox
Virtualise l’état du PC (la base de registre et le système Virtualise l’état du PC (la base de registre et le système de fichiers) redirigeant les appels des applicationsde fichiers) redirigeant les appels des applicationsPermet au système de revenir en arrière sur les Permet au système de revenir en arrière sur les changements nuisibleschangements nuisiblesPermet au système de supporter des applications Permet au système de supporter des applications anciennes « au mauvais comportement » dans un mode anciennes « au mauvais comportement » dans un mode LUALUA
Secure Execution EnvironmentSecure Execution Environment (SEE) (SEE)Un ensemble d’API puissantes, sécurisées en code Un ensemble d’API puissantes, sécurisées en code managé qui peuvent être utilisées pour écrire des managé qui peuvent être utilisées pour écrire des application qui s’exécutent dans un environnement application qui s’exécutent dans un environnement sandboxsandbox
Interface homme-machine de consentementInterface homme-machine de consentementInterface homme-machine cohérente qui s’assure que Interface homme-machine cohérente qui s’assure que l’utilisateur est toujours informé des implications l’utilisateur est toujours informé des implications associées au fait d’exécuter une nouvelles application associées au fait d’exécuter une nouvelles application
Code digne de confianceCode digne de confianceNGSCB supporte des opérations dignes de confiance NGSCB supporte des opérations dignes de confiance s’exécutant sur un hardware digne de confiance dans un s’exécutant sur un hardware digne de confiance dans un environnement d’exécution isoléenvironnement d’exécution isolé
2004-2004-2005 2005
FuturFuturAujourd’huiAujourd’hui
Patches mensuelsPatches mensuelsFormation et supportFormation et supportConseils de base Conseils de base ((patterns & patterns & practicespractices))MSDN Security MSDN Security Developer CenterDeveloper CenterAmélioration de /GSAmélioration de /GSCode managé Code managé avec .NET avec .NET FrameworkFramework
Windows XP SP2Windows XP SP2Windows Server Windows Server 2003 SP12003 SP1
Visual Studio Visual Studio 2005 (Whidbey)2005 (Whidbey)/GS version 8/GS version 8« ClickOnce »« ClickOnce »SEE (SEE (Secure Secure Execution Execution EnvironmentEnvironment) )
LonghornLonghornSDK LonghornSDK LonghornLUA (LUA (Least-Least-privileged User privileged User AccountsAccounts))Renforcement Renforcement de la sécurité de la sécurité de Windows de Windows avec NGSCBavec NGSCB
Plan de route Plan de route
Un long voyageUn long voyage
0101 0202 0303 0404 0505 0606 0707 0808 0909 1010
Nouvelle infrastructure, nouvelle culture Nouvelle infrastructure, nouvelle culture Réalisation Réalisation de TWCde TWC
Mémo de Bill GatesMémo de Bill GatesUne Une nouvelle nouvelle attentionattention
XP SP1, 2003 server, Standards WSXP SP1, 2003 server, Standards WSDébut du Début du déploiementdéploiement
Longhorn, DRM, NGSCBLonghorn, DRM, NGSCBNouvelles Nouvelles briquesbriques
TempsTemps
La confiance…La confiance… Nous ne pouvons pas aller Nous ne pouvons pas aller
plus loin sans elle !plus loin sans elle !