Информационная безопасность в аспекте веб-разработки

25
Информационная безопасность в аспекте веб-разработки Комил Раджабов, Разработчик группы CODE.TJ

description

Комил Раджабов, Разработчик группы CODE.TJ

Transcript of Информационная безопасность в аспекте веб-разработки

Page 1: Информационная безопасность в аспекте веб-разработки

Информационная безопасность в аспекте веб-разработки

Комил Раджабов,Разработчик группы CODE.TJ

Page 2: Информационная безопасность в аспекте веб-разработки

ТЕРМИНОЛОГИЯ

Page 3: Информационная безопасность в аспекте веб-разработки

Определение ИБИнформационная безопасность – это практическая защита информации от несанкционированного доступа, использования, разглашения, нарушения целостности, модификации, чтения, инспектирования, записи или уничтожения.

Информационная безопасность — состояние сохранности информационных ресурсов и защищенности законных прав личности и общества в информационной сфере.

Информационная безопасность – это процесс обеспечения конфиденциальности, целостности и доступности информации.

Конфиденциальность: Обеспечение доступа к информации только авторизованным пользователям.Целостность: Обеспечение достоверности и полноты информации и методов ее обработки.Доступность: Обеспечение доступа к информации и связанным с ней активам авторизованных пользователей по мере необходимости.

Page 4: Информационная безопасность в аспекте веб-разработки

Конфиденциальность, Целостность, Доступность

Page 5: Информационная безопасность в аспекте веб-разработки

Еще немного терминологии

Угроза - это потенциально возможное событие, которое посредством воздействия на компоненты информационной системы (ИС) может привести к нанесению ущерба.

Уязвимость - это свойство ИС, использование которого нарушителем может привести к реализации угрозы.

Атака - это любое действие нарушителя, которое приводит к реализации угрозы путем использования уязвимостей информационной системы.

Page 6: Информационная безопасность в аспекте веб-разработки

Модель глубины защиты

Page 7: Информационная безопасность в аспекте веб-разработки

ВЕБ-ПРИЛОЖЕНИЯ

Page 8: Информационная безопасность в аспекте веб-разработки

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

Клиент-серверная архитектура

Page 9: Информационная безопасность в аспекте веб-разработки

О технологиях веб-разработки

Языки веб-программирования (сервер):ASP.NET, C/C++, Java, Perl, PHP, Python, Ruby, NodejsДля реализации GUI (клиент):HTML, XHTML, CSS (Sass, Less)Создание интерактивного интерфейса на стороне клиента:ActiveX, Adobe Flash, Adobe Flex, Java, JavaScript, Silverlight

Page 10: Информационная безопасность в аспекте веб-разработки

Основные элементы

1. Браузер и компьютер пользователя2. Канал связи для всех компонентов (SSL/TLS)3. Firewall, IPS (Intrusion Prevention System),

WAF (виртуальный пачтинг)4. Балансировка нагрузки (DoS)5. Веб-сервер6. Веб-приложение7. Серверная часть (СУБД, XML и т.д.)

Page 11: Информационная безопасность в аспекте веб-разработки

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

Наиболее часто используемые уязвимости:

• На стороне сервера– SQL-injection– Подбор паролей– Инклуды (includes)– Выполнение команд операционной системы

• На стороне клиента– XSS (межсайтовое выполнение сценариев)– CSRF (перенаправление/подделка HTTP-запросов)

Page 12: Информационная безопасность в аспекте веб-разработки

Статистика распределения уязвимостей

По данным Veracode, http://veracode.com

Page 13: Информационная безопасность в аспекте веб-разработки

Какие цели преследуют злоумышленники?

• Черный SEO• Распространение спама • Распространение вредоносного кода • Кража и искажение данных cайта • Удаление содержимого сайта (DoS-атаки) • Использование сайта в качестве площадки

для проведения атак на другие ресурсы • Just for fun (ради шутки)

Page 14: Информационная безопасность в аспекте веб-разработки

Методы используемые злоумышленниками

• Подбор паролей • Уязвимости «нулевого» дня • Тестирование функций (Fuzzing) • Поиск уязвимостей на основе анализа исходного

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

сайты расположенные на общем хостинге • Уязвимости в смежных компонентах системы • Социальная инженерия / вредоносное ПО и т.д.

Page 15: Информационная безопасность в аспекте веб-разработки

НЕКОТОРЫЕ ПРИМЕРЫ

Page 16: Информационная безопасность в аспекте веб-разработки

ИнклудыИнклуды — тип уязвимостей, при котором существует возможность вывести содержимое определенного файла на сервере или же вставить содержимое файла с другого сервера внутрь сайта.

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

Удаленные инклуды — уязвимости, при которых злоумышленник может определенным запросом вывести содержимое файла со стороннего сайта внутри данного. С помощью этого злоумышленник может вставить свой вредоносный скрипт, например, шелл (скрипт для управления всеми файлами на сервере, как бы ftp с веб-оболочкой) и получить доступ ко всему серверу....$page=$_GET['page'];include ($page);...

Page 17: Информационная безопасность в аспекте веб-разработки

Защита

Фильтрация и ограничение подключаемых в приложении страниц с использованием произвольных входных параметров, а также необходимы соответствующие настройки сервера для ограничения инклудов.

Page 18: Информационная безопасность в аспекте веб-разработки

Внедрение SQL (Injection)

Это один из распространённых способов взлома веб-приложений, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.

Атака типа внедрения SQL может быть возможна из-за некорректной обработки входных данных, используемых в SQL-запросах.

Page 19: Информационная безопасность в аспекте веб-разработки

Внедрение SQL (Injection)Веб-приложение использует входные данные при конструировании SQL-запросов к БД

...$id=$_GET['id'];$query="SELECT * FROM accounts WHERE id='".$id."';$ret=mysql_query($query);...

Злоумышленник подготавливает запрос

http://mysite.com/app/accountView?id=‘ or ‘1 =‘1

При этом может быть сформирован запрос который может вернуть все записи таблицы

SELECT * FROM accounts WHERE custID=‘’ or ‘1’=‘1’

Page 20: Информационная безопасность в аспекте веб-разработки

Защита

Для защиты от данного типа атак необходимо тщательно фильтровать входные параметры, значения которых будут использованы для построения SQL-запроса.

Page 21: Информационная безопасность в аспекте веб-разработки

CSRF (Сross Site Request Forgery)«Межсайтовая подделка запроса» (XSRF) — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника).

Атака осуществляется путем размещения на веб-странице ссылки или скрипта, пытающегося получить доступ к сайту, на котором атакуемый пользователь заведомо уже аутентифицирован.

Например, пользователь Тахмина может просматривать форум, где другой пользователь, Зебо, разместила сообщение. Пусть Зебо создала тег <img>, в котором в качестве источника картинки указан URL, при переходе по которому выполняется действие на сайте банка Тахмины, например:

Если банк Тахмины хранит ее информацию об аутентификации в куки и если куки еще не истекли, при попытке загрузить картинку браузер Тахмины отправит запрос на перевод денег на счет Зебо и подтвердит аутентификацию при помощи куки. Таким образом, транзакция будет успешно завершена, хотя ее подтверждение произойдет без ведома Тахмины.

Зебо: Привет, Тахмина! Посмотри, какой милый котик: <img src="http://example.com/do?account=Tahmina&amount=1000000&for=Zebo">

Page 22: Информационная безопасность в аспекте веб-разработки

ЗащитаНаиболее простым для понимания способом защиты от данного типа атак является механизм, когда веб-сайты должны требовать подтверждения большинства действий пользователя и проверять поле HTTP_REFERER, если оно указано в запросе. Но этот способ может быть небезопасен, и использовать его не рекомендуется.

Другим распространённым способом защиты является механизм, при котором с каждой сессией пользователя ассоциируется дополнительный секретный ключ, предназначенный для выполнения запросов. Пользователь посылает этот ключ среди параметров каждого запроса, и перед выполнением каких-либо действий сервер проверяет этот ключ. Преимуществом данного механизма, по сравнению с проверкой Referer, является гарантированная защита от атак данного типа. Недостатком же являются: требование возможности организации пользовательских сессий и требование динамической генерации HTML-кода активных страниц сайта.

Page 23: Информационная безопасность в аспекте веб-разработки

XSS (Сross Site Sсriрting)

«Межсайтовый скриптинг» — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. Является разновидностью атаки «внедрение кода».Классифицируются два вида XSS по вектору атаки.

Отраженные XSS:

http://example.com/search.php?q=<script>DoSomething();</script>

Устойчивые (хранимые) XSS:

Специфичны для сайтов Веб 2.0 (форумов, блогов, вики), когда на сервере хранятся пользовательские тексты и рисунки. Скрипты вставляются в эти тексты и рисунки.

Классика: увод сессионной куки через XSS

Page 24: Информационная безопасность в аспекте веб-разработки

Защита

Экранировать нужно все пользовательские тексты. (Например: делать htmlspecialchars() для полей, где это необходимо, жестоко фильтровать все html теги.)

Page 25: Информационная безопасность в аспекте веб-разработки

СПАСИБО ЗА ВНИМАНИЕ!