Top-10 уязвимостей в тестировании безопасности

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

Тестировщик » QA-блог » Прочее » Top-10 уязвимостей в тестировании безопасности

OWASP Топ-10: самые частые угрозы, которые надо тестировать

При тестировании безопасности важно иметь актуальную информацию о наиболее значимых типах уязвимости и угроз. OWASP (Open Web Application Security Project) периодически выпускает сводку по 10 самым распространенным ошибкам в безопасности ПО, он называется OWASP Top-10.

На изображение OWASP Top-10 уязвимостей в тестировании безопасности.

Благодаря этой сводке тестировщики узнают самые частые угрозы. Проверяя их, можно обеспечить лучшее качество ПО. Что из себя представляет OWASP Top-10 – рассказываем в нашей статье.

1. SQL-инъекции (SQL Injections)

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

Тестировать можно проверкой введения символов, характерных для SQL-команд. Более подробно про SQL-команд можно прочитать в статье на нашем сайте.

2. Нарушенная аутентификация (Broken Authentication)

Плохо настроенная аутентификация при входе в приложение – это тоже дефект ПО. Злоумышленник может попытаться угадать пару логин/пароль (в т.ч. перебором с помощью специальной программы), чтобы войти в аккаунт и затем похитить данные (или получить контроль над какими-либо действиями.).

Тестировать можно через проверку слабых паролей (Password, Admin и 10 000 других самых плохих логинов/паролей) и установление ограничений на количество и время авторизаций в системе.

3. Незащищенность критичных данных (Sensitive Data Exposure)

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

Тестировать можно с помощью проверки того, что все критичные данные зашифрованы.

4. Внешние объекты XML (XXE) (XML External Entities (XXE))

Если приложение готово обрабатывать данные из внешнего XML-объекта и при этом не проверяет их, то злоумышленник может воспользоваться этим и передать вредоносное содержимое в виде XML-документа. Чтобы избежать такой ошибки, разработчики должны реализовать положительную проверку входных данных («белый список»). Поэтому здесь можно тестировать путем ввода данных вне белого списка.

5. Нарушение контроля доступа (Broken Access control)

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

Тестировать можно путем входа в систему под учетками с разным уровнем доступа.

6. Небезопасная конфигурация (Security misconfigurations)

В некоторых приложениях, созданных на основе типового ПО, разработчики иногда забывают убрать значения по умолчанию. Этим может воспользоваться злоумышленник, подсмотрев важную информацию. С помощью перебора («грубой силы») он может сгенерировать данные для доступа.

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

7. Межсайтовый скриптинг (XSS) (Cross Site Scripting (XSS))

Межсайтовый скриптинг (XSS) — это внедрение злоумышленником вредоносного кода в выдаваемую веб-системой страницу вредоносного кода, который затем будет выполнен на устройстве клиента. Например, он может собрать данные или заставить загрузить зараженный HTML и выполнить команды JavaScript в браузере жертвы.

Тестировать можно через анализ API.

8. Небезопасная десериализация (Insecure Deserialization)

Сериализация — это процесс преобразования объектов в байтовые строки. Десереализация, соответственно, — это преобразование байтовых строк обратно в объекты. Злоумышленник может попытаться вклинить в байтовые строк вредоносную вставку, чтобы заразить объект и/или получить права администратора.

Лучший способ предотвратить – своевременно обновлять ПО.

9. Использование компонентов с известными уязвимостями (Using Components with known vulnerabilities)

Приложение может продолжать использовать ПО, которое уже не поддерживается или устарело. Например, системы управления базами данных, стороннее приложение, API, библиотеки и т.п. У них, в свою очередь, могут быть неустраненные уязвимости, которыми могут воспользоваться злоумышленники.

Поэтому нужно проверять, что ПО опирается на последние версии других операционных систем, сторонних приложений и т.д.

10. Неэффективный учет и мониторинг (Insufficient logging and monitoring)

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

Тестировщик здесь может помочь проведением регрессионных тестов, чтобы еще раз проверить безопасность.

Резюме

Сообщество OWASP регулярно составляет ТОП-10 главных угроз в безопасности ПО. QA-специалисту следует иметь их в виду, когда он занимается тестированием безопасности.

на изображение автор Михаил Кулешов

Автор Михаил Кулешов

Михаил, профессиональный партнерский маркетолог, является основателем компании South Media OÜ, которая была создана в 2018 году и базируется в Таллинне. С 2016 года Михаил уехал из Финляндии и жил как настоящий «цифровой кочевник» в IT-индустрии, путешествуя по миру только с ноутбуком. Михаил работает и пишет статьи, связанные с IT-индустрией.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *