Как тестировать ПО на безопасность?




Тестирование безопасности

План лекции:

1. Введение.

2. Принципы безопасности ПО.

3. Что проверять?

4. Виды уязвимостей.

5. Как тестировать ПО на безопасность.

6. Инструменты.

Введение

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

Почему тестирование защищенности имеет такое большое значение именно для веб-приложений?

1. Веб-приложения ориентированы на массовое использование, поэтому сбои в работе, вызванные действиями злоумышленника, могут оказать негативное воздействие на большое количество ни в чём неповинных пользователей.

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

3. Доступ к веб-приложению имеет множество “недоверенных” пользователей, при этом владельцы или разработчики приложения, как правило, не могут контролировать или ограничивать их действия.

4. Обмен информацией между браузером и сервером происходит по открытым каналам с использованием открытых протоколов, поэтому сложно контролировать данные, передаваемые клиентами.

5. Разработка веб-приложений не всегда ведётся с должным вниманием к обеспечению защищенности и надёжности, потому что рынок в первую очередь требует “быстро”!

Разумеется, тестирование защищенности не ограничивается тестированием самого веб-приложения. Уязвимость может находиться в веб-сервере, операционной системе, почтовой системе, ftp-сервере или ещё где-то. Но задача создания защищенного окружения в большей степени находится в зоне ответственности системных администраторов, а вот защищенность вашего собственного веб-приложения - целиком на совести его разработчиков и тестировщиков.

Принципы безопасности программного обеспечения

Общая стратегия безопасности основывается на трех основных принципах:

1. конфиденциальность

2. целостность

3. доступность

Конфиденциальность

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

Целостность

Существует два основных критерия при определении понятия целостности:

1. Доверие. Ожидается, что ресурс будет изменен только соответствующим способом определенной группой пользователей.

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

Доступность

Доступность представляет собой требования о том, что ресурсы должны быть доступны авторизованному пользователю, внутреннему объекту или устройству. Как правило, чем более критичен ресурс, тем выше уровень доступности должен быть.

Что проверять?

Контроль доступа – определяет проблемы, связанные с несанкционированным доступом пользователей к информации и функциям в зависимости от предоставленной роли. Тестирование конфигурации ролевой модели.

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

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

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

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

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

Интеграция со сторонними сервисами – позволяет убедиться в невозможности манипуляции данными, передаваемыми между приложением и сторонними компонентами, например, платежными системами или соцсетями.

Проверка устойчивости к Dos/DDos атакам – проверяет способность приложения обрабатывать незапланированно высокие нагрузки и большие объемы данных, которые могут быть направлены на выведение приложения из строя.

Виды уязвимостей

Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений. Сообщество OWASP включает в себя корпорации, образовательные организации и частных лиц со всего мира. Сообщество работает над созданием статей, учебных пособий, документации, инструментов и технологий, находящихся в свободном доступе. Участники проекта уже десять лет составляют список Топ-10 самых опасных уязвимостей в веб-приложениях, стараясь привлечь внимание всех веб-разработчиков.

В настоящее время наиболее распространенными видами уязвимости в безопасности программного обеспечения являются:

XSS (Cross-Site Scripting) - это вид уязвимости программного обеспечения (Web приложений), при которой, на генерированной сервером странице, выполняются вредоносные скрипты, с целью атаки клиента.

XSRF / CSRF (Request Forgery) - это вид уязвимости, позволяющий использовать недостатки HTTP протокола, при этом злоумышленники работают по следующей схеме: ссылка на вредоносный сайт устанавливается на странице, пользующейся доверием у пользователя, при переходе по вредоносной ссылке выполняется скрипт, сохраняющий личные данные пользователя (пароли, платежные данные и т.д.), либо отправляющий СПАМ сообщения от лица пользователя, либо изменяет доступ к учетной записи пользователя, для получения полного контроля над ней.

Code injections (SQL, PHP, ASP и т.д.) - это вид уязвимости, при котором становится возможно осуществить запуск исполняемого кода с целью получения доступа к системным ресурсам, несанкционированного доступа к данным либо выведения системы из строя.

Server-Side Includes (SSI) Injection - это вид уязвимости, использующий вставку серверных команд в HTML код или запуск их напрямую с сервера.

Authorization Bypass - это вид уязвимости, при котором возможно получить несанкционированный доступ к учетной записи или документам другого пользователя.

Как тестировать ПО на безопасность?

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

Поисковые роботы, безостановочно бродящие по просторам интернета, помимо информации, полезной обычному пользователю, часто фиксируют то, что может быть использовано злоумышленниками при атаке на веб-ресурс. Например, ошибки скриптов и файлы с чувствительной информацией (начиная от конфигурационных файлов и логов, заканчивая файлами с аутентификационными данными и бэкапами баз данных).
С точки зрения поискового робота сообщение об ошибке выполнения sql-запроса — это обычный текст, неотделимый, например, от описания товаров на странице. Если вдруг поисковый робот наткнулся на файл с расширением.sql, который почему-то оказался в рабочей папке сайта, то он будет воспринят как часть содержимого сайта и так же будет проиндексирован (включая, возможно, указанные в нём пароли).
Подобную информацию можно найти, зная устойчивые, часто уникальные, ключевые слова, которые помогают отделить «уязвимые страницы» от страниц, не содержащих уязвимости.

 

Приведем примеры тестирования ПО на предмет уязвимости в системе безопасности. Для этого Вам необходимо проверить Ваше программное обеспечение на наличия известных видов уязвимостей:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-01-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: