SBOM
| Software Bill of Materials (SBOM) | |
|---|---|
| Краткие сведения | |
| Термин | Software Bill of Materials, SBOM |
| Смысл | Формальный перечень компонентов программного продукта и их связей |
| Основное назначение |
Прозрачность цепочки поставок ПО, учет компонентов, анализ уязвимостей и лицензий |
| Минимальные элементы |
Поля данных, поддержка автоматизации, практики и процессы (NTIA) |
| Распространенные форматы |
SPDX, CycloneDX, SWID (в контексте стандартов и рекомендаций) |
Software Bill of Materials (SBOM) — формальная ведомость, содержащая сведения о компонентах, использованных при создании программного продукта, и об их отношениях в цепочке поставок.[1] В материалах NIST SBOM определяется как формальная запись, перечисляющая компоненты в продукте и отражающая связи поставок, аналогично перечню ингредиентов на упаковке продуктов питания.[2]
Назначение[править]
SBOM используется как инструмент прозрачности состава программного продукта. В практических сценариях SBOM применяют для:
- инвентаризации программных компонентов (включая сторонние библиотеки и зависимости);
- сопоставления состава продукта с базами уязвимостей и вендорными бюллетенями;
- управления рисками цепочки поставок и оценки поставщиков;
- анализа соблюдения лицензионных требований (в рамках учёта компонентов и их метаданных).[3]
NIST отмечает, что SBOM ускоряет выявление и устранение уязвимостей за счет повышения прозрачности и улучшения процессов управления рисками в жизненном цикле разработки и эксплуатации.[4]
Происхождение и нормативный контекст[править]
В 2021 году в США был издан Executive Order 14028, где SBOM определен как формальная запись, содержащая детали и отношения цепочки поставок компонентов, использованных при построении ПО, и указано, что SBOM полезен разработчикам, покупателям и операторам программных продуктов.[1] На базе этого подхода NTIA опубликовало документ о минимальных элементах SBOM.[3]
Минимальные элементы SBOM[править]
В документе NTIA минимальные элементы SBOM сгруппированы в три взаимосвязанные области: поля данных, поддержка автоматизации и практики с процессами.[3]
Поля данных[править]
NTIA перечисляет базовые поля, которые должны обеспечивать идентификацию компонентов и их отношений:
- поставщик (англ. supplier);
- наименование компонента (англ. component name);
- версия компонента (англ. version);
- иные уникальные идентификаторы (англ. other unique identifiers);
- отношение зависимости (англ. dependency relationship);
- автор данных SBOM (англ. author of SBOM data);
- временная метка (англ. timestamp).[3]
Поддержка автоматизации[править]
Минимальные элементы предполагают машинную читаемость и возможность автоматической генерации и обработки SBOM, чтобы использовать их в масштабе экосистемы. В документе NTIA среди форматов, применяемых для генерации и потребления SBOM, упоминаются SPDX, CycloneDX и SWID tags.[3]
Практики и процессы[править]
NTIA описывает операционные аспекты работы с SBOM, включая частоту обновления, глубину (англ. depth), фиксацию известных пробелов (англ. known unknowns), способы распространения и доставки, контроль доступа и обработку ошибок (англ. accommodation of mistakes).[3]
Форматы и стандарты[править]
SPDX[править]
SPDX является открытым стандартом представления состава программных систем; на сайте проекта указано, что спецификация SPDX является международным стандартом ISO/IEC 5962:2021 и может использоваться для представления SBOM.[5] Существует отдельное руководство, описывающее, как выражать минимальные элементы NTIA в документах SPDX 2.x.[6]
CycloneDX[править]
CycloneDX описывается как объектная модель для прозрачности программных и системных цепочек поставок. В обзоре спецификации указано, что формат поддерживает описание компонентов, сервисов, графов зависимостей, а также передачу сведений об уязвимостях и связанных данных, пригодных для задач VEX и управляемого раскрытия уязвимостей.[7] В ECMA-424 (CycloneDX) отмечается ориентация стандарта на прозрачность и автоматизацию в цепочках поставок ПО и систем.[8]
SWID tags[править]
SWID tags представляют структурированный формат метаданных для описания программного продукта. NIST указывает, что формат определен стандартом ISO/IEC 19770-2 и рекомендует использовать актуальную версию; также описываются сценарии использования SWID tags для автоматизации учета установленного ПО и связанных процессов безопасности.[9]
Создание и распространение SBOM[править]
SBOM может формироваться на разных этапах жизненного цикла разработки и поставки:
- на уровне исходного кода и сборки (англ. build-time), когда известен состав зависимостей;
- на уровне артефакта поставки (англ. release-time), когда фиксируется окончательная комплектация;
- на уровне эксплуатации (англ. runtime), когда используется наблюдаемость или сканирование для уточнения состава.
NIST в рекомендациях по безопасности цепочек поставок подчеркивает, что SBOM является дополняющей мерой, а не заменой существующих практик управления уязвимостями и оценок поставщиков.[4] В том же контексте указывается значимость машинной читаемости и поддержания доступных репозиториев SBOM, включая возможность подписи и контроля целостности как практик зрелого применения.[4]
Ограничения и типичные проблемы[править]
К ключевым ограничениям SBOM относят:
- неполнота данных, если в цепочке сборки отсутствует информация о части компонентов или о транзитивных зависимостях;
- различия в глубине описания (например, компонентный уровень против файлового);
- сложность синхронизации SBOM с быстро меняющимися продуктами и частыми релизами;
- необходимость согласования идентификаторов компонентов (версии, имена, CPE/PURL и др.) для корректного сопоставления с базами уязвимостей;
- вопросы доступа и конфиденциальности, когда SBOM раскрывает структуру продукта и поставщиков.
Документ NTIA прямо выделяет аспект «known unknowns» как часть практик, то есть фиксацию того, что известно, что неизвестно, и где данные неполны.[3]
Связанные понятия[править]
- Software supply chain security (безопасность цепочек поставок ПО) — область практик, в которой SBOM используется как один из инструментов прозрачности и управления рисками.[4]
- VEX (Vulnerability Exploitability eXchange) — обмен данными об эксплуатируемости уязвимостей; в материалах CycloneDX описывается поддержка сценариев, связанных с уязвимостями и VEX.[7]
Источники[править]
- ↑ 1,0 1,1 Executive Order 14028: Improving the Nation’s Cybersecurity (govinfo.gov, PDF)PDF
- ↑ Software Bill of Materials (SBOM) (NIST CSRC Glossary)
- ↑ 3,0 3,1 3,2 3,3 3,4 3,5 3,6 The Minimum Elements for a Software Bill of Materials (SBOM) (NTIA, PDF)PDF
- ↑ 4,0 4,1 4,2 4,3 Software Security in Supply Chains: Guidance under EO 14028 Section 4(c)/4(d) (NIST, PDF)
- ↑ spdx.dev — The System Package Data Exchange (SPDX) (Linux Foundation Projects, ISO/IEC 5962:2021)
- ↑ SPDX and NTIA Minimum Elements for SBOM HOWTO (spdx.github.io)
- ↑ 7,0 7,1 https://cyclonedx.org/specification/overview/ CycloneDX Specification Overview
- ↑ ECMA-424: CycloneDX Bill of Materials Specification, 1st edition (Ecma International, PDF)PDF
- ↑ Software Identification (SWID) Tagging: Specifications and Guidelines (NIST CSRC)