Платформа CodeScoring представила проверку достижимости уязвимостей в сторонних компонентах
Вместе с другими инструментами фильтрации в платформе новая функция призвана на порядок сократить временные затраты на разбор уязвимостей
В платформе CodeScoring появился анализ достижимости уязвимостей с учетом транзитивных зависимостей. Эта функция показывает реальную
эксплуатируемость обнаруженных уязвимостей, т. е. помогает определить, можно ли на самом деле использовать найденные в коде уязвимости через существующие вызовы.
Используемые в разработке Open Source библиотеки могут привносить десятки и сотни известных уязвимостей, которые могут быть эксплуатированы злоумышленниками. Анализ всех уязвимостей подряд трудозатратен, поэтому важно ранжировать обнаруженные проблемы по степени риска, в том числе благодаря анализу достижимости. Такой подход помогает сосредоточиться в первую очередь на реальных угрозах, приоритизировать исправления и на порядок сократить потенциальные затраты на разбор находок.
Композиционный анализ с достижимостью уже можно провести в проектах на языках Java, Go и Python, идет работа над добавлением в модуль CodeScoring.SCA анализа проектов на других популярных языках программирования: JavaScript, C#, PHP и Kotlin.
Как это работает
Команда CodeScoring в сотрудничестве со специалистами научно-технического центра «Фобос-НТ» и кафедры ИУ10 «Защита информации» МГТУ им. Н. Э. Баумана изучила открытые репозитории с исходным кодом проектов на Java, Python, JavaScript, Go, Kotlin, C#, PHP, выделила характерные для каждой уязвимости вызовы и собрала собственную базу знаний, которая регулярно пополняется. Такая разметка уязвимых методов позволяет достигать высокой точности анализа достижимости и снижать количество ложноположительных срабатываний. Сейчас в базе размечено более 10 000 известных уязвимостей.
Технологическая основа проекта — построение графа вызовов с использованием технологий анализа Института системного программирования им. В. П. Иванникова Российской академии наук (ИСП РАН).
Арутюн Аветисян, академик РАН, директор ИСП РАН: «Граф вызовов программы выявляет связи ее методов между собой. Точное построение такого графа — нетривиальная задача, которая требует глубокого анализа кода на основе фундаментальных научных технологий. В их число входят анализы указателей и виртуальных методов, широко использующихся в современных языках программирования. А для компилируемых языков необходима технология перехвата сборки. Все эти методы анализа мы развиваем в рамках статического анализатора Svace, поэтому наши специалисты смогли в сжатые сроки доработать их и выделить как отдельный компонент для использования в CodeScoring.SCA. Мы рады, что с выходом этой совместной технологии наше сотрудничество с давними друзьями из CodeScoring вышло на новый уровень».
Дмитрий Пономарев, заместитель генерального директора, директор департамента РБПО НТЦ «Фобос-НТ»: «В работе испытательной лаборатории мы используем инструмент статического анализа Svace с 2019 года и инструмент композиционного анализа CodeScoring с 2023 года. Совместная работа этих движков — на наш взгляд, лучших инструментов в своем классе на отечественном рынке — долгожданное событие, поскольку в ряде случаев поможет существенно сократить сложность доказательного процесса в части эксплуатируемости или неэксплуатируемости известных уязвимостей компонентов в составе программных продуктов».
Алгоритм работает следующим образом: сначала на основе исходного кода проекта строится граф вызовов функций проекта, далее происходит сверка с базой знаний. Для каждой известной уязвимости система знает характерные шаблоны эксплуатации — то, как ее могут использовать в реальных атаках. По итогам анализа пользователь получает информацию по найденным достижимым уязвимостям с цепочками вызовов для каждой.
Максим Щедрин, начальник управления тестирования безопасности «Т1 Иннотех»: «В ходе пилотных испытаний новой функции анализа достижимости уязвимостей сотрудниками Т1 Иннотех была проведена оценка её эффективности. Ключевой фактор в данном случае – точность результатов. Для подтверждения точности была проведена ручная проверка, в ходе которой удалось установить, что заявленная функция корректно идентифицирует как достижимые, так и недостижимые уязвимости, обеспечивая высокую достоверность результатов.
Можно с уверенностью утверждать, что автоматизированный анализ отражает реальное положение дел и может служить основой для принятия решений по устранению уязвимостей. Функция проверки достижимости уязвимостей позволяет не только автоматизировать приоритизацию уязвимостей с учетом фактической достижимости, но и значительно сократить объем ручного анализа, что актуально в условиях нехватки ресурсов. Это делает функцию ценным инструментом повышения эффективности и точности работы по обеспечению безопасности программных продуктов».
Анализ достижимости доступен в модуле CodeScoring.SCA с версии 2025.37.0. Результаты анализа отображаются в интерфейсе платформы и отчетах, удобных для выгрузки. Новая функция призвана повысить эффективность работы DevSecOps-команд и снизить нагрузку на команды безопасности.
Некоторые уязвимости могут быть актуальными и без достижимых вызовов, поэтому все выявленные угрозы стоит верифицировать и устранять в соответствии со степенью их критичности.
Алексей Смирнов, основатель платформы безопасной разработки CodeScoring: «Знать все сторонние компоненты и их риски в вашем продукте сегодня недостаточно. Этим знанием важно эффективно управлять для построения качественного процесса безопасной разработки. Выявленная достижимость известной уязвимости — повышенный риск для продукта, т. к. информация о методах эксплуатации с большой вероятностью уже находится в публичном доступе и ей может воспользоваться каждый. Реализация такого вида анализа — наукоёмкая и кропотливая задача, решение которой стало возможным благодаря нашим технологическим партнерам».
