Статьи по информационной безопасности

Flexible SCA – это про переиспользование кода

Written by Дарья Орешкина | 23/12/21

По данным аналитиков Forrester [1], доля компонентов с открытым кодом (Open Source Software) в кодовой базе программных продуктов в 2020 г. составляла в среднем 75%, другие эксперты дают более смелые оценки – до 90%. Стремительно нарастающий объем мирового Open Source вовлекает все новых игроков не только из коммерческого сектора, но и из государственного: переиспользование кода и включение отечественных разработок Open Source в международные проекты стратегически важны на государственном уровне.

Автор: Дарья Орешкина, директор по развитию бизнеса компании Web Control

Open Source обладает особыми характеристиками. Во-первых, порядок использования каждого компонента регулируется лицензией, под которой он выпускается. Несоблюдение условий и включение в проект Open Source с неприемлемыми лицензиями могут привести к юридическим проблемам, вплоть до невозможности распоряжаться собственным продуктом. Во-вторых, сообщества разработчиков и исследователей безопасности постоянно обнаруживают уязвимости в компонентах и выкладывают в открытый доступ. В-третьих, некорректное включение открытого кода в проект или же, наоборот, публикация корпоративных наработок в Open Source без согласования с юридическим отделом несет в себе целую группу рисков как в правовом поле, так и в техническом.

Тем не менее переиспользование кода – де-факто мейнстрим для разработки ПО как для коммерческих, так и для госкомпаний. Выбирать и включать в проекты подходящие компоненты помогают качественные инструменты класса Software Composition Analysis (SCA), при этом наиболее глубоко анализировать переиспользование могут SCA с функцией поиска и анализа дубликатов.

Наверное, многие слышали про такие решения для композиционного анализа на российском рынке, как Checkmarx, JFrog, Snyk, Sonatype, Synopsys, Veracode, WhiteSource, а в начале 2021 г. этот список пополнился отечественным решением CodeScoring, которое расширяет функциональность SCA с анализа Open Source до анализа и контроля всех видов переиспользования кода, включая проприетарный код. CodeScoring использует алгоритмы машинного обучения, обработки искусственных и естественных языков для углубленного анализа переиспользования кода и контроля авторства, то есть идентификации непосредственно того разработчика, который включил код в проект.

Для корпоративного фонда алгоритмов и программ CodeScoring незаменим ввиду расширенного функционала контроля авторства, обнаружения дубликатов и заимствований, определения направления копирования. За счет этих функций проще понять, кто может эффективнее дорабатывать проект и устранять дефекты, прогнозировать объемы требуемых исправлений, контролировать юридическую чистоту.

Петербургская команда Profiscope уже много лет специализируется на услугах в области технического аудита программных продуктов, который критически необходим при масштабировании продуктов и в процессе слияний и поглощений. Для автоматизации такого аудита в части лицензионного комплаенса, поиска и анализа дубликатов кода, анализа качества и авторства был создан специализированный тулкит. В его основе – лингвистические модели, методики оценки качества ПО и специализированные модели машинного обучения, обеспечивающие высокий уровень точности проводимого анализа. Задуманный как инструмент для внутреннего пользования, тулкит обрастал полезными функциями:

  • идентификацией известных уязвимостей в Open Source;
  • пользовательским интерфейсом;
  • интерфейсами для связи с внешними базами и многими другими.

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

Продукт получил название CodeScoring и в начале 2021 г. был представлен на рынке как самостоятельное решение. Продукт позиционируется как Flexible SCA, работает не только с Open Source, но и с проприетарным кодом и позволяет проводить ретроспективный анализ с анализом истории появления проблем.

CodeScoring – это комплексное решение для классификации корпоративного фонда алгоритмов и программ, которое в дополнение к традиционному SCA-функционалу для ИБ и юристов покрывает вопросы качества кода и приносит ценность на всем цикле разработки ПО, от контроля собственной или подрядной разработки до сопровождения.

CodeScoring разбирает код на открытый и проприетарный, обнаруживает заимствования как открытого, так и собственного кода (утечка интеллектуальной собственности в другие проекты или дубликаты внутри одного проекта). Для открытого кода формируется список Software Bill of Materials (SBoM), включающий информацию по известным уязвимостям и лицензионным соглашениям используемого Open Source, отслеживает соблюдение лицензионной политики компании и выявляет несовместимые лицензии. CodeScoring определяет не только факт, но и направление заимствований. Кроме кода система анализирует авторский состав и профилирует техническую экспертизу исполнителей, что помогает в подборе специалистов с нужными техническими навыками на основе подтвержденной компетенции в проект.

Рассмотрим, что получают от использования CodeScoring различные участники процесса разработки.

Сопровождение реестра алгоритмов и программ

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

CodeScoring для приемки кода от внешних подрядчиков

Привлечение внешних подрядчиков может принести в проект не только экспертизу, но и ряд проблем, связанных с юридической и информационной безопасностью. И вопрос не только в используемых лицензиях и уязвимостях, особого внимания при приемке требует оценка цикломатической сложности – количество вложенных ветвлений и циклов. От этой характеристики напрямую зависит трудоемкость поддержки или даже наличие принципиальной возможности доработки и исправлений. Исследования показывают, что если цикломатическая сложность приближается к 50, то вероятность внесения ошибки в программный код при его изменении стремится к единице. А это значит, что если этот код важен с точки зрения работы с данными, сетью, то его можно считать неподдерживаемым.

Проекты от подрядчиков зачастую представляют из себя черный ящик, и CodeScoring помогает разобраться с ним и "просветить" его.

Безопасная разработка

CodeScoring идентифицирует лицензионные нарушения и заимствования кода, предупреждает об известных уязвимостях в используемых Open Source компонентах с учетом транзитивных зависимостей (когда зависимые компоненты, в свою очередь, зависят от других компонентов).

В дополнение к этому решение анализирует работу команд, показывает, кто приносит наибольшую пользу при развитии проекта, кто и какие артефакты вносит в проект (для поиска исполнителей при дальнейших работах с ними), оценивает основные критерии технического долга, помогает определить трудоемкость устранения дефектов и близость рефакторинга продукта.

Обеспечение юридической чистоты

Еще несколько лет назад вопросы юридической чистоты в разработке ограничивались в основном договорной работой с подрядчиками. Однако в последние три года кроме судебных тяжб за закрытыми дверями появились и громкие судебные дела, связанные с авторскими правами: "Лаборатория Касперского" против "Киберсекьюрити Солюшнс", иск разработчика к Veeam Software AG, иск Рамблера к Nginx. При этом суды часто встают на сторону авторов изобретений. Важно понимать, насколько ваш продукт принадлежит вам. CodeScoring может в этом значительно помочь. Решение обнаруживает заимствования и направление копирования, кто у кого скопировал код. И конечно же, будучи SCA-решением, CodeScoring автоматически распознает используемые в проекте Open Source лицензии, их совместимость и пригодность для применения в коммерческом продукте.

CodeScoring для HR

HR-подразделения в ИТ-компаниях выполняют огромный объем работ в самых разных областях, куда входит и рекрутинг (внешний и внутренний), и мотивация, и трудовое право, и развитие персонала, и эффективность работы команд, при этом инструментов на рынке для них не так много, как, скажем, для разработчиков.

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

Заключение

Переиспользование кода – стратегически важная задача для коммерческих и государственных предприятий. Учет и адекватная информация об имеющихся кодах и артефактах дает возможность взрывного роста скорости безопасной и эффективной разработки информационных систем. Недостаточно просто присвоить классификационный номер исходникам проекта, необходимо четко понимать, где какой код переиспользован и в какой степени. Вручную это отследить невозможно ввиду огромных размеров кодовой базы даже на небольшом предприятии. CodeScoring – это ядро классификатора кодов в фонде алгоритмов и программ со всеми сопутствующими функциями SCA.

  1. Отчет The Forrester WaveTM: Software Composition Analysis, Q3 2021, https://www.forrester.com/report/the-forrester-wave-tmsoftware-composition-analysis-q3-2021/RES176091