В последние несколько лет люди все больше осознают риски, связанные с использованием компонентов с открытым исходным кодом в своем программном обеспечении. Учитывая, что большая часть программного обеспечения представляет собой смесь логики с открытым исходным кодом и проприетарной логики, знание того, какие ингредиенты были импортированы извне, прямо или временно, имеет важное значение для надлежащего управления рисками конечного программного продукта. Поскольку времена отслеживания ингредиентов с использованием сложных электронных таблиц давно прошли и к тому же крайне неэффективны, основным способом такого отслеживания является использование SBOM — программного списка материалов. Как и другие спецификации, это, по сути, список компонентов программного обеспечения, из которых оно создано, с добавлением взаимосвязей между различными ингредиентами с особым акцентом на то, какие компоненты зависят друг от друга.
Сегодня на рынке используются два основных формата SBOM: SPDX и CycloneDX.
Обмен данными программного пакета (SPDX) — это машиночитаемый проект SBOM с открытым исходным кодом, созданный фондом Linux. Последняя версия SPDX была разработана в соответствии со стандартом NTIA дляМинимальные элементы спецификации программного обеспечения.' В нем перечислены компоненты, авторские права, лицензии и ссылки на безопасность части программного обеспечения.
ЦиклонDX (CDX) Это также машиночитаемый формат SBOM с открытым исходным кодом, разработанный сообществом Open Web Application Security Project (OWASP). В качестве формата спецификации CycloneDX имеет и другие приложения, помимо подготовки программных спецификаций. Его также можно использовать для компиляции компонентов, уязвимостей и сервисов аппаратных и облачных систем.
Почему СБОМ важен?
SBOM чрезвычайно полезен для групп разработчиков программного обеспечения, закупочных организаций и конечных пользователей. Его использование может помочь гарантировать актуальность компонентов с открытым исходным кодом и сторонних производителей, а также дает представление о том, какие зависимости проекта имеют известные уязвимости, которые могут быть использованы в вашем программном обеспечении. С другой стороны, покупатели программного обеспечения могут использовать SBOM для анализа рисков, присущих продукту, посредством оценки уязвимостей.
Организациям было бы лучше сотрудничать со своими поставщиками, чтобы гарантировать им доступ к правильной и актуальной информации о компонентах проекта, которые реализованы в системах и/или продуктах. Им также следует регулярно оценивать свои SBOM, чтобы минимизировать риски использования компонентов с открытым исходным кодом и сторонних компонентов.
Образцы СБОМ
В зависимости от используемого вами формата SBOM могут быть различия в компонентах SBOM. В зависимости от размера и сложности вашего проекта файл SBOM JSON может легко содержать тысячи и более строк. Поскольку просмотр файла из тысячи строк не очень информативен, давайте воспользуемся существующими, более простыми примерами, чтобы увидеть, что включает в себя каждый формат SBOM. Мы более подробно рассмотрим образцы двух основных форматов, представленных сегодня на рынке.
СПДКС
Образец SPDX SBOM, которому мы будем следовать, можно найти здесь.
JSON начинается с общей информации о самом файле — метаданных.
После этого мы получаем метаданные об исследуемом программном обеспечении:
Обратите внимание на контрольную сумму и ее значение. Каждый раздел SBOM включает шифрование и результат рассматриваемой части, чтобы люди, проверяющие файл, могли быть уверены, что упомянутое программное обеспечение или компонент идентично тому, которое они просматривают.
Без этой гарантии вы могли бы легко найти несколько копий компонентов или программного обеспечения с одинаковыми названиями, и вы не имели бы представления, какая из этих версий была проверена или включена в программное обеспечение или SBOM, описывающее его.
Следуя описанию проверенного программного обеспечения, мы можем начать просматривать компоненты:
Вы можете увидеть несколько полей, описывающих лицензию компонента, его домашнюю страницу, версию, полное имя и т. д.
Еще одна вещь, которую вы можете найти в формате SPDX, — это аннотации — дополнения, сделанные позже к разделу и включающие дополнительную информацию, а иногда даже свободный текст:
Подробнее об этом формате и его возможностях можно узнать на странице страница СПДКС Фонда Linux.
ЦиклонDX
Формат CycloneDX SBOM может быть описан в файле JSON, файле XML или в буферах протокола. Чтобы все было проще и проще, мы будем следовать упрощенному примеру CycloneDX JSON. Описанный пример можно найти здесь.
JSON начинается с общих метаданных о файле.
Затем исследовались метаданные программного обеспечения:
После этого программные компоненты и их зависимости:
Имейте в виду, что это упрощенный пример и что формат может включать много другой информации. Для более детального ознакомления с различными вариантами использования вы можете посетить страницу вариантов использования OWASP CyclonDX. здесь.
Вот пример с этой страницы, демонстрирующий построение списка зависимостей:
А вот более подробное описание различных компонентов этого формата, взятое из OWASP. Возможности спецификации страницы:
Как использовать СБОМ
Не расстраивайтесь, если вы не сможете следовать примерам файлов, представленным здесь. Несмотря на то, что файлы JSON в основном читаются людьми, они гораздо более пригодны для машинного чтения, чтобы специальное программное обеспечение могло принимать информацию и выдавать результаты анализа.
Вы можете использовать список компонентов программного обеспечения, чтобы убедиться, что он не содержит нежелательных лицензий с открытым исходным кодом (строка GPL3.0 или MPL1.1). Вы можете регулярно проверять список зависимостей, чтобы узнать, есть ли доступные обновления, или сверять имена пакетов с базами данных уязвимостей, чтобы узнать, какие проблемные зависимости содержит ваше программное обеспечение.
Может показаться сложным принять SBOM и получить всю эту информацию обратно, но помните, что вам не обязательно делать все это самостоятельно. Такие сервисы, как платформа Scribe Security, могут избавить вас от многих проблем и предложить гораздо больше преимуществ. Не стесняйтесь ознакомиться с нашей платформой и узнать, как еще вы можете управлять своими рисками, используя нашу систему непрерывного мониторинга жизненного цикла разработки и конечных продуктов.