10 мая, 2018, BIS Journal №2(29)/2018

В защиту open source компонентов


Орешкина Дарья

директор по развитию бизнеса (Web Control)

Снижаем стоимость разработки и ускоряем выпуск

Сегодня сложно представить себе разработку программного обеспечения без Open Source. Компоненты с открытым исходным кодом дают существенные преимущества в скорости выпуска программных продуктов. Разработчики не пишут код с нуля, если он уже опубликован и проверен сообществом. Однако, бесконтрольное применение Open Source влечет за собой повышенные риски безопасности программных проектов, в том числе и юридического характера.

Использование компонентов с открытым кодом сегодня является типовой практикой. Зачем писать код с нуля, если можно найти нужный исходник или библиотеку в публичных репозиториях и зачастую бесплатно? Однако, не так-то просто выбрать подходящий компонент, даже один. А в одном программном проекте их десятки и сотни. Ведь нужно, чтобы компоненты были качественными, без уязвимостей и с подходящими лицензионными требованиями. Без автоматизированных средств такие проверки занимают много времени у специалистов по безопасности и качеству ПО, у юридического отдела и, в конечном итоге, руководителей.

СКАНИРОВАНИЕ КОДА

Еще в 2002 году стартап Black Duck Software представил решение Protex, которое позволяло идентифицировать открытый исходный код в программных продуктах. Его технология состояла в сканерах кода, которые показывали фрагменты исходного кода (code snippets), совпадающие с открытым кодом в своей базе данных.

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

Вскоре свои решения стали предлагать и другие компании: Protecode (сейчас являются частью Synopsys), Palamida (приобретена компанией Flexera Software) и Open Logic (приобретена компанией Rogue Wave).

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

НЕПРЕРЫВНОЕ УПРАВЛЕНИЕ КОДОМ

Постоянное развертывание и увеличение осведомленности об уязвимостях исходного кода изменили требования команд разработчиков. Практика написания программ через копирования фрагментов кода перестала быть актуальной.

Настоящую технологическую революцию совершила в 2011 году компания WhiteSource, представившая разработку для удовлетворения потребностей команд на основе agile-методологии. Решение было интуитивно понятным и доступным, интегрировалось со всеми стадиями жизненного цикла разработки ПО (SDLC) для оперативного обнаружения проблем. С помощью данной технологии удалось не только находить компоненты открытого кода, но и блокировать проблемные компоненты до добавления в проект.

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

Начиная со стадии одобрения и заканчивая отслеживанием ошибок после развертывания, непрерывное управление открытым ПО полностью автоматизирует весь процесс управления компонентами.

Чтобы понять, какой инструмент подойдет для вашей компании, необходимо обратить внимание на характеристики компонентов и сравнить их важность. (Рис. 1).

Рис. 1

1. Поиск компонентов открытого кода

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

Таблица 1

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

Решение поддерживает свыше 20 языков программирования, включая исходный код. Кроме того, имеет более 3 млн компонентов открытого ПО и 70 млн файлов с открытым кодом. Данная база обновляется ежедневно.

WhiteSource может быть установлен на сервере организации, размещаться на виртуальном сервере в облаке или использоваться как SaaS-решение.

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

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

ДРУГИЕ ИНСТРУМЕНТЫ НЕПРЕРЫВНОГО КОНТРОЛЯ. Обнаружение происходит в сборке на основе фактического применения. Только некоторые инструменты могут находить компоненты в репозиториях. Однако большинство этих инструментов поддерживают только бинарный код (Java и npm).

2. Обнаружение уязвимостей

Ежегодно становится известно о сотнях уязвимостей исходного кода. И хотя разработчикам в 87% случаях удается быстро их устранять, проблемы возникают в момент, когда сообщество производителей кода становится открытым «базаром». В результате поиск уязвимостей открытого ПО становится не простым. Не стоит забывать и о том, что хакеры научились понимать, что малейшая уязвимость в коде может привести к большим потерям.

Рис. 2. Преимущество WhiteSource

WhiteSource. При реализации решения используется множество баз данных уязвимостей (Национальная база данных уязвимостей, экспертное сообщество, система отслеживания ошибок GitHub, OpenSource и др.). Сейчас имеется свыше 180 тыс. сообщений об уязвимостях.

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

Сканеры кода. Отслеживание происходит только по NVD, поэтому технология не может гарантировать высокую точность правильных срабатываний. Безопасность обеспечивается только на момент сканирования, возможные скрытые уязвимости не учитываются.

Другие инструменты позволяют обнаружить уязвимости можно только через NVD.

3. Управление лицензионными рисками

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

Рост количества лицензий открытого ПО, множественность версий и объем кода, опубликованный без упоминания лицензии, делают отслеживание лицензии весьма сложным.

Рис. 3

WhiteSource. В этом инструменте отображаются лицензии всех компонентов и связанных с ними объектов в расчете на организацию, приложение или проект. Если обнаружено более одной лицензии, то представляются все найденные лицензии. Кроме того, в рамках данного продукта можно осуществить полный анализ рисков на каждую лицензию. Для этого всего за несколько минут на основании последней сборки генерируются соответствующие отчеты (правовой анализ с перечнем лицензий, распределением лицензий по проектам и т.д.). Процедура сортировки и публикации уведомлений, необходимых для развертывания автоматизирована. (Рис. 3)

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

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

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

4. Раннее обнаружение

Раннее обнаружение предполагает проведение тестирования на более ранних стадиях процесса разработки ПО. Так, процесс поиска проблем становится легче и дешевле на 90% процентов.

Если обнаружить проблемный компонент перед добавлением в репозиторий, сборку или перед скачиванием компонента, это позволит избежать проблем с безопасностью и качеством открытого кода, а также улучшит качество самого проекта.

Рис. 4

 

WhiteSource. Инструмент WhiteSource Web Advisor показывает полный анализ рисков для каждого компонента при просмотре сетевых репозиториев (GitHub, Maven Central и т.д.), рассчитывает оценку качества для каждой версии. Также есть возможность выбрать компоненты, соответствующие политике организации: они будут понятны большинству разработчиков и органично впишутся в привычное окружение. (Рис. 4).

Сканеры кода. Сканеры не интегрируются в CI/CD процесс, а могут только анализировать отдельную точку в момент последнего сканирования. Некоторые вендоры предлагают собственную базу и в результате получают сложность интеграции.

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

Единого решения, позволяющего обнаруживать и блокировать проблемные компоненты во время стадии анализа, не существует.

5. Автоматизация и политики

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

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

Политики могут быть основаны на любых сочетаниях параметров метаданных, таких как тип лицензии, уровень серьезности уязвимости, оценка качества и т.д. Они могут автоматически устанавливаться на различных стадиях жизненного цикла создания продукта (SDLC).

Также инструмент на основании установленной политики может создавать «Событие» в системе отслеживания ошибок. А реализация REST API обеспечит пользователям полный и гибкий контроль за продуктом с учетом их специфики.

Сканеры кода не интегрируются с CI/CD процессами, хотя в ручном режиме некоторые могут отслеживать систему после сканирования. Политики можно устанавливать для обнаружения проблемных компонентов после сканирования, но они не будут применяться автоматически.

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

ЗАКЛЮЧЕНИЕ

WhiteSource, будучи первым инструментов непрерывного обнаружения уязвимостей в ПО с открытым кодом, обладает самой наработанной базой данных. Сегодня это единственное решение, которое позволяет обеспечить полную защиту без ложноположительных срабатываний, пропусков или не полного результата.

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

Таким образом, ваши команды специалистов по безопасности, инженеров, разработчиков и юристов гарантированно оценят должным образом наглядность, простоту и надежность решения WhiteSource.