Тестирование на проникновение "белый ящик": Сущность, значение, методы

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

\r\n\r\n

В отличие от тестирования "черного" или "серого" ящика, тестирование "белого" ящика подразумевает предоставление тестировщику (этичному хакеру) полных данных о сети и системе, что позволяет ему проникнуть глубже и найти скрытые недостатки безопасности. Тестирование на проникновение "белого ящика" обычно используется для изучения основных компонентов системы, особенно в компаниях, разрабатывающих собственные продукты или интегрирующих несколько приложений.

\r\n\r\n

Преимущества тестирования на проникновение "белого ящика" <\/h2>\r\n\r\n
    \r\n\t
  • Наиболее полный анализ внутренних и внешних уязвимостей с внутренней точки зрения, что недоступно типичным злоумышленникам.<\/li>\r\n\t
  • Возможность выявления потенциальных слабых мест в областях, недоступных для тестирования "черного ящика", например, в исходном коде, дизайне и бизнес-логике приложения.<\/li>\r\n\t
  • Доступность на ранних стадиях разработки, когда еще нет пользовательского интерфейса, что не актуально при других видах тестирования на проникновение.<\/li>\r\n\t
  • Простота автоматизации тестовых случаев, что позволяет сократить время и стоимость тестирования на проникновение.<\/li>\r\n<\/ul>\r\n\r\n

    Методы и критерии тестирования на проникновение "белого ящика"<\/h2>\r\n\r\n

    Когда речь идет о тестировании безопасности программного обеспечения, тестирование на проникновение в "белый ящик" подразумевает проверку исходного кода с целью обнаружения брешей, которые могут сделать приложение уязвимым для угроз кибербезопасности. Основные аспекты, подлежащие проверке, включают:<\/p>\r\n\r\n

    Покрытие ветвей<\/strong>
    \r\nВетвь - это один из многих путей выполнения, по которым может двигаться код после обработки оператора принятия решения, например оператора if. Покрытие ветвей проверяется на предмет того, все ли ветви в кодовой базе отрабатываются тестами и ни одна из ветвей не приводит к аномальному поведению приложения.<\/p>\r\n\r\n

    Покрытие пути<\/strong>
    \r\nПуть - это поток выполнения, который следует за набором инструкций. Покрытие пути рассматривает все возможные пути программы и гарантирует, что каждый путь будет пройден хотя бы один раз. Покрытие путей гораздо мощнее, чем покрытие ветвей, и полезно для тестирования сложных сборок.<\/p>\r\n\r\n

    Покрытие утверждений<\/strong>
    \r\nПокрытие утверждений оценивает, выполняется ли каждая строка кода хотя бы один раз, и помогает найти ненужные или отсутствующие строки.<\/p>\r\n\r\n

    \"\"<\/p>\r\n\r\n

    Помимо трех вышеперечисленных показателей, тестирование на проникновение "белого ящика" может опираться на следующие критерии:<\/p>\r\n\r\n

      \r\n\t
    • Тестирование потока управления<\/li>\r\n\t
    • Тестирование потока данных<\/li>\r\n\t
    • Покрытие решений<\/li>\r\n\t
    • Покрытие условий<\/li>\r\n\t
    • Покрытие модифицированных условий\/решений<\/li>\r\n\t
    • Покрытие конечных автоматов<\/li>\r\n<\/ul>\r\n\r\n

      Этапы проведения тестирования "белого ящика" <\/h2>\r\n\r\n

      Примерный процесс тестирования программного обеспечения на проникновение "белого ящика" может выглядеть следующим образом:<\/p>\r\n\r\n

        \r\n\t
      • Обзор исходного кода.<\/strong> Первый шаг предполагает понимание внутренней функциональности целевого приложения. На этом этапе инженер по тестированию изучает исходный код целевого ПО, чтобы заложить основу для создания целевых тестовых примеров, которые помогут выявить недостатки в системе безопасности.<\/li>\r\n\t
      • Создание и выполнение тестов. <\/strong>Инженер-тестировщик создает тестовые случаи и выполняет их для поиска уязвимостей в исходном коде программного обеспечения. Тестирование приложений может быть как ручным, так и автоматизированным.<\/li>\r\n\t
      • Формирование отчета.<\/strong> В заключение тестировщик создает отчет со всеми использованными шагами и стратегиями и передает результаты всего процесса тестирования заказчику.<\/li>\r\n<\/ul>\r\n