0
The OWASP Foundation                                                        http://www.owasp.org                      Ruby...
http://www.google.fr/#q=sebastien gioria                       ‣Responsable de la branche Audit S.I et Sécurité           ...
http://www.google.fr/#q=sebastien gioria                       ‣Responsable de la branche Audit S.I et Sécurité           ...
Agenda                      •Introduction                      •Injection                      •Sessions                  ...
Etude Verizon 2010                                       © Verizon 2010                                                   ...
Etude Verizon 2010                                       © Verizon 2010                                                   ...
Etude Verizon 2010                                       © Verizon 2010                                                   ...
Etude Verizon 2010                                       © Verizon 2010                                                   ...
Etude Verizon 2010              © Verizon 2010                                                    5Sunday, March 4, 12
Etude Verizon 2010              © Verizon 2010                                                    5Sunday, March 4, 12
Etude Verizon 2010              © Verizon 2010                                                    5Sunday, March 4, 12
Etude Verizon 2010              © Verizon 2010                                                    5Sunday, March 4, 12
22          © IBM X-Force 2009 - Extrait du rapport 2009Sunday, March 4, 12
23                      © IBM X-Force 2009 - Extrait du rapport 2009Sunday, March 4, 12
Exposition à une vulnérabilité                                     26Sunday, March 4, 12
Ce que dit le CIO : mais j’ai un Firewall !!!                                                     27Sunday, March 4, 12
Ce que dit le Commercial : J’ai un certificat                                        SSL                                  ...
Ce que dit le commercial : il faut être un expert pour                        hacker des sites Web         • Les outils so...
Offres                               12Sunday, March 4, 12
Ce que dit l’utilisateur : Une vulnérabilité                n’est pas importante sur un site Web                          ...
The OWASP Foundation                                  http://www.owasp.org                      Les risques !Sunday, March...
‘OR 1==1 --’                                     15Sunday, March 4, 12
‘OR 1==1 --’                              L’injection SQL fait beaucoup parler d’elle.                              Mais i...
‘OR 1==1 --’                              L’injection SQL fait beaucoup parler d’elle.                              Mais i...
‘OR 1==1 --’                              L’injection SQL fait beaucoup parler d’elle.                              Mais i...
‘OR 1==1 --’                              L’injection SQL fait beaucoup parler d’elle.                              Mais i...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injec-on	  de	  données	  -­‐	  Exemple	  de	  code	  vulnérable	  SQL     Soit le code Suivant        Project.find(:all,...
Injection - Prévention        ★Valider les données        ★Utiliser les mécanismes des requêtes                paramétrées...
Injection - Prévention                      1.Via une validation d’entrée propre                      2.Via les requêtes p...
19Sunday, March 4, 12
19Sunday, March 4, 12
19Sunday, March 4, 12
19Sunday, March 4, 12
http://codebutler.github.com/firesheep/                                                      19Sunday, March 4, 12
20Sunday, March 4, 12
20Sunday, March 4, 12
mabanque.com                                20Sunday, March 4, 12
mabanque.com                                20Sunday, March 4, 12
mabanque.com                      login.rb                                           20Sunday, March 4, 12
mabanque.com                       login.rb                      Requete                                            20Sund...
mabanque.com                       login.rb                      Requete                                            20Sund...
mabanque.com                        login.rb                       Requete                      Réponse                   ...
mabanque.com                        login.rb                       Requete                      Réponse                   ...
mabanque.com                        login.rb                       Requete                      Réponse                   ...
mabanque.com                        login.rb                       Requete                      Réponse                   ...
mabanque.com                          login.rb                         Requete                       Réponse              ...
mabanque.com                          login.rb                         Requete                       Réponse              ...
mabanque.com                          login.rb                         Requete                       Réponse              ...
mabanque.com                          login.rb                         Requete                       Réponse              ...
21Sunday, March 4, 12
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions          et dauthentification, mais il s...
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions          et dauthentification, mais il s...
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions          et dauthentification, mais il s...
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions          et dauthentification, mais il s...
Session en Rails                      ★HTTP est un protocole sans état                      ★Ne pas réécrire son mécanisme...
Sessions en Rails                 ★Exemple de cookie propre :                                               23Sunday, Marc...
The OWASP Foundation                                http://www.owasp.org                      Démo                       X...
A vous ?                      Se connecter à :                      •http://88.191.152.70:8080/ePoney-0.0.1-              ...
XSS                            26Sunday, March 4, 12
XSS                      Le Cross Site Scripting est souvent mal considéré. Sa puissance                      peut aller j...
XSS                      Le Cross Site Scripting est souvent mal considéré. Sa puissance                      peut aller j...
XSS                      Le Cross Site Scripting est souvent mal considéré. Sa puissance                      peut aller j...
XSS                      Le Cross Site Scripting est souvent mal considéré. Sa puissance                      peut aller j...
XSS - Prevention                      ★Valider les données en entrée                      ★Encoder les données de sortie  ...
★Utilisation des échappements HTML                        (non suffisant)                      ★Utilisation des sanitizer ...
The OWASP Foundation                                 http://www.owasp.org                      Démo                       ...
CSRF                             30Sunday, March 4, 12
CSRF          L’attaquant forge une requête HTTP et amène une victime à la soumettre via une          balise d’image, XSS,...
CSRF          L’attaquant forge une requête HTTP et amène une victime à la soumettre via une          balise d’image, XSS,...
CSRF          L’attaquant forge une requête HTTP et amène une victime à la soumettre via une          balise d’image, XSS,...
CSRF          L’attaquant forge une requête HTTP et amène une victime à la soumettre via une          balise d’image, XSS,...
CSRF le probleme                      ★Le problème                         •   Les navigateurs Web incluent automatiquemen...
CSRF Prevention                 Ajouter un jeton, non envoyé automatiquement, a toutes les requêtes                     se...
CSRF Prévention en Rails                      Par défaut le framework inclut le principe                        du jeton  ...
The OWASP Foundation                                     http://www.owasp.org                      Fuite d’informationsSun...
35Sunday, March 4, 12
Une simple recherche                       google permettait d’avoir accès                      aux numéros de sécurité so...
Une simple recherche                       google permettait d’avoir accès                      aux numéros de sécurité so...
Une simple recherche                       google permettait d’avoir accès                      aux numéros de sécurité so...
Une simple recherche                       google permettait d’avoir accès                      aux numéros de sécurité so...
Prévention               ★Garder les outils a jour :                 ➡Serveurs                 ➡Frameworks               ★...
The OWASP Foundation                                http://www.owasp.org                      ConclusionSunday, March 4, 12
OWASP Top Ten 2010                                                                           A3:	  Mauvaise	  ges*on	     ...
A lire     Ressources OWASP           • https://www.owasp.org/index.php/Top10           • https://www.owasp.org/index.php/...
Contact                      @SPoint                      sebastien.gioria@owasp.org                                      ...
Upcoming SlideShare
Loading in...5
×

2012 03-01-ror security v01

734

Published on

Une introduction a la sécurité de ruby on rails.
Présentation faite au Confoo 2012

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
734
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "2012 03-01-ror security v01"

  1. 1. The OWASP Foundation http://www.owasp.org Ruby on Rails et la sécurité (une introduction) Sébastien Gioria OWASP France Leader OWASP Global Education Committee Confoo.ca 01 Mars 2012 - Montréal - CanadaSunday, March 4, 12
  2. 2. http://www.google.fr/#q=sebastien gioria ‣Responsable de la branche Audit S.I et Sécurité au sein du cabinet Groupe Y ‣OWASP France Leader & Founder - Evangéliste ‣OWASP Global Education Comittee Member (sebastien.gioria@owasp.org) ‣Responsable du Groupe Sécurité des Applications Web au CLUSIF Twitter :@SPoint CISA && ISO 27005 Risk Manager ‣ +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é 2 2Sunday, March 4, 12
  3. 3. http://www.google.fr/#q=sebastien gioria ‣Responsable de la branche Audit S.I et Sécurité au sein du cabinet Groupe Y ‣OWASP France Leader & Founder - Evangéliste ‣OWASP Global Education Comittee Member (sebastien.gioria@owasp.org) ‣Responsable du Groupe Sécurité des Applications Web au CLUSIF Twitter :@SPoint CISA && ISO 27005 Risk Manager ‣ +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é 2 2Sunday, March 4, 12
  4. 4. Agenda •Introduction •Injection •Sessions •XSS •CSRF •Fuite d’informations •Et ensuite... 3Sunday, March 4, 12
  5. 5. Etude Verizon 2010 © Verizon 2010 4Sunday, March 4, 12
  6. 6. Etude Verizon 2010 © Verizon 2010 4Sunday, March 4, 12
  7. 7. Etude Verizon 2010 © Verizon 2010 4Sunday, March 4, 12
  8. 8. Etude Verizon 2010 © Verizon 2010 4Sunday, March 4, 12
  9. 9. Etude Verizon 2010 © Verizon 2010 5Sunday, March 4, 12
  10. 10. Etude Verizon 2010 © Verizon 2010 5Sunday, March 4, 12
  11. 11. Etude Verizon 2010 © Verizon 2010 5Sunday, March 4, 12
  12. 12. Etude Verizon 2010 © Verizon 2010 5Sunday, March 4, 12
  13. 13. 22 © IBM X-Force 2009 - Extrait du rapport 2009Sunday, March 4, 12
  14. 14. 23 © IBM X-Force 2009 - Extrait du rapport 2009Sunday, March 4, 12
  15. 15. Exposition à une vulnérabilité 26Sunday, March 4, 12
  16. 16. Ce que dit le CIO : mais j’ai un Firewall !!! 27Sunday, March 4, 12
  17. 17. Ce que dit le Commercial : J’ai un certificat SSL 28Sunday, March 4, 12
  18. 18. Ce que dit le commercial : il faut être un expert pour hacker des sites Web • Les outils sont simples d’emploi • Cherchez juste sur Internet un outil nommé SQLInjector • L’attaque d’un serveur Web coute de 100$ à 200$ sur le marché souterrain • Les hackers “offrent” leur service directement sur Internet. 29Sunday, March 4, 12
  19. 19. Offres 12Sunday, March 4, 12
  20. 20. Ce que dit l’utilisateur : Une vulnérabilité n’est pas importante sur un site Web interne •Faut, vu que le web est partout, des attaques comme CSRF ainsi que l’arrivée de HTML5 et CORS sont destructrices. •Souvenez vous, et partagez cela : • AJAX fait des choses sans que vous le sachiez... 30 •Sachez et partagez ceci: • HTML5 introduit de bien belle facilités utilisateur, mais avec un impact important sur la sécurité (WebSocket, CORS, ...)Sunday, March 4, 12
  21. 21. The OWASP Foundation http://www.owasp.org Les risques !Sunday, March 4, 12
  22. 22. ‘OR 1==1 --’ 15Sunday, March 4, 12
  23. 23. ‘OR 1==1 --’ L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections : •XML •XPath •LDAP •ORB(Hibernate) •... 15Sunday, March 4, 12
  24. 24. ‘OR 1==1 --’ L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections : •XML •XPath •LDAP •ORB(Hibernate) •... 15Sunday, March 4, 12
  25. 25. ‘OR 1==1 --’ L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections : •XML •XPath •LDAP •ORB(Hibernate) •... A1  -­‐  Injec*on 15Sunday, March 4, 12
  26. 26. ‘OR 1==1 --’ L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections : •XML •XPath •LDAP •ORB(Hibernate) •... A1  -­‐  Injec*on 15Sunday, March 4, 12
  27. 27. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}") 16Sunday, March 4, 12
  28. 28. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : 16Sunday, March 4, 12
  29. 29. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me 16Sunday, March 4, 12
  30. 30. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’ 16Sunday, March 4, 12
  31. 31. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : 16Sunday, March 4, 12
  32. 32. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1 16Sunday, March 4, 12
  33. 33. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1 SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’ 16Sunday, March 4, 12
  34. 34. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1 SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’  Voir un accès très différent : 16Sunday, March 4, 12
  35. 35. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1 SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’  Voir un accès très différent : http://www.example.com/Project.rb?name=me; DELETE FROM PROJECTS; SELECT * from projects where 1=1 16Sunday, March 4, 12
  36. 36. Injec-on  de  données  -­‐  Exemple  de  code  vulnérable  SQL  Soit le code Suivant Project.find(:all, :conditions => "name = #{params[:name]}")  Imaginons un accès normal : http://www.example.com/Project.rb?name=me SELECT * FROM Project WHERE name= ‘me’  Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1 SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’  Voir un accès très différent : http://www.example.com/Project.rb?name=me; DELETE FROM PROJECTS; SELECT * from projects where 1=1 SELECT * FROM projects WHERE name = ; DELETE FROM PROJECTS; SELECT * from projects where 1=1 16Sunday, March 4, 12
  37. 37. Injection - Prévention ★Valider les données ★Utiliser les mécanismes des requêtes paramétrées quand ils sont disponibles ★Minimiser les privilèges de connexion aux bases ★Minimiser les privilèges des utilisateurs de base 17Sunday, March 4, 12
  38. 38. Injection - Prévention 1.Via une validation d’entrée propre 2.Via les requêtes paramétréesSunday, March 4, 12
  39. 39. 19Sunday, March 4, 12
  40. 40. 19Sunday, March 4, 12
  41. 41. 19Sunday, March 4, 12
  42. 42. 19Sunday, March 4, 12
  43. 43. http://codebutler.github.com/firesheep/ 19Sunday, March 4, 12
  44. 44. 20Sunday, March 4, 12
  45. 45. 20Sunday, March 4, 12
  46. 46. mabanque.com 20Sunday, March 4, 12
  47. 47. mabanque.com 20Sunday, March 4, 12
  48. 48. mabanque.com login.rb 20Sunday, March 4, 12
  49. 49. mabanque.com login.rb Requete 20Sunday, March 4, 12
  50. 50. mabanque.com login.rb Requete 20Sunday, March 4, 12
  51. 51. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 20Sunday, March 4, 12
  52. 52. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 mabanque.com 20Sunday, March 4, 12
  53. 53. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com 20Sunday, March 4, 12
  54. 54. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com 20Sunday, March 4, 12
  55. 55. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com Requete Cookie : SESSIONID=4242 20Sunday, March 4, 12
  56. 56. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com Requete Cookie : SESSIONID=4242 Réponse Cookie : SESSIONID=4242 20Sunday, March 4, 12
  57. 57. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com Requete Cookie : SESSIONID=4242 Réponse Cookie : SESSIONID=4242 20Sunday, March 4, 12
  58. 58. mabanque.com login.rb Requete Réponse Set-Cookie : SESSIONID=4242 Images mabanque.com Requete Cookie : SESSIONID=4242 Réponse Cookie : SESSIONID=4242 20Sunday, March 4, 12
  59. 59. 21Sunday, March 4, 12
  60. 60. Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et dauthentification, mais il sagit dune tâche complexe. Il en résulte souvent des implémentations contenant des faiblesses de sécurité dans des fonctions telles que: la déconnexion, la gestion des profils, etc. La diversité des implémentations rend la recherche de vulnérabilités complexe. 21Sunday, March 4, 12
  61. 61. Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et dauthentification, mais il sagit dune tâche complexe. Il en résulte souvent des implémentations contenant des faiblesses de sécurité dans des fonctions telles que: la déconnexion, la gestion des profils, etc. La diversité des implémentations rend la recherche de vulnérabilités complexe. 21Sunday, March 4, 12
  62. 62. Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et dauthentification, mais il sagit dune tâche complexe. Il en résulte souvent des implémentations contenant des faiblesses de sécurité dans des fonctions telles que: la déconnexion, la gestion des profils, etc. La diversité des implémentations rend la recherche de vulnérabilités complexe. A3  -­‐  Mauvaise   ges*on  des   sessions et de l’authentification 21Sunday, March 4, 12
  63. 63. Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et dauthentification, mais il sagit dune tâche complexe. Il en résulte souvent des implémentations contenant des faiblesses de sécurité dans des fonctions telles que: la déconnexion, la gestion des profils, etc. La diversité des implémentations rend la recherche de vulnérabilités complexe. A3  -­‐  Mauvaise   ges*on  des   sessions et de l’authentification 21Sunday, March 4, 12
  64. 64. Session en Rails ★HTTP est un protocole sans état ★Ne pas réécrire son mécanisme ! ★ Par défaut les cookies de session sont utilisés avec une entropie suffisante. ★Protéger les ID lors du transfert • Utiliser SSL • Utiliser des cookies « secure » • Utiliser des limitations de path ★Prévoir une seconde autorisation pour les transferts « sensibles » 22Sunday, March 4, 12
  65. 65. Sessions en Rails ★Exemple de cookie propre : 23Sunday, March 4, 12
  66. 66. The OWASP Foundation http://www.owasp.org Démo XSSSunday, March 4, 12
  67. 67. A vous ? Se connecter à : •http://88.191.152.70:8080/ePoney-0.0.1- SNAPSHOT/pages/readReviews •Choisir “Jack Daniels System” et Show Reviews •Attendre 2mns30 :) 25Sunday, March 4, 12
  68. 68. XSS 26Sunday, March 4, 12
  69. 69. XSS Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client... 26Sunday, March 4, 12
  70. 70. XSS Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client... 26Sunday, March 4, 12
  71. 71. XSS Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client... A2  -­‐  Cross  Site   Scrip*ng  (XSS) 26Sunday, March 4, 12
  72. 72. XSS Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client... A2  -­‐  Cross  Site   Scrip*ng  (XSS) 26Sunday, March 4, 12
  73. 73. XSS - Prevention ★Valider les données en entrée ★Encoder les données de sortie ★ N’accepter que les données attendues. Eviter le cas ‘default’. ★ Nettoyer les données en entrée comme en sortie. ★ N’utiliser que des données fortement typées. Eviter les ‘cast’ implicites ou explicites. ★ Attention aux « clients », qui ne sont pas propres. 27Sunday, March 4, 12
  74. 74. ★Utilisation des échappements HTML (non suffisant) ★Utilisation des sanitizer HTML (mieux, mais non suffisant) ★Utilisation de OWASP ESAPI (beta) http://rubydoc.info/gems/owasp-esapi-ruby 28Sunday, March 4, 12
  75. 75. The OWASP Foundation http://www.owasp.org Démo CSRFSunday, March 4, 12
  76. 76. CSRF 30Sunday, March 4, 12
  77. 77. CSRF L’attaquant forge une requête HTTP et amène une victime à la soumettre via une balise d’image, XSS, ou de nombreuses autres techniques. Si l’utilisateur est authentifié , l’attaque est un succès. 30Sunday, March 4, 12
  78. 78. CSRF L’attaquant forge une requête HTTP et amène une victime à la soumettre via une balise d’image, XSS, ou de nombreuses autres techniques. Si l’utilisateur est authentifié , l’attaque est un succès. 30Sunday, March 4, 12
  79. 79. CSRF L’attaquant forge une requête HTTP et amène une victime à la soumettre via une balise d’image, XSS, ou de nombreuses autres techniques. Si l’utilisateur est authentifié , l’attaque est un succès. A5  -­‐  Cross  site   Request  Forgery   (CSRF) 30Sunday, March 4, 12
  80. 80. CSRF L’attaquant forge une requête HTTP et amène une victime à la soumettre via une balise d’image, XSS, ou de nombreuses autres techniques. Si l’utilisateur est authentifié , l’attaque est un succès. A5  -­‐  Cross  site   Request  Forgery   (CSRF) 30Sunday, March 4, 12
  81. 81. CSRF le probleme ★Le problème • Les navigateurs Web incluent automatiquement la plupart des identifiants dans chaque requête. • Que cela soit des requêtes venant d’un formulaire, d’une image ou d’un autre site. • Tous les sites basés uniquement sur les identifiants automatiques sont vulnérables • Approximativement 100% des sites le sont… ★C’est quoi un identifiant automatique? • Cookie de session • Une entête d’authentification HTTP • Une adresse IP • Les certificats SSL client • L’authentification de domaine Windows. 31Sunday, March 4, 12
  82. 82. CSRF Prevention Ajouter un jeton, non envoyé automatiquement, a toutes les requêtes sensibles. • Cela rend impossible pour l’attaquant de soumettre une requête valide. • (sauf si en plus il y a une faille XSS) • Ces jetons doivent être surs cryptographiquement. Options • Stocker un seul jeton dans la session et l’ajouter a tous les formulaire et liens • Champ caché: <input name="token" value="687965fdfaew87agrde" type="hidden"/> • Utiliser un URL : /accounts/687965fdfaew87agrde • Utiliser un jeton de formulaire: /accounts?auth=687965fdfaew87agrde • … a ne pas exposer le jeton dans l’entete “referer” Attention • Utiliser de préférence un champ caché. • Utiliser un jeton unique par fonction • Il est recommandé d’ajouter un second niveau d’authentification pour une transaction sensible 32Sunday, March 4, 12
  83. 83. CSRF Prévention en Rails Par défaut le framework inclut le principe du jeton 33Sunday, March 4, 12
  84. 84. The OWASP Foundation http://www.owasp.org Fuite d’informationsSunday, March 4, 12
  85. 85. 35Sunday, March 4, 12
  86. 86. Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale 35Sunday, March 4, 12
  87. 87. Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale 35Sunday, March 4, 12
  88. 88. Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale A6  -­‐  Mauvaise   configura*on   Sécurité 35Sunday, March 4, 12
  89. 89. Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale A6  -­‐  Mauvaise   configura*on   Sécurité 35Sunday, March 4, 12
  90. 90. Prévention ★Garder les outils a jour : ➡Serveurs ➡Frameworks ★Supprimer tous les éléments par défaut (en particulier les répertoire SVN ?) ★Customiser les messages d’erreurs 36Sunday, March 4, 12
  91. 91. The OWASP Foundation http://www.owasp.org ConclusionSunday, March 4, 12
  92. 92. OWASP Top Ten 2010 A3:  Mauvaise  ges*on   A4:Référence  directe   A2:  Cross  Site   A1:  Injec*on des  sessions  et  de   non  sécurisée  à  un   Scrip*ng  (XSS) l’authen*fica*on objet A8:  Mauvaise   A5:  Cross  Site  Request   A6:  Mauvaise   A7:  Mauvais  stockage   restric*on  d’accès  à   Forgery  (CSRF)   configura*on  sécurité cryptographique une  URL A9:  Protec*on   A10:    Redirec*ons    et   insuffisante  lors  du   transferts  non  validés transport  des  données http://www.owasp.org/index.php/Top_10Sunday, March 4, 12
  93. 93. A lire Ressources OWASP • https://www.owasp.org/index.php/Top10 • https://www.owasp.org/index.php/ Project_Information:template_Ruby_on_Rail s_Security_Guide_V2 • https://www.owasp.org/index.php/Esapi ROR Security Project: • http://www.rorsecurity.info/ 39Sunday, March 4, 12
  94. 94. Contact @SPoint sebastien.gioria@owasp.org 40Sunday, March 4, 12
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×