Post on 04-Jun-2015
description
Application Security ForumWestern Switzerland
27 octobre 2011 - HEIGVD Yverdon-les-Bainshttp://appsec-forum.ch
Microsoft Security Development LifeCycle
dans un monde Java
Sébastien Gioria (OWASP French Chapter Leader & OWASP Global Education Comittee Member)sebastien.gioria@owasp.org
Sunday, October 30, 11
CISA && ISO 27005 Risk Manager
2
http://www.google.fr/#q=sebastien gioria
‣OWASP France Leader & Founder - Evangéliste‣OWASP Global Education Comittee Member (sebastien.gioria@owasp.org)
‣Responsable de la branche Audit S.I et Sécurité au sein du cabinet Groupe Y
Twitter :@SPoint
‣ +13 ans d’expérience en Sécurité des Systèmes d’Information‣ Différents postes de manager SSI dans la banque, l’assurance et
les télécoms‣ Expertise Technique
- PenTesting,- Secure-SDLC- Gestion du risque, Architectures fonctionnelles, Audits- Consulting et Formation en Réseaux et Sécurité
‣Responsable du Groupe Sécurité des Applications Web au CLUSIF
2
Sunday, October 30, 11
Agenda
• La souris, le fromage et le chat• Qu’est-ce que Microsoft SDL ?• SDL Warrior• Duke in the game
3
Sunday, October 30, 11
Agenda
• La souris, le fromage et le chat• Qu’est-ce que Microsoft SDL ?• SDL Warrior• Duke in the game
Sunday, October 30, 11
Pourquoi ?
Les hackers sont astucieux
Sunday, October 30, 11
Le cout est important
Sunday, October 30, 11
Soyons donc précis !
Sunday, October 30, 11
Agenda
• La souris, le fromage et le chat• Qu’est-ce que Microsoft SDL ?• SDL Warrior• Duke in the game
Sunday, October 30, 11
Security Development LifeCycle(SDL)§ 2004 : « Stop Security Kiddies »§ Méthode de développement sécurisée de tous les produits MicrosoA !
Sunday, October 30, 11
Security Development LifeCycle(SDL)§ 2004 : « Stop Security Kiddies »§ Méthode de développement sécurisée de tous les produits MicrosoA !
Produit 1er 2ème 3ème
Système d’exploitaEon
Linux Kernel (129)
Windows Server 2008 (93)
Apple IOS (35)
SGBD Oracle (36) Mysql (3) MS-‐SQL Server (1)
Navigateur Chrome (164) Safari (130) Firefox (115)
Vainqueurs a la CVE 2010
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Agenda
• La souris, le fromage et le chat• Qu’est-ce que Microsoft SDL ?• SDL Warrior• Duke in the game
Sunday, October 30, 11
Formation
• Obligatoire pour toute l’équipe projet : Architecte, Développeur, Testeur, Chef de projet
• Contenu minimum• Conception sécurisée• Modélisation des menaces• Ecriture de code sécurisé• Tests de sécurité• Respect de la vie privée
• Contenu avancé • Architecture et conception de la sécurité.• Conception de l’interface utilisateur• Problèmes de sécurité en détail• Processus de réponse de sécurité• Mise en œuvre d’atténuations personnalisées de menaces
Sunday, October 30, 11
Spécifications - Exigences de sécurité
1. Identifier l’équipe ou la personne qui sera responsable du suivi et de la gestion de la sécurité
2. Vérifier que les outils de suivi et de rapport des bogues assurent effectivement le suivi des problèmes de sécurité
3. Définir et documenter l’échelle des bogues et les valeurs et seuil ainsi attribués aux bogues de sécurité.
L’échelle des bogues et le seuil associé ne doivent jamais être assouplis, même si la date de fin du projet approche.
Sunday, October 30, 11
Spécifications - Exigences de respect de la vie privée
1. Désigner le conseiller en respect de la vie privée
2. Désigner le responsable dans l’équipe pour la vie privée
3. Définir et documenter l’échelle, les valeurs et seuil attribués aux bogues de respect de la vie privée
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
– Il doit être compaEble STRIDE
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
– Il doit être compaEble STRIDE
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
– Il doit être compaEble STRIDE
– Perme_re d’idenEfier la cause du Bug
Sunday, October 30, 11
Spécifications – Recommandations de sécurité
1. Me_re en place le plan de sécurité
2. Vérifier que l’ouEl de bogue peut prendre en compte les éléments de la modélisaEon des a_aques . Il doit comporter 2 foncEonnalités :
– Il doit être compaEble STRIDE
– Perme_re d’idenEfier la cause du Bug
Sunday, October 30, 11
Spécifications – Evaluer le projet et les couts éventuels
1. Evaluer les porEons du projet nécessitant : – modélisaEons des menaces – revues de concepEon de sécurité – tests de pénétraEon
2. Vérifier le taux d’impact sur la vie privée– P1 : Risque élevé sur le respect de la vie privé => Le produit enregistre ou transfère des informaEons confidenEelles
– P2 : Risque modéré => un transfert unique de données anonymes, iniEé par l’uElisateur
– P3 : Risque faible => Rien n’affecte le respect de la vie
Sunday, October 30, 11
Conception
1. Effectuer une revue de conception
2. Effectuer des Analyses de risque– Modélisation des menaces (STRIDE/DREAD)– Code externes– Analyse des projets classés P1 (vie privée)
Sunday, October 30, 11
STRIDE ? Catégorie Descrip@on
Pas un bogue de sécurité UsurpaEon (Spoofing) A_aque par laquelle un a_aquant ou un serveur non
autorisé se fait passer pour un uElisateur ou un serveur valide, ou un code malveillant se présente comme valide
FalsificaEon (Tampering) ModificaEon malveillante des données
RépudiaEon (RepudiaEon) Menaces associées aux uElisateurs qui nient avoir effectué une acEon sans que les autres parEes aient le moyen de prouver le contraire
DivulgaEon d’informaEons (InformaEons Disclosure)
Menaces qui impliquent l’exposiEon des informaEons à des individus qui ne sont pas censés y accéder.
Déni de service (Denial of Service)
A_aques (DoS) qui empêchent un uElisateur autorisé d’accéder aux services
ÉlévaEon de privilège (ElevaEon of Privilege)
Menace qui permet à un uElisateur de s’octroyer une autorisaEon supplémentaire
RéducEon de la surface d’a_aque. (A_ack Surface ReducEon. )
Il est important d’idenEfier la surface d’a_aque, même si les interfaces qui y sont exposées ne sont pas des vulnérabilités au sens technique
Sunday, October 30, 11
DREAD ? Catégorie Descrip@on
Dommage Poten/el (Damage) Si la menace se produit, quel est le niveau de dommage :
0 – Rien
10 – Total compromission
Reproduc/ble (Reproducibility) Quelle est la complexité pour reproduire la menace
0 – quasi-‐impossible
10 – pas d’authen/fica/on, a travers un navigateur Web
Exploita/on (Exploitability) De quoi a-‐t-‐on besoin pour l’exploita/on
0 – connaissance en programma/on, des ou/ls, …
10 – juste un navigateur Web
U/lisateurs touchés (Affected Users)
Combien d’u/lisateurs seront affectés
0 – Aucun
5 – Quelques uns
10 – Tous
Découverte (Discoverability) La faille est-‐elle simple a découvrir
0 – quasi-‐impossible
5 – via un sniffing réseau ou autre type
9 – les détails sont dans le domaine public
10 – Il suffit de regarder la barre du navigateur Web
Sunday, October 30, 11
Calcul final DREAD
DAMAGEREPRODUCIBILITYEXPLOITABILITYAFFECTED USERSDISCOVERABILITY
5
Sunday, October 30, 11
Implémentation
1. Créer la documenta1on et les ou1ls perme4ant d’adresser les problèmes de sécurité et de vie privée
2. Suivre les bonnes pra1ques de développement
3. Intégrer les listes de contrôle de sécurité
4. Effectuer une revue automa1sée de code
Sunday, October 30, 11
Vérification
1. Utilisation du Fuzzing• Fichier• Réseau• Web
2. Revue de code• Définir les priorités de revue de code :
• Code critique : noyau, utilisation d’éléments sensible• Code important : code élevant les privilèges• Code mineur : rarement utilisé.
3. Effectuer les tests de pénétration• Boite noire• Boite blanche
4. Revoir la surface d’attaque et la minimiser si possible
Sunday, October 30, 11
Diffusion
1. Effectuer une revue des manipulations de données privées
2. Préparer les équipes au 2ème mercredi du mois
3. Effectuer la revue finale de sécurité
4. Publier la version et archiver une copie.
Loi de Murphy
Dernière version des documents projets et risques à destination de l’équipe sécurité.
Sunday, October 30, 11
Réponse aux incidents
1. Définition des processus de réponses– Equipe dédiées à la vie privée– Equipes autres
2. Mise en place des communications– PGP
3. Interaction avec le cycle de vie
Sunday, October 30, 11
Agenda
• La souris, le fromage et le chat• Qu’est-ce que Microsoft SDL ?• SDL Warrior• Duke in the game
Sunday, October 30, 11
Avant-propos…• Ceci est une proposition à
certains endroits de la SDL pour éviter : • d’être aux aguets tous les 2èmes
mardi du mois.• des bulletins du CERT longs… • que Larry(*) nous sorte toujours
la même chanson….
*:Oracle unbreakable? => dernier Patch Update 10/10 à la CVSS (encore une fois)…
Sunday, October 30, 11
Sunday, October 30, 11
Le problème• Confidentialité
• Protéger les données, les systèmes, les processus d’un accès non autorisé
• Intégrité• Assurer que les données, systèmes et processus
sont valides et n’ont pas été modifiés de manière non intentionnelle.
• Disponibilité• Assurer que les données, systèmes et processus
sont accessible au moment voulu
Sunday, October 30, 11
Le problème• Traçabilité
• Assurer le cheminement de toute donnée, processus et la reconstruction des transactions
• « Privacy »• Assurer que les données personnelles sont
ConformitéAdhérer aux lois et réglementaEons
Image de marqueNe pas se retrouver à la une du journal « Le Monde » suite à un incident
Sunday, October 30, 11
Le problème• Traçabilité
• Assurer le cheminement de toute donnée, processus et la reconstruction des transactions
• « Privacy »• Assurer que les données personnelles sont
ConformitéAdhérer aux lois et réglementaEons
Image de marqueNe pas se retrouver à la une du journal « Le Monde » suite à un incident
Sunday, October 30, 11
Le problème• Traçabilité
• Assurer le cheminement de toute donnée, processus et la reconstruction des transactions
• « Privacy »• Assurer que les données personnelles sont
ConformitéAdhérer aux lois et réglementaEons
Image de marqueNe pas se retrouver à la une du journal « Le Monde » suite à un incident
Sunday, October 30, 11
Le problème
Sunday, October 30, 11
0x01
Sunday, October 30, 11
0x01
Régler 80% des problèmes avec 20% d’effort
Sunday, October 30, 11
0x10b• Se jeter à l’eau :
Sunday, October 30, 11
0x10b• Se jeter à l’eau :
Corrigez tous les problèmes que vous pouvez trouver
Sunday, October 30, 11
0x10b• Se jeter à l’eau :
Si vous n’êtes pas prêts à corriger, ne cherchez pas !
Corrigez tous les problèmes que vous pouvez trouver
Sunday, October 30, 11
0x10b• Se jeter à l’eau :
Si vous n’êtes pas prêts à corriger, ne cherchez pas !
Corrigez tous les problèmes que vous pouvez trouver
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Sunday, October 30, 11
Phase 0 - Formation• OWASP Top10 2010 : Les 10 risques les plus critiques
des applications• CWE/SANS list : Top 25 Most Dangerous Programming
Errors. • CERT Java Secure Coding
• https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Secure+Coding+Standard+for+Java
Sunday, October 30, 11
Phase 0 - Formation• OWASP Top10 2010 : Les 10 risques les plus critiques
des applications• CWE/SANS list : Top 25 Most Dangerous Programming
Errors. • CERT Java Secure Coding
• https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Secure+Coding+Standard+for+Java
Sunday, October 30, 11
Phase 0 - Formation• OWASP Top10 2010 : Les 10 risques les plus critiques
des applications• CWE/SANS list : Top 25 Most Dangerous Programming
Errors. • CERT Java Secure Coding
• https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Secure+Coding+Standard+for+Java
Sunday, October 30, 11
Phase 0 - Formation• OWASP Top10 2010 : Les 10 risques les plus critiques
des applications• CWE/SANS list : Top 25 Most Dangerous Programming
Errors. • CERT Java Secure Coding
• https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Secure+Coding+Standard+for+Java
Sunday, October 30, 11
Phase 1 -‐ Spécifica/ons
§ Mise en place du bugtracker– Catégories d’effet des bugs :
• Elements STRIDE (ou autre des modélisaEons)
– Catégories de cause des bugs : • XSS, CSRF, SQL-‐i, DOS, Crypto….
Sunday, October 30, 11
Phase 2 – Design OWASP – ASVS ? • Quelles sont les fonctionnalités à mettre en oeuvre dans
les contrôles de sécurité nécessaires à mon application
• Quelle est la couverture et le niveau de rigueur à mettre en oeuvre lors de la vérification de sécurité d'une application.
• Comment comparer les différentes vérifications de sécurité effectuées
• Quel niveau de confiance puis-je avoir dans une application
Spécifications/Politique de sécurité des développements
Aide à la revue de code
Chapitre sécurité des contrats de développement ou des appels d’offres !
Sunday, October 30, 11
Phase 2 – Design OWASP – ASVS ? • Quelles sont les fonctionnalités à mettre en oeuvre dans
les contrôles de sécurité nécessaires à mon application
• Quelle est la couverture et le niveau de rigueur à mettre en oeuvre lors de la vérification de sécurité d'une application.
• Comment comparer les différentes vérifications de sécurité effectuées
• Quel niveau de confiance puis-je avoir dans une application
Spécifications/Politique de sécurité des développements
Aide à la revue de code
Chapitre sécurité des contrats de développement ou des appels d’offres !
Sunday, October 30, 11
Poli/que de sécurité logicielle
Sunday, October 30, 11
Phase 2 - Modélisation des attaques
• Utilisation des méthodologies :• STRIDE• ISO 27005• SDL Threat Modeling Tool• …..
• Garder à l’esprit : • 0x01 : la règle du 80/20
• 0x10b
Garder a l’esprit l’impact métier !
Sunday, October 30, 11
Phase 2 - Modélisation des attaques
• Utilisation des méthodologies :• STRIDE• ISO 27005• SDL Threat Modeling Tool• …..
• Garder à l’esprit : • 0x01 : la règle du 80/20
• 0x10b
Si vous n’êtes pas prêts à corriger, ne cherchez pas !
Garder a l’esprit l’impact métier !
Sunday, October 30, 11
Phase 2 - Modélisation des attaques
• Utilisation des méthodologies :• STRIDE• ISO 27005• SDL Threat Modeling Tool• …..
• Garder à l’esprit : • 0x01 : la règle du 80/20
• 0x10b
Si vous n’êtes pas prêts à corriger, ne cherchez pas !
Garder a l’esprit l’impact métier !
Sunday, October 30, 11
Phase 3 -‐ Développement
§ Suivre les best-‐pracEces :– OWASP Secure Coding Prac@ces
• hJps://www.owasp.org/index.php/Secure_Coding_Principles
– CERT/Oracle Secure Coding for Java• https://www.securecoding.cert.org/confluence/display/java/The+CERT
+Oracle+Secure+Coding+Standard+for+Java
– Secure Coding Guidelines for Java (Oracle)• hJp://www.oracle.com/technetwork/java/seccodeguide-‐139067.html
§ UEliser les bons ouEls/bibliothèques (h_ps://www.owasp.org)– OWASP CSRF Guard– OWASP Java Sani@zer– OWASP S@nger
Sunday, October 30, 11
Phase 3 -‐ Cookies
Sunday, October 30, 11
Phase 3 -‐ Valida/ons
Sunday, October 30, 11
Phase 3 – SQL
Sunday, October 30, 11
Phase 3 – Pour aller plus loinOWASP Enterprise Security API
Sunday, October 30, 11
Phase 4 - Revue de code§ Design :
• OWASP Cheat Sheets : https://www.owasp.org/index.php/Category:Cheatsheets
• OWASP Application Verification Standard : https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project
§ Semi-Automatisé :
• OWASP LAPSE+ : https://www.owasp.org/index.php/OWASP_LAPSE_Project
• CodePro Analytix : http://code.google.com/javadevtools/download-codepro.html
Sunday, October 30, 11
Phase 4 – Revue de code (Code Pro AnalyEx)
Sunday, October 30, 11
Phase 4 - Tests de pénétration1. S’adresser à des cabinets/consultants dont le méEer est la gesEon des
risques informaEques.
2. Demander des rapports orientés méEersØ ne pas se contenter de rapports techniques
3. Demander des classificaEons compaEbles avec votre ouEl de bogue.Ø Ne pas u@liser des référen@els non standards
4. Demande un transfert de compétences sur les failles pour éduquer les acteursØ Et donc savoir comment corriger
Sunday, October 30, 11
Phase 4 - Mettre en place des tableaux de décision
Sunday, October 30, 11
Phase 4 - Mettre en place des tableaux de décision
Sunday, October 30, 11
Phase 4 - Mettre en place des tableaux de décision
Sunday, October 30, 11
Phase 4 - Mettre en place des tableaux de décision
Sunday, October 30, 11
Phase 5 – Release / Produc/on
Sunday, October 30, 11
• Introduction à la Sécurité Web avec Ruby on Rails• Les 10 Risques sur les mobiles• Microsoft SDL
Sunday, October 30, 11
Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi [Olivier Lockert]
• Introduction à la Sécurité Web avec Ruby on Rails• Les 10 Risques sur les mobiles• Microsoft SDL
Sunday, October 30, 11