По результатам одного из опросов представителей различных российских компаний-разработчиков, проведенного в апреле 2021 года, около 32% из них используют в работе анализаторы безопасности исходного кода (SAST, DAST, IAST, SCA). Еще 24% респондентов высказались о заинтересованности этими инструментами и готовности тестировать их. При этом 69% опрошенных в первую очередь обращают внимание на тестирование методом белого ящика (SAST).
Что такое SAST
Статический анализ (или тестирование) как метод проверки безопасности ПО существует уже более 10 лет. Его суть – проверка исходного кода приложения для выявления вероятных источников уязвимостей.
Проводить анализ можно вручную или с помощью инструментов для автоматизации этого процесса. Ручной способ используется довольно редко, так как он требует немалых временных затрат.
Статический анализатор кода Java, Python или другого языка программирования проверяет синтаксис текста программы (приложения). Поиск проблемных мест ведется на основе набора правил и шаблонов. Фрагменты кода сравниваются с ними, на основании чего и делаются выводы о наличии уязвимостей и других проблем в программе. SAST-инструменты могут анализировать исходный код, а Solar appScreener – и его скомпилированные формы (используются технологии декомпиляции и деобфускации).
Возможности по использованию статического анализа кода
Одна из ключевых особенностей SAST – возможность проведения статического анализа без запуска приложения, вследствие чего инструменты для тестирования можно использовать на протяжении всего жизненного цикла программы. Это обеспечивается благодаря тому, что современные статические анализаторы (и Solar appScreener, в частности) могут интегрироваться со средствами, применяющимися на разных этапах. Среди них:
-
Git и другие системы контроля версий.
-
Редакторы, IDE и прочие инструменты создания кода. AppScreener, например, интегрируется с Eclipse, Xcode, Microsoft Visual Studio. Благодаря этому можно организовать проверку практически в режиме real time при его написании.
-
Инструменты автоматизации разработки, сборки и развертывания приложений, такие как Jenkins, TeamCity, Azure DevOps Server.
-
Средства отслеживания проектов/задач (Jira и аналоги, с учетом применяемых в компаниях практик).
Кроме того, у этого метода есть еще ряд сильных сторон.
Практически 100-процентное покрытие кода
Современный статический анализатор кода Java, Python или другого языка программирования сканирует весь исходный код (а не только выполняемый, как это происходит при использовании DAST). Но такие средства работают не только непосредственно с исходными файлами приложения. Они могут анализировать подключаемые файлы, библиотеки, компоненты, на которые ссылаются из исходного кода проверяемой программы.
Высокая скорость, нетребовательность к ресурсам
Для проведения статического анализа не нужно разворачивать отдельные среды под тестирование. Нет необходимости в использовании копии программы под эти цели. К тому же проверка выполняется довольно быстро. Современные SAST-анализаторы проверяют по несколько тысяч строк в секунду. По этому показателю со статическим не сравнится ни один из методов. При их использовании результаты проверки отображаются практически в режиме реального времени.
Обнаружение практически всех распространенных уязвимостей
В частности, метод статического анализа эффективно обнаруживает уязвимости из OWASP Top10, такие как:
-
Закладки.
-
Инъекции (SQL, кода или команд операционной системы).
-
Уязвимости, которые могут привести к утечкам информации.
-
Инъекции XSS и JS, связанные с модификацией отображаемого контента.
-
Обход каталога.
-
Парсинг внешнего XML.
Другие уязвимости и проблемы, характерные для различных языков программирования и технологий, с большой долей вероятности также обнаруживаются с помощью этого метода.
Решение других задач, помимо поиска уязвимостей в программах
С помощью инструментов статического анализа многие оценивают качество кода, создаваемого разработчиками. Эксперты отмечают возможность применения SAST в процессе тестирования качества и архитектуры приложений, что также оказывает влияние на уровень защищенности ПО.
Возможность анализа результатов без опыта в разработке
Инструменты автоматизации статического анализа могут быть использованы специалистами службы информационной безопасности. Результаты проверок, осуществляемых Solar appScreener, в частности, предоставляются в простом и удобном для восприятия виде. Для работы с ними не нужно знать программирование.
Универсальность
С помощью Solar appScreener и аналогичных по функционалу инструментов можно проводить статический анализ Python, Java, C# и других языков. Это позволяет держать под контролем все приложения, разрабатываемые/используемые в компании. И делает удобным применение в процессе разработки ПО инструментов, основанных на использовании микросервисов, создающихся на разных ЯП.
Есть ли слабые стороны?
Основная слабая сторона статического анализа кода, которую отмечают чаще всего, – большое количество ложноположительных срабатываний. Из-за необходимости их обработки время на проверку безопасности приложений может значительно увеличиваться.
Разработчики активно борются с этим. «Учат» SAST-инструменты «понимать» контекст возможной уязвимости и «учитывать» структуру программы, реализуют возможность добавления пользователями своих шаблонов и так далее. В Solar appScreener для этого реализована собственная технология Fuzzy Logic Engine.
Конечно, говорить о гарантированном обнаружении всех уязвимостей в исходном коде с помощью статического анализа кода нельзя. Полностью отказываться в его пользу от других методик не стоит. Если есть возможность, лучший вариант – их комбинирование, чтобы слабые стороны одних перекрывались сильными других.