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

Post on 11-Nov-2014

324 views 2 download

Tags:

description

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Защита

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

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

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

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

Внедрение 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’

Защита

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

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

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

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

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

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

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

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

XSS (Сross Site Sсriрting)

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

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

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

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

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

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

Защита

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

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