Последнее время наблюдается рост числа кибератак, нацеленных на разработчиков и вендоров программного обеспечения. Поэтому в ИТ-сообществе все чаще обсуждают спецификацию Software Bill of Materials, или SBOM. Ее внедряют как стартапы, так и корпорации. Обсудим, что это за инструмент, и как использовать его в своей работе. 

Что такое SBOM

Идея SBOM берет начало в промышленной сфере, и на производстве Bill of Materials (BOM) используют достаточно давно. Это — подробный список сырья и готовых компонентов, необходимых для изготовления той или иной продукции, организованный по иерархическому принципу. 

В контексте разработки программного обеспечения спецификация Software Bill of Materials представляет собой перечень зависимостей, файлов, библиотек и других элементов, имеющих отношение к конкретному сервису или инфраструктуре целиком. Ее задача — предоставить наиболее полную информацию о программных компонентах, в том числе их версии и типы лицензий. 

Эта информация помогает команде разработки и поддержки принимать взвешенные решения о состоянии инфраструктуры. Например, если в популярной open source библиотеке обнаружили серьезную уязвимость и необходимо определить, насколько она опасна в рамках конкретной компании или продукта. Представим на секунду, что ИТ-специалисту, который работает в крупной поликлинике, стало известно о критическом баге в библиотеке Java Spring. Ему необходимо понять, какое оборудование потенциально уязвимо. Взять, к примеру, аппарат МРТ: какая в нем операционная система? Использует ли он Java Spring и уязвимый компонент? Спецификация SBOM помогает быстро ответить на эти вопросы.

В каком-то смысле составление Software Bill of Materials является частью аудита кибербезопасности. В то же время применение SBOM в облачной экосистеме не является чем-то необычным. Так, в прошлом году разработчики Docker добавили возможность посмотреть SBOM для образов контейнеров с информацией о пакетах, имеющих отношение к операционной системе или языку программирования. 

Благодаря SBOM, разработчики видят потенциальные векторы атак на «цепочки поставок» и способны быстрее на них реагировать. Такие атаки происходят чаще, чем может показаться на первый взгляд. Один из громких инцидентов произошел с SolarWinds в 2020-м, когда злоумышленники заразили ее платформу для мониторинга, подменив обновление ПО.

SBOM применяется к любому программному компоненту — с открытым исходным кодом или проприетарному (например, файлам, модулям, общим библиотекам и т. д.), используемому при создании программных продуктов. Аппаратное обеспечение может участвовать в распространении или выполнении ПО (например, сетевое оборудование, криптографические устройства и т. д.), но оно не считается частью SBOM.

Разные стандарты: SPDX, CycloneDX и другие

Существует множество стандартов SBOM. Рассмотрим, как они появились и для чего используются.

Первый — Software Package Data Exchange (SPDX), который развивается под эгидой Linux Foundation. 

Cообщество открытого исходного кода заметило необходимость создания SBOM более 10 лет назад. В 2010 году в качестве первоначальной попытки решить эту проблему был запущен открытый стандарт SPDX. 

Изначально стандарт разработали для отслеживания используемых в открытом ПО лицензий, но со временем в него добавили требования к описанию уязвимостей и зависимостей от стороннего кода. В 2021 году SPDX признали международным стандартом для документирования метаданных о пакетах ПО (ISO/IEC 5692:2021).

SPDX состоит из трех элементов: спецификации, перечня лицензий (SPDX License List) с руководством для их идентификации, а также библиотек для работы с этими двумя компонентами. Самый простой вариант написать спецификацию по SPDX — заполнить ее вручную в специальном файле со стандартизированными полями. Также для этого можно использовать автоматизированные инструменты, например, для пакетов на Golang, Java, Python. SPDX позволяет представить метаданные в формате JSON, YAML, RDF/XML.

Второй распространенный стандарт — CycloneDX. Его разработали в OWASP (открытый проект обеспечения безопасности веб-приложений) для применения в Dependency-Track — платформе для анализа сторонних программных компонентов. 

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

Свои форматы SBOM запускают крупные игроки в сообществе открытого программного обеспечения. Помимо подхода GitHub один из актуальных стандартов представили для Kubernetes. Его разработала команда Kubernetes Security Operations Center (KSOC).

Kubernetes Bill of Materials (KBOM) предоставляет данные о количестве рабочих нагрузок в кластере, стоимости и типе хостинга, уязвимостях образов, сторонних инструментах и версиях различных компонентов. По умолчанию спецификацию KBOM можно написать в формате JSON — она подойдет для любых кластеров, в том числе развернутых у крупных облачных провайдеров.

Как использовать SBOM

Погрузиться в работу со SBOM может практически любая организация. Как видно, для стандартов вроде SPDX достаточно заполнить таблицу. Хотя такой подход едва ли годится для крупных проектов с большим числом зависимостей, пакетов и программных библиотек, не говоря уже о целых облачных инфраструктурах. Здесь на помощь приходят специальные генераторы. Например, Syft, который формирует спецификацию на основе образов контейнеров. Еще есть SwiftBOM — он поддерживает форматы SPDXCycloneDX and SWID. Некоторые крупные игроки разрабатывают собственные генераторы, например, в прошлом году такой проект представила и передала в open source компания Microsoft.

Многообразие генераторов и стандартов разделило ИТ-сообщество на два лагеря. Одни считают, чем больше генераторов, тем больше возможностей для усиления информационной безопасности. Разработчикам и администраторам также удобно — они могут выбрать оптимальный для себя формат. 

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

Хотя стоит отметить, что вопросы стандартизации уже пытаются решить. Разработаны списки рекомендаций по составлению SBOM с целью унификации процесса. Однако остается решить вопрос надежности самих SBOM-генераторов. Специалисты по ИБ отмечают, что в теории хакеры могут провести атаку и подделать информацию в спецификации, чтобы скрыть уязвимость или вредоносный код, но в теории снизить такие риски могут цифровые подписи.

Как еще защищать ПО

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

У нас есть Security Operation Center (SOC) для комплексной защиты всех ресурсов клиентов. SOC мониторит и реагирует как на факты первоначальной компрометации системы, так и на дальнейшие попытки злоумышленника закрепиться в ней, повысить привилегии и развить атаку на хосты уже внутри корпоративной сети.

На базе Web Application Firewall (WAF) мы реализовали облачный сервис под ключ, который содержит набор инструментов, связанных с конфигурированием, эксплуатацией WAF, мониторингом и реагированием на инциденты, — WAF Premium. Команда CloudMTS берет на себя тонкую настройку защиты, выявляет ложные срабатывания механизмов защиты и реагирует на инциденты взлома в режиме 24/7.

Наконец, защита от DDoS-атак — услуга, с которой не нужно дополнительно закупать и настраивать оборудование. Заказчик получает выделенную круглосуточную смену поддержки, отказоустойчивую инфраструктуру на базе наших ЦОДов, систему по обучению и адаптивному построению модели распределения трафика для штатных условий работы защищаемых сетей и онлайн-сервисов.

Комментарии (7)


  1. ABHuman
    19.12.2023 12:28

    Идея SBOM берет начало в промышленной сфере, и на производстве Bill of Materials (BOM) используют достаточно давно. Это — подробный список сырья и готовых компонентов, необходимых для изготовления той или иной продукции, организованный по иерархическому принципу. 

    Bill of Materials - Спецификация. (ГОСТ 2.106-2019)

    Этот "список" (Спецификация) может быть как подробным, так и не очень, как с учётом количества вхождения компонентов во всё изделие, так и в отдельные узлы/подсборки. И никакого отношения к SBOM кроме похожих букв это не имеет. А вот сам SBOM больше похож на список зависимостей а ля json.


  1. ABHuman
    19.12.2023 12:28

    Аппаратное обеспечение может участвовать в распространении или выполнении ПО (например, сетевое оборудование, криптографические устройства и т. д.), но оно не считается частью SBOM.

    А вот это конкретный косяк со стороны SBOM.


    1. dmitrykabanov
      19.12.2023 12:28

      При желании вполне можно учитывать (зависит от продукта). Но если железо живет в облаке и за него отвечает кто-то другой, то можно и не перегружать себя этим


      1. ABHuman
        19.12.2023 12:28

        При желании вполне можно учитывать (зависит от продукта). 

        Зависит от зоны ответственности, если вам не важен общий результат, а только ваша граница. Ну и облака - это отдельная тема.


    1. andrettv
      19.12.2023 12:28

      Почему же, есть HBOM.


  1. andrettv
    19.12.2023 12:28

    Также есть CBOM - Cryptographic Bill of Materials, чтобы выявлять используемые криптографические примитивы и оперативно реагировать в случае доказательства их уязвимости.


  1. ussrisback
    19.12.2023 12:28

    Можно еще добавить, что сегодня SBOM становится все более обязательным и требуется заказчиком, а формат SPDX становится дефакто стандартом SBOM.