Écriture de code sécurisé : la quête du graal ? bernard ourghanlian directeur technologie et...

48
Écriture de code Écriture de code sécurisé : la sécurisé : la quête du Graal ? quête du Graal ? Bernard Ourghanlian Bernard Ourghanlian Directeur Technologie et Directeur Technologie et Sécurité Sécurité Microsoft France Microsoft France

Upload: alain-blanchet

Post on 03-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

É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

Page 2: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité 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

Page 3: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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…)

Page 4: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 5: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 6: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 7: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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é

Page 8: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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)

Page 9: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 10: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 !

Page 11: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 12: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 $

Page 13: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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…

Page 14: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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>

Page 15: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 16: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 17: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 18: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 !

Page 19: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 »

Page 20: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

Buffer OverflowBuffer Overflow

Page 21: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

Injection SQLInjection SQL

Page 22: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 23: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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é

......

Page 24: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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)

Page 25: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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)

Page 26: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France
Page 27: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 !

Page 28: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 29: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 30: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 31: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 32: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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é

Page 33: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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 34: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 35: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 36: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 37: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 38: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 39: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 40: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 41: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 42: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 43: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 44: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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é

Page 45: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 46: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

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

Page 47: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France

La confiance…La confiance… Nous ne pouvons pas aller Nous ne pouvons pas aller

plus loin sans elle !plus loin sans elle !

Page 48: Écriture de code sécurisé : la quête du Graal ? Bernard Ourghanlian Directeur Technologie et Sécurité Microsoft France