TOPIC_13.pptx
- Количество слайдов: 25
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Topic 12. Security.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Содержание 1. 2. 3. 4. 5. Принципы безопасности. Виды уязвимостей. Как тестировать. Клиент-сервер. Выводы.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Тестирование безопасности - это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным. Принципы безопасности программного обеспечения Общая стратегия безопасности основывается на трех основных принципах: конфиденциальность целостность доступность
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Конфиденциальность - это сокрытие определенных ресурсов или информации. Под конфиденциальностью можно понимать ограничение доступа к ресурсу некоторой категории пользователей, или другими словами, при каких условиях пользователь авторизован получить доступ к данному ресурсу. Целостность Существует два основных критерия при определении понятия целостности: Доверие. Ожидается, что ресурс будет изменен только соответствующим способом определенной группой пользователей. Повреждение и восстановление. В случае когда данные повреждаются или неправильно меняются авторизованным или не авторизованным пользователем, вы должны определить на сколько важной является процедура восстановления данных.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Доступность представляет собой требования о том, что ресурсы должны быть доступны авторизованному пользователю, внутреннему объекту или устройству. Как правило, чем более критичен ресурс тем выше уровень доступности должен быть.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Виды уязвимостей В настоящее время наиболее распространенными видами уязвимости в безопасности программного обеспечения являются: XSS (Cross-Site Scripting) - это вид уязвимости программного обеспечения (Web приложений), при которой, на генерированной сервером странице, выполняются вредоносные скрипты, с целью атаки клиента. XSRF / CSRF (Request Forgery) - это вид уязвимости, позволяющий использовать недостатки HTTP протокола, при этом злоумышленники работают по следующей схеме: ссылка на вредоносный сайт установливается на странице, пользующейся доверием у пользователя, при переходе по вредоносной ссылке выполняется скрипт, сохраняющий личные данные пользователя (пароли, платежные данные и т. д. ), либо отправляющий СПАМ сообщения от лица пользователя, либо изменяет доступ к учетной записи пользователя, для получения полного контроля над ней.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Code injections (SQL, PHP, ASP и т. д. ) - это вид уязвимости, при котором становится возможно осуществить запуск исполняемого кода с целью получения доступа к системным ресурсам, несанкционированного доступа к данным либо выведения системы из строя. Server-Side Includes (SSI) Injection - это вид уязвимости, использующий вставку серверных команд в HTML код или запуск их напрямую с сервера. Authorization Bypass - это вид уязвимости, при котором возможно получить несанкционированный доступ к учетной записи или документам другого пользователя
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Приведем примеры тестирования ПО на предмет уязвимости в системе безопасности. Для этого Вам необходимо проверить Ваше программное обеспечение на наличия известных видов уязвимостей: XSS (Cross-Site Scripting) Сами по себе XSS атаки могут быть очень разнообразными. Злоумышленники могут попытаться украсть ваши куки, перенаправить вас на сайт, где произойдет более серьезная атака, загрузить в память какой-либо вредоносный объект и т. д. , всего навсего разместив вредоносный скрипт у вас на сайте. Как пример, можно рассмотреть следующий скрипт, выводящий на экран ваши куки: либо скрипт делающий редирект на зараженную страницу: либо создающий вредоносный объект с вирусом и т. п. : Больше на https: //www. owasp. org/index. php/XSS_Filter_Evasion_Cheat_Sheet.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. XSRF / CSRF (Request Forgery) Наиболее частыми CSRF атаками являются атаки использующие HTML тэг или Javascript объект image. Чаще всего атакующий добавляет необходимый код в электронное письмо или выкладывает на веб-сайт, таким образом, что при загрузке страницы осуществляется запрос, выполняющий вредоносный код. Примеры: IMG SRC SCRIPT SRC
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Code injections (SQL, PHP и т. д. ) Вставки исполняемого кода рассмотрим на примере кода SQL. Форма входа в систему имеет 2 поля - имя и пароль. Обработка происходит в базе данных через выполнение SQL запроса: SELECT Username FROM Users WHERE Name = 'tester' AND Password = 'testpass'; Вводим корректное имя ’tester’, а в поле пароль вводим строку: testpass' OR '1'='1 В итоге, Если поле не имеет соответствующих валидаций или обработчиков данных, может вскрыться уязвимость, позволяющая зайти в защищенную паролем систему, т. к. SQL запрос примет следующий вид: SELECT Username FROM Users WHERE Name = 'tester' AND Password = 'testpass' OR '1'='1'; Условие '1'='1' всегда будет истинным и поэтому SQL запрос всегда будет возвращать много значений.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Server-Side Includes (SSI) Injection В зависимости от типа операционной системы команды могут быть разными, как пример рассмотрим команду, которая выводит на экран список файлов в OS Linux: < !--#exec cmd="ls" --> Authorization Bypass Пользователь А может получить доступ к документам пользователя Б. Допустим, есть реализация, где при просмотре своего профиля, содержащего конфеденциальную информацию, в URL страницы передается user. ID, а данном случае есть смысл попробовать подставить вместо своего user. ID номер другого пользователя. И если вы увидите его данные, значит вы нашли дефект.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Особенности при тестировании безопасности ПО Тестирование безопасности относится к одному из видов нефункциоального тестирования и имеет характерные особенности. Одна из них, это особое внимание к «негативному» тестированию, т. е. Уделяется внимание в каких случаях ПО выдает ошибку. В некоторых случах ошибки позволяют диагностировать пути для взлома. Также необходимо думать как взломщик. Т. е. Использовать схожие инструменты, исследовать ПО и даже код. Очень сложно измерить качество проведения такого тестирования. Можно найти 99 уязвимостей, но упустить одно, которое и окажется решающим. Также важное значение имеют нефункциональные требования: например, юзабилити. К сожалению, всегда приходится соблюдать границу между удобством и безопасностью и не всегда это в пользу удобства. Тестирование безопасности необходимо проводить, исходя из составленной матрицы рисков безопасности или просто списка необходимых требований к безопасности. Это позволяет снизить риски нахождения уязвимостей в наиболее важных местах. Очень важно также иметь доступ к коду, чтобы можно было провести сканирование кода на предмет потенциальных уязвимостей. Тестирование безопасности ПО требует хорошего знания программирования и ОС, поэтому нужна высокая квалификация.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Сложности при тестировании безопасности ПО Кроссплатфомернные приложения. Разные драйвера, конфигурации, железо. Все это делает поведение приложения разным на разных ОС, соответственно, приходится уделять внимание разным деталям. Уявимости могут находиться в используемом ПО, поэтому необходимо по крайней мере следить за выпуском обновлений. Необходим софт для эмуляции аппаратуры для защиты ПО, т. к. Например, нагрузочные тесты, проводить без него невозможно. Методологии тестирования Одним из основных методов является code review, правда руками квалифицированных разработчиков. Преимущества очевидны. Исследовательское тестирование также применимо в отношении тестирования безопасности, можно искать подобное ПО и найденные уязвимости, использовать дебаггер для поиска различных условий возникновения багов итп. Fuzz тестирование помогает найти ошибки, на которые программа реагирует неправильно. Тестирование на возможность взлома (Penetration testing) также необходимо, иначе какое это тестирование безопасности? Нагрузочное тестирование с модификациями позволяет моделировать DDOS атаки. Типичными багами можно назвать переполнение буфера, race conditions, некорректные коды ошибок и др.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Инструменты для тестирования Для тестирования исходного кода rats, cppcheck, Open. VAS, различные утилиты для сканирования веб-сайтов, дебаггеры, нагрузочные тесты с модификациями. Выводы На основе вышеизложенного можно сделать следующие выводы: Ø Тестирование безопасности – это необходимый этап для компаний, которым важен безопасный “софт” Ø Невозможно измерить качество тестирования безопасности Ø Не стоит думать, что функционального тестирования достаточно Ø Можно и необходимо постоянно изучать новые технологии Ø Тестирование безопасности похоже на исследовательское Ø Необходимо проводить экспертизу Ø Особое внимание архитектуре и компонентам
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Клиент-серверное взаимодействие Как правило компьютеры и программы, входящие в состав информационной системы, не являются равноправными. Некоторые из них владеют ресурсами (файловая система, процессор, принтер, база данных и т. д. ), другие имеют возможность обращаться к этим ресурсам. Компьютер (или программу), управляющий ресурсом, называют сервером этого ресурса (файл-сервер, сервер базы данных, вычислительный сервер. . . ). Клиент и сервер какого-либо ресурса могут находится как на одном компьютере, так и на различных компьютерах, связанных сетью. В рамках многоуровневого представления вычислительных систем можно выделить три группы функций, ориентированных на решение различных подзадач: функции ввода и отображения данных (обеспечивают взаимодействие с пользователем); прикладные функции, характерные для данной предметной области;
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Рис. 1. Компоненты сетевого приложения. Выполнение этих функций в основном обеспечивается программными средствами, которые можно представить в виде взаимосвязанных компонентов (рис. 1), где: компонент представления отвечает за пользовательский интерфейс; прикладной компонент реализует алгоритм решения конкретной задачи; компонент управления ресурсом обеспечивает доступ к необходимым ресурсам. Автономная система (компьютер, не подключенный к сети) представляет все эти компоненты как на различных уровнях (ОС, служебное ПО и утилиты, прикладное ПО), так и на уровне приложений (не характерно для современных программ). Так же и сеть — она представляет все эти компоненты, но, в общем случае, распределенные между узлами. Задача сводится к обеспечению сетевого взаимодействия между этими компонентами.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Архитектура «клиент-сервер» определяет общие принципы организации взаимодействия в сети, где имеются серверы, узлыпоставщики некоторых специфичных функций (сервисов) и клиенты, потребители этих функций. Практические реализации такой архитектуры называются клиентсерверными технологиями. Каждая технология определяет собственные или использует имеющиеся правила взаимодейстия между клиентом и сервером, которые называются протоколом обмена (протоколом взаимодействия).
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Двухзвенная архитектура В любой сети, построенной на современных сетевых технологиях, присутствуют элементы клиент-серверного взаимодействия, чаще всего на основе двухзвенной архитектуры. Двухзвенной (two-tier, 2 -tier) она называется из-за необходимости распределения трех базовых компонентов между двумя узлами (клиентом и сервером). Рис. 2. Двухзвенная клиент-серверная архитектура Двухзвенная архитектура используется в клиент-серверных системах, где сервер отвечает на клиентские запросы напрямую и в полном объеме, при этом используя только собственные ресурсы. Т. е. сервер не вызывает сторонние сетевые приложения и не обращается к сторонним ресурсам для выполнения какой-либо части запроса (рис. 2)
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры: сервер терминалов — распределенное представление данных; файл-сервер — доступ к удаленной базе данных и файловым ресурсам; сервер БД — удаленное представление данных; сервер приложений — удаленное приложение. Преимущества такого подхода очевидны: возможно централизованное администрирование прикладных функций; снижение стоимости владения системой (TOC, total cost of ownership) за счет аренды сервера, а не его покупки; значительное снижение сетевого трафика (т. к. передаются не SQL -запросы, а вызовы хранимых процедур).
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Трехзвенная архитектура Рис. 4. Трехзвенная клиент-серверная архитектура Еще одна тенденция в клиент-серверных технологиях связана со все большим использованием распределенных вычислений. Они реализуются на основе модели сервера приложений, где сетевое приложение разделено на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате. В этом случае двухзвенная клиент-серверная архитектура становится трехзвенной (three-tier, 3 -tier).
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Как правило, третьим звеном в трехзвенной архитектуре становится сервер приложений, т. е. компоненты распределяются следующим образом (рис. 4): Представление данных — на стороне клиента. Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО). Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные. Рис. 5. Многозвенная (N-tier) клиент-серверная архитектура
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Трехзвенная архитектура может быть расширена до многозвенной (N-tier, Multi-tier) путем выделения дополнительных серверов, каждый из которых будет представлять собственные сервисы и пользоваться услугами прочих серверов разного уровня. Абстрактный пример многозвенной модели приведен на рис. 5. Сравнение архитектур Двухзвенная архитектура проще, так как все запросы обслуживаются одним сервером, но именно из-за этого она менее надежна и предъявляет повышенные требования к производительности сервера. Трехзвенная архитектура сложнее, но благодаря тому, что функции распределены между серверами второго и третьего уровня, эта архитектура представляет: Высокую степень гибкости и масштабируемости. Высокую безопасность (т. к. защиту можно определить для каждого сервиса или уровня). Высокую производительность (т. к. задачи распределены между серверами).
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Клиент-серверные технологии Архитектура клиент-сервер применяется в большом числе сетевых технологий, используемых для доступа к различным сетевым сервисам. Кратко рассмотрим некоторые типы таких сервисов (и серверов). Web-серверы Изначально представляли доступ к гипертекстовым документам по протоколу HTTP (Huper Text Transfer Protocol). Сейчас поддерживают расширенные возможности, в частности работу с бинарными файлами (изображения, мультимедиа и т. п. ). Серверы приложений Предназначены для централизованного решения прикладных задач в некоторой предметной области. Для этого пользователи имеют право запускать серверные программы на исполнение. Использование серверов приложений позволяет снизить требования к конфигурации клиентов и упрощает общее управление сетью. Серверы баз данных используются для обработки пользовательских запросов на языке SQL. При этом СУБД находится на сервере, к которому и подключаются клиентские приложения. Файл-серверы Файл-сервер хранит информацию в виде файлов и представляет пользователям доступ к ней. Как правило файл-сервер обеспечивает и определенный уровень защиты от несакционированного доступа.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Прокси-сервер Во-первых, действует как посредник, помогая пользователям получить информацию из Интернета и при этом обеспечивая защиту сети. Во-вторых, сохраняет часто запрашиваемую информацию в кэш-памяти на локальном диске, быстро доставляя ее пользователям без повторного обращения к Интернету. Файрволы (брандмауэры) Межсетевые экраны, анализирующие и фильтрующие проходящий сетевой трафик, с целью обеспечения безопасности сети. Почтовые серверы Представляют услуги по отправке и получению электронных почтовых сообщений. Серверы удаленного доступа (RAS) Эти системы обеспечивают связь с сетью по коммутируемым линиям. Удаленный сотрудник может использовать ресурсы корпоративной ЛВС, подключившись к ней с помощью обычного модема. Это лишь несколько типов из всего многообразия клиент-серверных технологий, используемых как в локальных, так и в глобальных сетях. Заключение Итак, основная идея архитектуры «клиент-сервер» состоит в разделении сетевого приложения на несколько компонентов, каждый из которых реализует специфический набор сервисов. Компоненты такого приложения могут выполняться на разных компьютерах, выполняя серверные и/или клиентские функции. Это позволяет повысить надежность, безопасность и производительность сетевых приложений и сети в целом.
ТЕСТИРОВАНИЕ ПО TOPIC 11. SECURITY. Литература: 1. 2. 3. 4. http: //www. protesting. ru/ http: //ru. qahelp. net/ http: //habrahabr. ru/company/performance_lab/blog/207512/ 4. The Scrum Master Training Manual, v. 1. 2. , By Nader K. Rad, Frank Turley, Copyright © 2013 Management Plaza. 5. «Тестирование Дот Ком или пособие по жесткому обращению с багами в интернет-стартапах» Р. Савин. 7. http: //www. pqm-online. com/50 8. http: //testitquickly. com/2010/11/20/22/ 9. http: //www. 4 stud. info/networking/lecture 5. html