Контакты
Подписка 2024

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

Дарья Орешкина, 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 
Темы:Безопасная разработкаЖурнал "Информационная безопасность" №5, 2021SCACodeScoring

Инструменты и решения для защиты информации и предотвращения кибератак
Конференция | 2 апреля 2024

Жми для участия
Обзоры. Спец.проекты. Исследования
Участвуйте в обзорах / исследованиях проекта "Информационная безопасность"!
Станьте автором журнала!
Статьи по той же темеСтатьи по той же теме

Хотите участвовать?

Выберите вариант!

КАЛЕНДАРЬ МЕРОПРИЯТИЙ 2024
ПОСЕТИТЬ МЕРОПРИЯТИЯ
ВЫСТУПИТЬ НА КОНФЕРЕНЦИЯХ
СТАТЬ АВТОРОМ
Персональные данные
4 апреля. Персональные данные в 2024 году: регулирование, практика, тенденции
Участвуйте!

More...
Обзоры. Исследования. Спец.проекты
Обзоры и исследования проекта "Информационная безопасность"
Жми, чтобы участвовать