Организации начали наращивать объемы тестирования безопасности ПО. Портал ITPro Today рассказывает о типах инструментов, представленных на рынке, и о том, как выбрать правильный инструмент.

Атаки на цепочки поставок, инъекционные атаки, атаки с подделкой запросов на стороне сервера (SSRF) — все эти и другие угрозы используют уязвимости ПО. Уязвимости могут варьироваться от неправильной конфигурации до ошибочного дизайна и нарушения целостности. По данным Forrester Research, наиболее распространенным вектором атак являются приложения, причем 35% атак используют те или иные уязвимости ПО.

За последние несколько лет внимание к безопасности ПО, а также распространение инструментов ее тестирования возросло, отчасти благодаря атакам на цепочки поставок, таким как Stuxnet и SolarWinds. А поскольку организации расширяют свое присутствие в Интернете, риск становится больше, чем когда-либо. Наконец, переход к DevSecOps побуждает все больше организаций включать тестирование безопасности на этапе разработки ПО.

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

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

«Всегда лучше предотвратить проблемы, чем обнаружить их в производстве, поэтому тестирование безопасности с самого начала имеет большой смысл», — говорит Джанет Уортингтон, старший аналитик Forrester по безопасности и рискам.

Горы инструментов

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

Инструменты SAST также могут помочь выявить уязвимости SSRF (причем до того, как они попадут в производство), когда злоумышленники могут заставить серверы отправлять поддельные HTTP-запросы на сторонние системы или устройства.

Еще одним важным способом тестирования является анализ состава ПО. Такие инструменты помогают полностью блокировать попадание вредоносных компонентов в конвейер. Они ищут известные уязвимости во всех компонентах, в том числе в Open Source- и сторонних библиотеках. Росту популярности этого типа инструментов способствовали уязвимости, подобные Log4J. По данным Forrester, сегодня их используют 46% разработчиков.

К другим важным типам инструментов тестирования безопасности ПО относятся:

  • Сканирование уязвимостей. Хотя эти инструменты направлены на поиск уязвимостей приложений в целом, существуют также специализированные версии для поиска слабых мест в веб-приложениях. Они особенно полезны для поиска таких угроз, как инъекции SQL, обход путей, небезопасная конфигурация сервера, инъекции команд и межсайтовый скриптинг.
  • Динамическое тестирование безопасности приложений (DAST). Этот тип тестирования использует подход «черного ящика», имитируя атаки на runtime-версию приложения. DAST обычно проводится во время интеграции или сквозного автоматизированного тестирования. По данным Forrester, 44% команд разработчиков планируют использовать DAST перед выпуском ПО.
  • Тестирование API. Интерфейсы прикладного программирования сегодня повсюду. Хотя API не всегда являются предметом первостепенного внимания, они не застрахованы от угроз безопасности. Gartner считает, что неуправляемые и незащищенные API создают множество уязвимостей, справиться с которыми можно только с помощью тестирования безопасности API и контроля доступа к API.
  • Интерактивное тестирование безопасности приложений (IAST). Этот метод тестирует ПО на наличие уязвимостей во время выполнения, используя сенсорные модули для мониторинга поведения ПО на этапе тестирования. Если IAST обнаруживает проблему, такую как SQL-инъекция или межсайтовая скриптовая инъекция, он посылает предупреждение. Поскольку IAST является более новым видом тестирования, его часто проводят команды, которые уже выполняют статическое и динамическое тестирование. Как правило, он имеет более низкий процент ложных срабатываний, чем другие виды тестирования.
  • Тестирование на проникновение. Также известное как этичный взлом, пен-тестирование включает в себя тестирование приложений на уязвимость и восприимчивость к угрозам, обычно проводимое внешней стороной. Пен-тесты могут выявить множество вещей, от ошибок в ПО и конфигурации до атак на цепочки поставок.

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

«Если вы хотите быть максимально скрупулезными, вам необходимо провести тестирование SAST для полного охвата, DAST для компонентов с открытым исходным кодом и другие виды тестирования для мобильных и веб-приложений, в зависимости от того, над чем вы работаете, — говорит Рэй Келли из компании Synopsys. — Речь идет о том, чтобы найти правильные инструменты для конкретной ситуации».

Как выбрать правильные инструменты

Недостатка в инструментах нет, и можно запутаться в выборе вариантов. В целом, существуют Open Source-инструменты, лучшие в своем классе инструменты от поставщиков и проприетарные платформы для тестирования ПО.

Инструменты с открытым исходным кодом, как правило, очень тактические по своей природе, сфокусированные на чем-то одном. В качестве примера можно привести бесплатный сканер безопасности веб-приложений OWASP ZAP, бесплатное средство проверки качества кода и уязвимостей Snyk, SQLmap или Metasploit для тестирования на проникновение, SonarQube для обеспечения безопасности кода, FOSSA для тестирования Open Source-зависимостей.

Конечно, существует множество лучших в своем роде инструментов, доступных за плату от различных производителей.

Кроме того, существуют проприетарные платформы тестирования ПО, такие как HCL AppScan и HP Fortify, а также платформы от таких производителей, как Veracode, Checkmarx, Synopsys, Palo Alto Networks и Aqua Security.

В большинстве случаев организациям лучше всего сочетать различные типы инструментов из разных источников, говорит Аарон Тернер, вице-президент компании Vectra AI: «Если вы объедините платформу для тестирования ПО с лучшими инструментами тестирования, как с открытым исходным кодом, так и проприетарные, вы можете быть уверены, что попадете во все точки, потому что не существует одной платформы, которая может делать все».

Если бюджет является проблемой, Уортингтон рекомендует начать с бесплатной версии инструмента тестирования, которые сейчас предлагают многие поставщики. Например, компания Snyk, известная своим инструментом анализа состава ПО, имеет бесплатную Open Source-версию. После того, как инструмент доказал свою ценность, организация может решить, стоит ли платить за полнофункциональную версию.

Советы экспертов

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

И прежде чем выбрать какой-либо инструмент или методику тестирования, убедитесь, что вы учитываете относительную важность ПО в вашей среде. «Если вы являетесь оператором газопровода и полагаетесь на определенную часть ПО для поддержания его работы, вы, вероятно, потратите гораздо больше времени и усилий на тестирование этой части ПО для управления промышленным объектом, чем на тестирование Wordpress, на котором работает ваш веб-сайт», — говорит Тернер.