2012 03-01-ror security v01
-
Upload
sebastien-gioria -
Category
Technology
-
view
1.059 -
download
0
description
Transcript of 2012 03-01-ror security v01
![Page 1: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/1.jpg)
The OWASP Foundationhttp://www.owasp.org
Ruby on Rails et la sécurité
(une introduction)
Sébastien GioriaOWASP France Leader
OWASP Global Education Committee
Confoo.ca 01 Mars 2012 - Montréal - Canada
Sunday, March 4, 12
![Page 2: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/2.jpg)
CISA && ISO 27005 Risk Manager
2
http://www.google.fr/#q=sebastien gioria
‣OWASP France Leader & Founder - Evangéliste‣OWASP Global Education Comittee Member ([email protected])
‣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, March 4, 12
![Page 3: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/3.jpg)
CISA && ISO 27005 Risk Manager
2
http://www.google.fr/#q=sebastien gioria
‣OWASP France Leader & Founder - Evangéliste‣OWASP Global Education Comittee Member ([email protected])
‣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, March 4, 12
![Page 4: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/4.jpg)
Agenda•Introduction
•Injection
•Sessions
•XSS
•CSRF
•Fuite d’informations
•Et ensuite...3
Sunday, March 4, 12
![Page 5: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/5.jpg)
Etude Verizon 2010
© Verizon 2010
4Sunday, March 4, 12
![Page 6: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/6.jpg)
Etude Verizon 2010
© Verizon 2010
4Sunday, March 4, 12
![Page 7: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/7.jpg)
Etude Verizon 2010
© Verizon 2010
4Sunday, March 4, 12
![Page 8: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/8.jpg)
Etude Verizon 2010
© Verizon 2010
4Sunday, March 4, 12
![Page 9: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/9.jpg)
© Verizon 2010
Etude Verizon 2010
5Sunday, March 4, 12
![Page 10: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/10.jpg)
© Verizon 2010
Etude Verizon 2010
5Sunday, March 4, 12
![Page 11: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/11.jpg)
© Verizon 2010
Etude Verizon 2010
5Sunday, March 4, 12
![Page 12: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/12.jpg)
© Verizon 2010
Etude Verizon 2010
5Sunday, March 4, 12
![Page 13: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/13.jpg)
© IBM X-Force 2009 - Extrait du rapport 2009
22
Sunday, March 4, 12
![Page 14: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/14.jpg)
© IBM X-Force 2009 - Extrait du rapport 2009
23
Sunday, March 4, 12
![Page 15: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/15.jpg)
Exposition à une vulnérabilité
26
Sunday, March 4, 12
![Page 16: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/16.jpg)
Ce que dit le CIO : mais j’ai un Firewall !!!
27
Sunday, March 4, 12
![Page 17: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/17.jpg)
Ce que dit le Commercial : J’ai un certificat SSL
28
Sunday, March 4, 12
![Page 18: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/18.jpg)
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.
29
Sunday, March 4, 12
![Page 19: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/19.jpg)
Offres
12Sunday, March 4, 12
![Page 20: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/20.jpg)
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...
•Sachez et partagez ceci:
• HTML5 introduit de bien belle facilités utilisateur, mais avec un impact important sur la sécurité (WebSocket, CORS, ...)
30
Sunday, March 4, 12
![Page 21: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/21.jpg)
The OWASP Foundationhttp://www.owasp.org
Les risques !
Sunday, March 4, 12
![Page 22: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/22.jpg)
‘OR 1==1 --’
15Sunday, March 4, 12
![Page 23: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/23.jpg)
‘OR 1==1 --’
15
L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections :
•XML•XPath•LDAP•ORB(Hibernate)•...
Sunday, March 4, 12
![Page 24: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/24.jpg)
‘OR 1==1 --’
15
L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections :
•XML•XPath•LDAP•ORB(Hibernate)•...
Sunday, March 4, 12
![Page 25: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/25.jpg)
‘OR 1==1 --’
15
L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections :
•XML•XPath•LDAP•ORB(Hibernate)•...
A1 -‐ Injec*on
Sunday, March 4, 12
![Page 26: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/26.jpg)
‘OR 1==1 --’
15
L’injection SQL fait beaucoup parler d’elle. Mais il existe d’autres formes d’injections :
•XML•XPath•LDAP•ORB(Hibernate)•...
A1 -‐ Injec*on
Sunday, March 4, 12
![Page 27: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/27.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
Sunday, March 4, 12
![Page 28: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/28.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
Imaginons un accès normal :
Sunday, March 4, 12
![Page 29: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/29.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Sunday, March 4, 12
![Page 30: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/30.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Sunday, March 4, 12
![Page 31: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/31.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent :
Sunday, March 4, 12
![Page 32: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/32.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1
Sunday, March 4, 12
![Page 33: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/33.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1
Sunday, March 4, 12
![Page 34: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/34.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent : http://www.example.com/Project.rb?name=me ‘ or ‘1’=’1
Voir un accès très différent :
Sunday, March 4, 12
![Page 35: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/35.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent : http://www.example.com/Project.rb?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
Sunday, March 4, 12
![Page 36: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/36.jpg)
Injec-on de données -‐ Exemple de code vulnérable SQL
Soit le code Suivant
16
Project.find(:all, :conditions => "name = '#{params[:name]}'")
SELECT * FROM Project WHERE name= ‘me’
SELECT * FROM Project WHERE name = ‘me’ or ‘1’=’1’
SELECT * FROM projects WHERE name = ''; DELETE FROM PROJECTS; SELECT * from projects where '1'='1'
http://www.example.com/Project.rb?name=meImaginons un accès normal :
Imaginons un accès différent : http://www.example.com/Project.rb?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
Sunday, March 4, 12
![Page 37: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/37.jpg)
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
![Page 38: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/38.jpg)
Injection - Prévention1.Via une validation d’entrée propre
2.Via les requêtes paramétrées
Sunday, March 4, 12
![Page 39: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/39.jpg)
19Sunday, March 4, 12
![Page 40: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/40.jpg)
19Sunday, March 4, 12
![Page 41: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/41.jpg)
19Sunday, March 4, 12
![Page 42: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/42.jpg)
19Sunday, March 4, 12
![Page 43: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/43.jpg)
19
http://codebutler.github.com/firesheep/
Sunday, March 4, 12
![Page 44: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/44.jpg)
20Sunday, March 4, 12
![Page 45: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/45.jpg)
20Sunday, March 4, 12
![Page 46: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/46.jpg)
20
mabanque.com
Sunday, March 4, 12
![Page 47: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/47.jpg)
20
mabanque.com
Sunday, March 4, 12
![Page 48: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/48.jpg)
20
mabanque.comlogin.rb
Sunday, March 4, 12
![Page 49: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/49.jpg)
20
Requete
mabanque.comlogin.rb
Sunday, March 4, 12
![Page 50: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/50.jpg)
20
Requete
mabanque.comlogin.rb
Sunday, March 4, 12
![Page 51: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/51.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
mabanque.comlogin.rb
Sunday, March 4, 12
![Page 52: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/52.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
mabanque.com
mabanque.com
login.rb
Sunday, March 4, 12
![Page 53: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/53.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 54: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/54.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 55: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/55.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
RequeteCookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 56: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/56.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
RequeteCookie : SESSIONID=4242
RéponseCookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 57: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/57.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
RequeteCookie : SESSIONID=4242
RéponseCookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 58: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/58.jpg)
20
Requete
RéponseSet-Cookie : SESSIONID=4242
RequeteCookie : SESSIONID=4242
RéponseCookie : SESSIONID=4242
mabanque.com
mabanque.comImages
login.rb
Sunday, March 4, 12
![Page 59: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/59.jpg)
21Sunday, March 4, 12
![Page 60: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/60.jpg)
21
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et d'authentification, mais il s'agit d'une 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.
Sunday, March 4, 12
![Page 61: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/61.jpg)
21
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et d'authentification, mais il s'agit d'une 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.
Sunday, March 4, 12
![Page 62: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/62.jpg)
21
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et d'authentification, mais il s'agit d'une 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
Sunday, March 4, 12
![Page 63: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/63.jpg)
21
Les développeurs peuvent être tentés de créer leur propre gestionnaire de sessions et d'authentification, mais il s'agit d'une 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
Sunday, March 4, 12
![Page 64: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/64.jpg)
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
![Page 65: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/65.jpg)
Sessions en Rails★Exemple de cookie propre :
23Sunday, March 4, 12
![Page 66: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/66.jpg)
The OWASP Foundationhttp://www.owasp.org
DémoXSS
Sunday, March 4, 12
![Page 67: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/67.jpg)
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
![Page 68: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/68.jpg)
26
XSS
Sunday, March 4, 12
![Page 69: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/69.jpg)
26
Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client...
XSS
Sunday, March 4, 12
![Page 70: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/70.jpg)
26
Le Cross Site Scripting est souvent mal considéré. Sa puissance peut aller jusqu’a la prise de contrôle sur le poste client...
XSS
Sunday, March 4, 12
![Page 71: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/71.jpg)
26
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)
XSS
Sunday, March 4, 12
![Page 72: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/72.jpg)
26
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)
XSS
Sunday, March 4, 12
![Page 73: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/73.jpg)
27
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.
Sunday, March 4, 12
![Page 74: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/74.jpg)
★Utilisation des échappements HTML (non suffisant)
★Utilisation des sanitizer HTML (mieux, mais non suffisant)
★Utilisation de OWASP ESAPI (beta)
28
http://rubydoc.info/gems/owasp-esapi-ruby
Sunday, March 4, 12
![Page 75: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/75.jpg)
The OWASP Foundationhttp://www.owasp.org
DémoCSRF
Sunday, March 4, 12
![Page 76: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/76.jpg)
CSRF
30Sunday, March 4, 12
![Page 77: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/77.jpg)
CSRF
30
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.
Sunday, March 4, 12
![Page 78: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/78.jpg)
CSRF
30
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.
Sunday, March 4, 12
![Page 79: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/79.jpg)
CSRF
30
A5 -‐ Cross site Request Forgery
(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.
Sunday, March 4, 12
![Page 80: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/80.jpg)
CSRF
30
A5 -‐ Cross site Request Forgery
(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.
Sunday, March 4, 12
![Page 81: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/81.jpg)
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
![Page 82: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/82.jpg)
CSRF PreventionAjouter 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 …
• Attention a ne pas exposer le jeton dans l’entete “referer”• 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
![Page 83: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/83.jpg)
Par défaut le framework inclut le principe du jeton
CSRF Prévention en Rails
33Sunday, March 4, 12
![Page 84: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/84.jpg)
The OWASP Foundationhttp://www.owasp.org
Fuite d’informations
Sunday, March 4, 12
![Page 85: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/85.jpg)
35Sunday, March 4, 12
![Page 86: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/86.jpg)
35
Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale
Sunday, March 4, 12
![Page 87: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/87.jpg)
35
Une simple recherche google permettait d’avoir accès aux numéros de sécurité sociale des étudiants de Yale
Sunday, March 4, 12
![Page 88: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/88.jpg)
35
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é
Sunday, March 4, 12
![Page 89: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/89.jpg)
35
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é
Sunday, March 4, 12
![Page 90: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/90.jpg)
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’erreurs36
Sunday, March 4, 12
![Page 91: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/91.jpg)
The OWASP Foundationhttp://www.owasp.org
Conclusion
Sunday, March 4, 12
![Page 92: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/92.jpg)
OWASP Top Ten 2010
http://www.owasp.org/index.php/Top_10
A1: Injec*on A2: Cross Site Scrip*ng (XSS)
A3: Mauvaise ges*on des sessions et de l’authen*fica*on
A4:Référence directe non sécurisée à un
objet
A5: Cross Site Request Forgery (CSRF)
A6: Mauvaise configura*on sécurité
A8: Mauvaise restric*on d’accès à
une URL
A10: Redirec*ons et transferts non validés
A7: Mauvais stockage cryptographique
A9: Protec*on insuffisante lors du
transport des données
Sunday, March 4, 12
![Page 93: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/93.jpg)
A lire
39
Ressources OWASP
• https://www.owasp.org/index.php/Top10
• https://www.owasp.org/index.php/Project_Information:template_Ruby_on_Rails_Security_Guide_V2
• https://www.owasp.org/index.php/Esapi
ROR Security Project:
• http://www.rorsecurity.info/
Sunday, March 4, 12
![Page 94: 2012 03-01-ror security v01](https://reader037.fdocuments.us/reader037/viewer/2022103110/547e3565b4af9f87478b4764/html5/thumbnails/94.jpg)
Contact@SPoint
40Sunday, March 4, 12