Область и определения

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

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

Методология и техники

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

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

Цели и ожидаемые результаты

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

Пентестинг целью ставит не просто выявление отдельных уязвимостей, а демонстрацию цепочки атак, которые могут быть скомбинированы для достижения определённого результата, такого как компрометация системы или кража данных. Отчет о пентесте часто включает proof-of-concept, который показывает, как несколько меньших проблем в совокупности создают серьёзную угрозу.

Сроки и частота проведения

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

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

Объём и глубина проверки

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

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

Авторизация и границы

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

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

Требуемые навыки и подготовка

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

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

Источники

PENTEST.RED / RED JOURNAL