Сканеры исходного кода
Системы и средства анализа исходного кода для выявления проблем безопасности
Описание и назначение
Сканеры исходного кода выявляют ошибки в исходном коде, допущенные при разработке программ, которые могут использоваться злоумышленниками в качестве уязвимостей и взлома информационной системы.
Анализ исходного кода необходим, чтобы выявить возможные уязвимости в программном обеспечении, проверить код приложения на наличие бэкдоров и программных закладок, которые могут в дальнейшем использоваться злоумышленниками для получения несанкционированного доступа в систему. Еще одной причиной анализа исходного кода является необходимость его проверки на наличие ошибок, которые могут привести к сбоям в работе, потере критичных данных или нарушению существующих в организации бизнес-процессов.
Существуют несколько типов сканеров исходного кода, которые делятся в зависимости от того, какие приложения и программы необходимо подвергать анализу:
- Веб-приложения и веб-сервисы. В данном случае анализаторы кода необходимо использовать для снижения рисков эксплуатации уязвимостей на сайтах.
- Встраиваемые модули приложений. Анализаторы кода этого типа предназначены для проверки исходного кода компонентов, встраиваемых в основное программное обеспечение. Это актуально в случае, когда организация заказывает разработку дополнительной функциональности уже используемого приложения, например CRM-систем или SAP.
- Приложений, которые не связаны с бизнес-приложениями и сайтами. Здесь подразумеваются отдельные программные продукты. Такой тип анализаторов подходит для защищенной разработки программ.
Несмотря на подобное разделение, большинство анализаторов относится к смешанному типу, которые могут применяться в различных сферах и предоставляют широкий спектр возможностей.
Сканеры исходного кода кода могут применять два основных механизма, которые могут предоставляться совместно:
- Статический анализ, или SAST (Static Application Security Testing), когда анализ выполняется без запуска программного обеспечения.
- Динамический анализ, или DAST (Dynamic Application Security Testing), когда анализ кода выполняется в процессе его выполнения.
На вход анализатора кода поступает массив данных (исходный код и все зависимые модули), а после проверки средства анализа кода предоставляют подробный отчет о найденных ошибках и уязвимостях. Некоторые анализаторы кода способны самостоятельно исправлять ошибки, но стоит учитывать, что данная функция может работать не совсем корректно. В связи с этим опытным разработчикам необходимо контролировать данный процесс.
Принцип работы любых анализаторов кода связан с базами данных, которые они используют в процессе анализа. Это может быть база уязвимостей, поставляемая разработчиками средств для анализа кода. У них также могут быть собственные базы ошибок, допускаемых при программировании. В различных странах существуют государственные базы данных, которые используют анализаторы кода. Они могут применяться как встроенные средства анализа либо в качестве отдельных механизмов. Наравне с указанными базами существует и третий тип, подразумевающий проверку требований стандартов, рекомендаций и лучших практик.