Новых программных продуктов с каждым годом становится больше. Параллельно усложняются старые – каждая следующая версия несет в себе тонны дополнительного кода.
При этом в разработке часто на первый план выходит функциональность, а безопасность остается в стороне. В итоге приложения – как новые, так и старые – релизятся с уязвимостями в коде. Их молниеносно находят и используют киберпреступники.
Выявлять уязвимости на этапе разработки помогают статические анализаторы кода. Многие DevSecOps-специалисты используют бесплатные варианты. Какие плюсы и минусы они в себе таят, рассказываем в этой статье.
Статический анализ (Static Application Security Testing, SAST) – один из вариантов проверки исходного кода ПО. Обычно его используют, чтобы найти самые популярные ошибки и уязвимости на ранних этапах разработки.
Проводить такую проверку можно вручную, но гораздо проще и быстрее задачу выполняют автоматизированные SAST-инструменты. Они сканируют синтаксис кода и сравнивают его с набором шаблонов и правил, которые помогают обнаружить уязвимости и другие проблемы в коде.
Сергей Полунин
Руководитель группы защиты инфраструктурных ИТ компании «Газинформсервис»
Анализ кода – это довольно обширная область ИБ. Но я бы выделил два основных сценария использования SAST. Во-первых, это аудит кода, когда специалист анализирует разрабатываемое программное обеспечение и инструменты берут на себя какие-то рутинные задачи.
Второй сценарий – встраивание SAST в пайплайн CI/CD, когда на определенном этапе сборки проекта производится анализ кода. При наличии серьезных проблем, сборка может останавливаться.
Весь процесс проверки проходит за секунды. Статический анализатор кода получает написанный разработчиком код, исследует его и выдает отчет с ошибками и уязвимостями. В последние годы в такие решения также включают рекомендации, которые помогают исправлять выявленные недочеты.
Автоматизация не только ускоряет процесс статического анализа, но и гарантирует, что код будет полностью покрыт проверками. Благодаря таким инструментам разработчики минимизируют риски и возможные финансовые, репутационные потери компании до того, как их продукт появится на рынке.
Когда компании задумываются о решении для SAST, то чаще всего вспоминают Fortify и других платные варианты. Хотя для небольших компаний стоимость коммерческого статического анализатора кода часто бывает неподъемной. И тогда специалист по ИБ или DevSecOps начинает поиски достойной замены среди opensourse-продуктов.
Портал Cyber Media попросил экспертов рассказать, какие бесплатные SAST-инструменты они используют в работе. В топ-список, по их версии, вошли Semgrep, CodeQL, Weggli, Pylint, ESLint, SonarLint, DeepCode и LGTM. Рассмотрим их подробнее.
Разработчик – r2c. Semgrep считается одним из самых скоростных инструментов для статического анализа кода. Высоко ценится ИБ-специалистами. Во всяком случае они оставляют много положительных отзывов в интернете.
Инструмент презентовали в компании Semmle в 2018 году. Сейчас он входит в линейку продуктов Microsoft. Одно из преимуществ – постоянно пополняемый список уязвимостей, которые CodeQL обнаруживает в коде. Еще плюс – популярность продукта, благодаря чему в Сети можно найти множество инструкций и обсуждений.
Исследует код на C/C++. Чтобы провести статический анализ с его помощью, собирать проект необязательно. Из преимуществ – высокая скорость поиска. Но есть и минус – информации и кейсов использования Weggli для задач ИБ в интернете пока мало.
Инструмент для статического анализа кода на Python. Его актуальность связана с популярностью языка программирования. Pylint проверяет код на соответствие стандартам PEP 8 (Python Enhancement Proposal 8) и другим рекомендациям, которые касаются разработки на Python.
Анализирует код на JavaScript. Обнаруживает и даже помогает исправлять синтаксические ошибки, неиспользуемые переменные, неправильное использование функций и другие нарушения стиля и безопасности разработки.
Поддерживает статический анализ кода на различных языках программирования, что делает его универсальным решением для проектов с различными технологиями. Обеспечивает всестороннее исследование, которое включает обнаружение ошибок, дублированного кода, нарушений кодового стиля, уязвимостей безопасности и других проблем.
Находит ошибки, уязвимости безопасности, проблемы с производительностью и API на основе ИИ. Поставляется бесплатно для открытых исходных кодов и частных репозиториев, а также для небольших команд – до 30 разработчиков.
Предназначен для статического анализа безопасности кода на языках Java, Python, JavaScript, TypeScript, C #, C и C ++. Находит потенциальные уязвимости, такие как использование небезопасных функций, некорректная обработка ввода пользователя и др.
Статические анализаторы кода обнаруживают уязвимости на ранних этапах. И они делают это быстрее и эффективнее, чем люди. Это главная причина, почему SAST-инструменты нужно применять в разработке ПО, даже если выбор остановился на бесплатных вариантах. Хотя есть и другие аргументы.
Артем Избаенков
Директор по развитию направления кибербезопасности компании EdgeЦентр
Использование статического анализа кода может помочь обеспечить соответствие нормативным требованиям и стандартам безопасности, что особенно важно для организаций, работающих в регулируемых отраслях.
В частности, SAST-инструменты применяют при оценке соответствия продукта, например, по оценочному уровню доверия (ОУД.4) по требованиям ГОСТ Р ИСО/МЭК 15408-3-2013, предусмотренного Положениями Банка России 683-п, 719-п, 757-п.
Глеб Абрамов
Руководитель направления аудита информационной безопасности ITGLOBAL.COM Security
Огромным плюсом бесплатных решений является гибкость. Такие решения могут быть интегрированы с существующими инструментами разработки и сборки, что делает процесс проверки кода удобным и эффективным.
Еще одним важным аспектом является живое и дружелюбное комьюнити у бесплатных решений. Ведь только люди с реальными кейсами могут помочь решить схожие проблемы и возникающие вопросы.
И напоследок, самый очевидный аргумент – на бесплатные анализаторы кода можно не планировать расходы. А это особенно важно, если компания только начинает свой путь в разработке или пересматривает свой бюджет.
Все SAST-инструменты крайне тщательно проверяют весь код исследуемого приложения. У этого плюса есть обратная сторона – высокий процент ложных срабатываний. На их проверку специалисты тратят время, которое могли бы использовать для поиска и устранения реальных уязвимостей.
Артем Избаенков
Директор по развитию направления кибербезопасности компании EdgeЦентр
При этом некоторые типы уязвимостей могут быть сложны для обнаружения статическим анализом кода, особенно если они зависят от контекста выполнения программы или используются продвинутые техники атаки.
Еще одна сложность – инструменты статического анализа кода требуют правильной настройки и обновления, чтобы обеспечивать актуальность и эффективность анализа.
Также, по словам экспертов, статический анализ кода не способен обнаруживать уязвимости, которые проявляются только во время выполнения программы (динамические уязвимости).
Какие анализаторы исходного кода использовать – бесплатные или платные, каждый специалист решает сам. Главное при выборе вариантов – помнить, что только SAST-решений будет точно недостаточно.
Эксперты напоминают, что всегда стоит рассматривать такие инструменты в комплексе с другими методами защиты. Так, чтобы эффективнее обезопасить приложения от потенциальных атак, нужно минимум запустить динамическое тестирование продукта и провести аудит безопасности – заключают собеседники Cyber Media.
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.
Зарегистрироваться