На платформе CodeScoring реализована функция анализа достижимости уязвимостей с учетом транзитивных зависимостей. Эта функция определяет, можно ли фактически использовать обнаруженные в коде уязвимости через существующие вызовы в проекте.

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