Nota Bene. SBOM: «Скованные одной цепью». Объясняем на пальцах.
Спецификация программного обеспечения (Software Bill Of Materials, SBOM) – это официальная информация о программном продукте, содержащая подробные сведения об используемых при его создании различных компонентах и цепочках поставок. Следует отметить, что основная часть современного программного обеспечения (ПО) создается с использованием элементов стороннего кода и ПО с открытым исходным кодом (Open-Source Software, OSS). Компаниям-разработчикам, если они заинтересованы в поддержании имиджа надежного поставщика, улучшении качества сервисного обслуживания своих продуктов и поддержке своих клиентов, целесообразно создавать SBOM и предоставлять их для своих клиентов.
В соответствии с указом Президента США от 12 мая 2021 года №14028 Министерство торговли США (U.S. Department of Commerce) и Национальное управление телекоммуникаций и информации (National Telecommunications and Information Administration's, NTIA) разработали перечень минимального набора данных о компонентах ПО (The Minimum Elements For a Software Bill of Materials (SBOM)), которые разбиты на три основные категории:
- Поля данных – документирование базовой информации о каждом компоненте, в том числе:
- Название поставщика – наименование организации, осуществившей поставку ПО.
- Название компонента.
- Строка версии – сведения о сборке и версии компонента.
- Взаимосвязь – описание зависимости между программными компонентами и то, какие компоненты были скомпилированы и связаны с другими компонентами.
- Имя автора – наименование организации, разработавшей SBOM.
- Временная метка – временя создания SBOM.
- Поддержка автоматизации – автоматическая генерация и обеспечение машиночитаемости спецификации для передачи данных SBOM в другие системы.
- Практики и процессы – порядок запроса данных SBOM, генерации и использования в том числе: частота обновления, глубина построения иерархии компонентов, элементы для которых, создатели SBOM не могут достоверно указать зависимости, порядок предоставления потребителям и устранение ошибок, контроль доступа.
В отчете рабочей группы NTIA от 21 октября 2021 года «Обеспечение прозрачности компонентов программного обеспечения: создание общей спецификации программного обеспечения» (Framing Software Component Transparency: Establishing a Common Software Bill of Materials (SBOM)) расширен перечень базовых компонентов ПО, информация о которых включается в SBOM, уточнена терминология, применяемая в концепции.В категорию «Поля данных» спецификации программного обеспечения добавлены следующие элементы:
- Хеширование компонентов – криптографический хэш компонента, позволяющий получателю проверить (если у него есть подозрения) был ли изменен предоставленный ему двоичный файл.
- Уникальный идентификатор – универсальный уникальный идентификатор (UUID).
- Лицензирование – тип лицензии, под которой выпускается программный компонент.
В «Руководстве по безопасности цепочки поставок программного обеспечения» (Software Supply Chain Security Guidance) от 9 ноября 2021 года, разработанном Национальным институтом стандартов и технологий США (National Institute of Standards and Technology) указано, что SBOM должны формироваться с использованием следующих форматов, рекомендованных NTIA:
- Программный пакет обмена данными (Software Package Data Exchange, SPDX) – это открытый стандарт для создания инвентарного списка SBOM, содержащего все программные компоненты, лицензии на компоненты, авторские права и рекомендации по безопасности. В сентябре 2021 года SPDX стал международным открытым стандартом с кодом ISO/IEC 5962:2021, присвоенным Международной организацией по стандартизации (International Organization for Standardization, ISO) и Международной электротехнической комиссией (International Electrotechnical Commission, IEC).
- CycloneDX – это упрощенный стандарт SBOM для создания полного перечня программных компонентов разработчиков и сторонних производителей. CycloneDX документирует типы компонентов, включая приложения, контейнеры, библиотеки, файлы, встроенное программное обеспечение, фреймворки и операционные системы.
- Стандарт идентификации программного обеспечения (SoftWare IDentification, SWID) был разработан Международной организацией по стандартизации и Международной электротехнической комиссией, код ISO/IEC 19770-2:2015. SWID – это XML-файл, содержащий список программных компонентов и их лицензий, статусы исправлений и установочные пакеты.
Области применения концепции SBOM условно подразделяются на три уровня:
Разработка – SBOM используется при создании ПО с компонентами сторонних производителей.
- Разработка – SBOM используется при создании ПО с компонентами сторонних производителей.
- Приобретение – предоставление сведений о сертификации и гарантиях перед покупкой, а также для планирования стратегий внедрения и применения.
- Эксплуатация и управление – информирование об уязвимостях составных частей ПО, соблюдение требований лицензирования, а также для быстрого выявления возможных угроз, связанных с цепочками поставок.
Когда в каком-то конкретном компоненте программного обеспечения обнаруживаются недостатки или уязвимости, SBOM применяется для его быстрой идентификации, определения оказываемого влияния и оценки степени риска от его использования. Возможность оперативно выявлять уязвимости позволяет поставщикам ПО своевременно выпускать обновления или предоставлять другие варианты исправлений, а потребителям – применять меры по смягчению последствий независимо от поставщика и идентифицировать программное обеспечение, на которое это не повлияло. SBOM также помогает юридическим подразделениям и отделам соответствия требованиям определять историю лицензий и допустимые варианты использования фрагмента стороннего кода, что снижает вероятность любого неправильного использования.
В отличие от сертификации SBOM не требует раскрытия исходного кода, что позволяет разработчикам сохранить свою интеллектуальную собственность. Однако если при создании использовались компоненты сторонних производителей, то лицензии на них, могут обязать публично раскрыть информацию о том, что они применялись.
Спецификация программного обеспечения создается для каждой версии ПО и предоставляет собой иерархическую структуру, количество уровней в которой зависит от требований потенциальных потребителей ПО. Необходимо отметить, что каждый программный элемент, указанный в SBOM и содержащий сторонние компоненты также должен иметь свою собственную спецификацию, а внесение изменений в элементы ПО требует соответствующих исправлений и в SBOM.
Следует отметить, что в настоящее время не существует единого подхода к порядку распространения и обмена информацией, содержащейся в SBOM. Она может предоставляться в общий и ограниченный доступ следующими способами:
- поставляться с исходным кодом или двоичным файлом;
- размещаться на веб-сайте производителя;
- размещаться на специализированном информационном ресурсе или веб-сайте доверенной третьей стороны;
- формироваться заинтересованной стороной самостоятельно с помощью специальных средств, например, стандартизированного языка межмашинного взаимодействия между различными инструментами и приложениями кибербезопасности OpenC2.
По прогнозам специалистов американской исследовательской компании – Gartner, к 2025 году 60% организаций будут использовать SBOM в своих системах безопасности. Ожидается, что уровень внедрения возрастет по мере того, как все больше организаций признают ценность SBOM для обеспечения безопасности своих цепочек поставок программных продуктов.
