ярослав рабоволюк

27

Upload: kuchinskaya

Post on 22-May-2015

1.214 views

Category:

Documents


13 download

TRANSCRIPT

2

безопасность клиентской части

- цель атаки: пользователь, его браузер- доступность: веб-сайт открыт злоумышленнику- распространенность

- xss- csrf- clickjacking- фиксация сессии- расщепление запросов- открытый редирект...

3

XSS

- отраженная ( reflective )- сохраненная (stored)- на основе обьектной модели (DOM-based)

внедрение подконтрольного злоумышленником html-кода в контекст браузера пользователя

4

XSS:reflective

TARGET

user attackerurl

userurl

user TARGEThtml

5

XSS:reflective:пример

http://site.com?username=’><script>payload</script>

site.com:

<input type=’text’ name=‘username’ value=’’><script>payload</script>’>

6

известные инциденты

apache.org, 04.05.2010, xss + configuration error

7

XSS:stored

user

TARGET attacker

attackerurl

user TARGEThtml

8

XSS:stored:пример

POST site.com?addmsgmsg=<script>payload</script>

site.com/getmsg?id=1234

<div class=‘message’><script>payload</script></div>

9

известные инциденты

twitter.com, 2009.04,2010.09, xss worm

10

XSS: возможности

1. кража сессии2. обход firewall/NAT3. заражение вирусами, drive by download)

11

XSS: пример векторов атаки

1. <script>a=param;</script>

2. <a href=‘http://param‘>

3. <img src=‘param’>

4. <div style=’background-url: “param”;’>

http://site.com?param=1;function()

http://site.com?param=’><script>function()</script>

http://site.com?param=crap’ onerror=‘function()

http://site.com?param=javascript:function()

Цель: выполнение function() в контексте сайта site.com

12

XSS: защита

1. не использовать недоверенные данные в местах, в которых санитизация в принципе невозможна. <script>param</script>

<script src=‘param’><!-- param --><tag param><param><style>param</style>

13

XSS: защита

1. не использовать недоверенные данные в местах, в которых санитизация в принципе невозможна.2. санитизация данных в зависимости от места их применения

html:<div>param</div>attribute value:<div class=‘param’>javascript:<script>a=‘param’;</script>css style property:<div style=‘background-url:’param’>url:<a href=‘param’>

14

XSS: защита

1. не использовать недоверенные данные в местах, в которых санитизация в принципе невозможна.2. санитизация данных в зависимости от места их применения:html,attribute,javascript,css,url3. применение правил фильтрации ко всем источникам пользовательских данных

- GET/POST/COOKIE

- storage

- json

15

XSS: защита

1. не использовать недоверенные данные в местах, в которых санитизация в принципе невозможна.2. санитизация данных в зависимости от места их применения:html,attribute,javascript,css,url3. применение правил фильтрации ко всем источникам пользовательских данных5. флаг HttpOnly

16

пользовательский html

Что делать, если необходимо использовать пользовательский контент:

17

пользовательский html

Что делать, если необходимо использовать пользовательский контент:

НЕ ДЕЛАЙТЕ ЭТОГО!

18

пользовательский html

Что делать, если необходимо использовать пользовательский контент:

1. в iframe с отдельного домена2. whitelist тегов и аттрибутов3. пре/постмодерация4. желательно рассмотреть возможность “языка разметки”

19

CSRF

EVILSITE

EVILSITE

user attackerevilsite

user<html>...<img src=‘http://target/action’>...</html>

TARGET user

вызов функций сайта от лица аутентифицированного пользователя

20

CSRF: защита

1. Referer check 2. использование security tokens3. challenge-response

& POST method

21

CLICKJACKING

evilsite, cursorjacking:cursor:url("img.png")

OKOK

evilsite, likejacking:addEventListener(‘mousemove’...+iframe

OK

22

CLICKJACKING

23

CLICKJACKING

24

CLICKJACKING

...style='position:absolute;left:0px;top:0px;z-index:10000;'...

25

CLICKJACKING: защита

1.X-Frame-Options: DENY header2. css validation3. challenge-response

26

ресурсы

https://www.owasp.org

http://code.google.com/p/browsersec/wiki/Main

http://html5sec.org/

http://www.mniemietz.de/demo/cursorjacking/cursorjacking.html

Рабоволюк Ярославруководитель отдела И.Б.

[email protected]

Спасибо!