draft-ietf-opsawg-sbom-access-01.txt   draft-ietf-opsawg-sbom-access-02.txt 
Network Working Group E. Lear Network Working Group E. Lear
Internet-Draft Cisco Systems Internet-Draft Cisco Systems
Intended status: Standards Track S. Rose Intended status: Standards Track S. Rose
Expires: 19 November 2021 NIST Expires: 10 January 2022 NIST
18 May 2021 9 July 2021
Discovering And Accessing Software Bills of Materials Discovering and Retrieving Software Transparency and Vulnerability
draft-ietf-opsawg-sbom-access-01 Information
draft-ietf-opsawg-sbom-access-02
Abstract Abstract
Software bills of materials (SBOMs) are formal descriptions of what To improve cybersecurity posture, automation is necessary to locate
pieces of software are included in a product. This memo specifies a what software is running on a device, whether that software has known
different means for SBOMs to be retrieved. vulnerabilities, and what, if any recommendations suppliers may have.
This memo specifies a model to provide access this information. It
may optionally be discovered through manufacturer usage descriptions.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 19 November 2021. This Internet-Draft will expire on 10 January 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Cases Not Addressed . . . . . . . . . . . . . . . . . . . 3 1.1. Cases Not Addressed . . . . . . . . . . . . . . . . . . . 4
1.2. How This Information Is Used . . . . . . . . . . . . . . 4 1.2. How This Information Is Retrieved . . . . . . . . . . . . 5
1.3. SBOM formats . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Formats . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Discussion points . . . . . . . . . . . . . . . . . . . . 4 1.4. Discussion points . . . . . . . . . . . . . . . . . . . . 5
2. The .well-known/sbom endpoint set . . . . . . . . . . . . . . 5 2. The .well-known/transparency endpoint set . . . . . . . . . . 6
3. The mud-sbom extension model extension . . . . . . . . . . . 5 3. The mud-transparency extension model extension . . . . . . . 6
4. The mud-sbom augmentation to the MUD YANG model . . . . . . . 5 4. The mud-sbom augmentation to the MUD YANG model . . . . . . . 7
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.1. Without ACLS . . . . . . . . . . . . . . . . . . . . . . 8 5.1. Without ACLS . . . . . . . . . . . . . . . . . . . . . . 11
5.2. Located on the Device . . . . . . . . . . . . . . . . . . 9 5.2. SBOM Located on the Device . . . . . . . . . . . . . . . 13
5.3. SBOM Obtained from Contact Information . . . . . . . . . 9 5.3. Further contact required. . . . . . . . . . . . . . . . . 14
5.4. With ACLS . . . . . . . . . . . . . . . . . . . . . . . . 10 5.4. With ACLS . . . . . . . . . . . . . . . . . . . . . . . . 15
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
7.1. MUD Extension . . . . . . . . . . . . . . . . . . . . . . 13 7.1. MUD Extension . . . . . . . . . . . . . . . . . . . . . . 18
7.2. Well-Known Prefix . . . . . . . . . . . . . . . . . . . . 14 7.2. Well-Known Prefix . . . . . . . . . . . . . . . . . . . . 18
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1. Normative References . . . . . . . . . . . . . . . . . . 14 8.1. Normative References . . . . . . . . . . . . . . . . . . 18
8.2. Informative References . . . . . . . . . . . . . . . . . 14 8.2. Informative References . . . . . . . . . . . . . . . . . 19
Appendix A. Changes from Earlier Versions . . . . . . . . . . . 14 Appendix A. Changes from Earlier Versions . . . . . . . . . . . 19
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19
1. Introduction 1. Introduction
A number of activities have been working to improve visibility to
what software is running on a system, and what vulnerabilities that
software may have.
Put simply, we seek to answer two classes of questions *at scale*:
* Is this system vulnerable to a particular vulnerability?
* Which devices in a particular environment contain vulnerabilities
that require some action?
Software bills of material (SBOMs) are descriptions of what software, Software bills of material (SBOMs) are descriptions of what software,
including versioning and dependencies, a device contains. There are including versioning and dependencies, a device contains. There are
different SBOM formats such as Software Package Data Exchange [SPDX] different SBOM formats such as Software Package Data Exchange [SPDX]
or CycloneDX[CycloneDX12]. or CycloneDX[CycloneDX12].
This memo specifies means by which SBOMs can be advertised and System vulnerabilities may similarly be described using several data
retrieved. formats, including the aforementioned CycloneDX, Common Vulnerability
Reporting Framework [CVRF], the Common Security Advisory Format
[CSAF]. This information is typically used to report to customers
the state of a system.
These two classes of information can be used in concert. For
instance, a network management tool may discover that a system makes
use of a particular software component that has a known
vulnerability, and a vulnerability report may be used to indicate
what if any versions of software correct that vulnerability, or
whether the system exercises the vulnerable code at all.
Both classes of information elements are optional under the model
specified in this memo. One can provide only an SBOM, only
vulnerability information, or both an SBOM and vulnerability
information.
Note that SBOMs may also carry other information, the most common
being any licensing terms. Because this specification is neutral
regarding content, it is left for format developers such as the Linux
Foundation, OASIS, and ISO to decide what attributes they will
support.
This memo specifies means by which both SBOMs and vulnerability
information can be advertised and retrieved through the use of a YANG
augmentation of the Manufacturer User Description (MUD) model
[RFC8520]. Note that the schema creates a grouping that can also be
used independently of MUD.
The mechanisms specified in this document are meant to satisfy The mechanisms specified in this document are meant to satisfy
several use cases: several use cases:
* A network-layer management system retrieving an SBOM from an IoT * A network-layer management system retrieving information from an
device as part of its ongoing lifecycle. Such devices may or may IoT device as part of its ongoing lifecycle. Such devices may or
not have interfaces available to query SBOM information. may not have query interfaces available.
* An application-layer management system retrieving an SBOM in order * An application-layer management system retrieving vulnerability or
to evaluate the posture of an application server of some form. SBOM information in order to evaluate the posture of an
These application servers may themselves be containers or application server of some form. These application servers may
hypervisors. Discovery of the topology of a server is beyond the themselves be containers or hypervisors. Discovery of the
scope of this memo. topology of a server is beyond the scope of this memo.
To satisfy these two key use cases, SBOMs may be found in one of To satisfy these two key use cases, objects may be found in one of
three ways: three ways:
* on devices themselves * on devices themselves
* on a web site (e.g., via URI) * on a web site (e.g., via URI)
* through some form of out-of-band contact with the supplier. * through some form of out-of-band contact with the supplier.
In the first case, devices will have interfaces that permit direct In the first case, devices will have interfaces that permit direct
SBOM retrieval. Examples of these interfaces might be an HTTP, COAP retrieval. Examples of these interfaces might be an HTTP, COAP or
or [OpenC2] endpoint for retrieval. There may also be private [OpenC2] endpoint for retrieval. There may also be private
interfaces as well. interfaces as well.
In the second case, when a device does not have an appropriate In the second case, when a device does not have an appropriate
interface to retrieve an SBOM, but one is directly available from the retrieval interface, but one is directly available from the
manufacturer, a URI to that information must be discovered. manufacturer, a URI to that information must be discovered.
In the third case, a supplier may wish to make an SBOM available In the third case, a supplier may wish to make an SBOM or
under certain circumstances, and may need to individually evaluate vulnerability information available under certain circumstances, and
requests. The result of that evaluation might be the SBOM itself or may need to individually evaluate requests. The result of that
a restricted URL or no access. evaluation might be the SBOM or vulnerability itself or a restricted
URL or no access.
To enable application-layer discovery, this memo defines a well-known To enable application-layer discovery, this memo defines a well-known
URI [RFC8615]. Management or orchestration tools can query this URI [RFC8615]. Management or orchestration tools can query this
well-known URI to retrieve a system's SBOM. Further queries may be well-known URI to retrieve a system's SBOM or vulnerability
necessary based on the content and structure of a particular SBOM. information. Further queries may be necessary based on the content
and structure of the response.
To enable network-layer discovery, particularly for IOT-based
devices, an extension to Manufacturer Usage Descriptions (MUD) may be
used[RFC8520].
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
1.1. Cases Not Addressed 1.1. Cases Not Addressed
[ This section to be removed prior to publication ] [ This section to be removed prior to publication ]
skipping to change at page 4, line 12 skipping to change at page 5, line 16
involve multiple backend systems, depending on many factors. One involve multiple backend systems, depending on many factors. One
example might be a large cloud-based service that offers example might be a large cloud-based service that offers
spreadsheets, email, and document authoring and management. spreadsheets, email, and document authoring and management.
Depending on what service is being used, a different set of back Depending on what service is being used, a different set of back
end services may in turn be invoking different software that end services may in turn be invoking different software that
should be listed. should be listed.
The reason why this use case isn't addressed here is that it may be The reason why this use case isn't addressed here is that it may be
better addressed inline within HTML. Further discussion is required. better addressed inline within HTML. Further discussion is required.
1.2. How This Information Is Used 1.2. How This Information Is Retrieved
SBOMs are used for numerous purposes, including vulnerability For devices that can emit a URL or can establish a well-known URI,
assessment, license management, and inventory management. This memo the mechanism may be highly automated. For devices that have a URL
provides means for either automated or semi-automated collection of in either their documentation or within a QR code on a box, the
that information. For devices that can output a MUD URL or establish mechanism is semi-automated (someone has to scan the QR code or enter
a well-known URI, the mechanism may be highly automated. For devices the URL).
that have a MUD URL in either their documentation or within a QR code
on a box, the mechanism is semi-automated (someone has to scan the QR
code or enter the URL).
Note that SBOMs may change more frequently than access control Note that vulnerability and SBOM information is likely to change at
requirements. A change to software does not necessarily mean a different rates. The MUD semantics provide a way for manufacturers
change to control channels that are used. Therefore, it is important to control how often tooling should check for those changes through
to retrieve the MUD file as suggested by the manufacturer in the the cache-validity node.
cache-validity period. In many cases, only the SBOM list will have
been updated.
1.3. SBOM formats 1.3. Formats
There are multiple ways to express an SBOM. When these are retrieved There are multiple ways to express both SBOMs and vulnerability
either directly from the device or directly from a web server, tools information. When these are retrieved either directly from the
will need to observe the content-type header to determine precisely device or directly from a web server, tools will need to observe the
which format is being transmitted. Because IoT devices in particular content-type header to determine precisely which format is being
have limited capabilities, use of a specific Accept: header in HTTP transmitted. Because IoT devices in particular have limited
or the Accept Option in CoAP is NOT RECOMMENDED. Instead, backend capabilities, use of a specific Accept: header in HTTP or the Accept
tooling MUST silently discard SBOM information sent with a media type Option in CoAP is NOT RECOMMENDED. Instead, backend tooling is
that is not understood. encouraged to support all known formats, and SHOULD silently discard
SBOM information sent with a media type that is not understood.
Some formats may support both vulnerability and software inventory
information. When both vulnerability and software inventory
information is available from the same location, both sbom and vuln
nodes MUST indicate that. Network management systems retrieving this
information MUST take note that the identical resource is being
retrieved rather than retrieving it twice.
1.4. Discussion points 1.4. Discussion points
The following is discussion to be removed at time of RFC publication. The following is discussion to be removed at time of RFC publication.
* Is the model structured correctly? * Is the model structured correctly?
* Are there other retrieval mechanisms that need to be specified? * Are there other retrieval mechanisms that need to be specified?
* Do we need to be more specific in how to authenticate and retrieve * Do we need to be more specific in how to authenticate and retrieve
SBOMs? SBOMs?
* What are the implications if the MUD URL is an extension in a * What are the implications if the MUD URL is an extension in a
certificate (e.g. an IDevID cert)? certificate (e.g. an IDevID cert)?
2. The .well-known/sbom endpoint set 2. The .well-known/transparency endpoint set
If a host offers this service, it will offer the RESTful endpoint Three well known endpoints are defined:
beginning with "{ORIGIN}/.well-known/sbom/base".
3. The mud-sbom extension model extension * "/.well-known/sbom" retrieves an SBOM.
* "/.well-known/vuln" retrieves vulnerability information.
* "/.well-known/openc2" is the HTTPS binding to OpenC2.
As discussed previously, the precise format of a response is based on
the Content-type provided.
3. The mud-transparency extension model extension
We now formally define this extension. This is done in two parts. We now formally define this extension. This is done in two parts.
First, the extension name "sbom" is listed in the "extensions" array First, the extension name "transparency" is listed in the
of the MUD file. N.B., this schema extension is intended to be used "extensions" array of the MUD file. N.B., this schema extension is
wherever it might be appropriate (e.g., not just MUD). intended to be used wherever it might be appropriate (e.g., not just
MUD).
Second, the "mud" container is augmented with a list of SBOM sources. Second, the "mud" container is augmented with a list of SBOM sources.
This is done as follows: This is done as follows:
module: ietf-mud-sbom module: ietf-mud-transparency
augment /mud:mud: augment /mud:mud:
+--rw sbom +--rw transparency
+--rw (sbom-type)? +--rw (sbom-retrieval-method)?
| +--:(cloud)
| | +--rw sboms* [version-info]
| | +--rw version-info string
| | +--rw sbom-url? inet:uri
| +--:(local-well-known)
| | +--rw sbom-local-well-known? enumeration
| +--:(sbom-contact-info)
| +--rw sbom-contact-uri inet:uri
+--rw (vuln-retrieval-method)?
+--:(cloud) +--:(cloud)
| +--rw sboms* [version-info] | +--rw vuln-url? inet:uri
| +--rw version-info string +--:(vuln-local-well-known)
| +--rw sbom-url? inet:uri | +--rw vuln-local-well-known? enumeration
+--:(local-well-known) +--:(vuln-contact-info)
| +--rw local-well-known? empty +--rw contact-uri inet:uri
+--:(contact-info)
| +--rw contact-uri inet:uri
+--:(openc2)
+--rw openc2-uri inet:uri
4. The mud-sbom augmentation to the MUD YANG model 4. The mud-sbom augmentation to the MUD YANG model
<CODE BEGINS> <CODE BEGINS>
file "ietf-mud-sbom@2021-04-29.yang" file "ietf-mud-transparency@2021-07-06.yang"
module ietf-mud-sbom { module ietf-mud-transparency {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mud-sbom"; namespace "urn:ietf:params:xml:ns:yang:ietf-mud-transparency";
prefix mud-sbom; prefix mud-transparency;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
import ietf-mud { import ietf-mud {
prefix mud; prefix mud;
} }
organization organization
"IETF OPSAWG (Ops Area) Working Group"; "IETF OPSAWG (Ops Area) Working Group";
skipping to change at page 6, line 30 skipping to change at page 8, line 16
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX This version of this YANG module is part of RFC XXXX
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself (https://www.rfc-editor.org/info/rfcXXXX);
for full legal notices. see the RFC itself for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. "; they appear in all capitals, as shown here. ";
revision 2021-04-29 { revision 2021-07-06 {
description description
"Initial proposed standard."; "Initial proposed standard.";
reference reference
"RFC XXXX: Extension for MUD SBOM"; "RFC XXXX: Extension for software transparency";
} }
grouping mud-sbom-extension { grouping transparency-extension {
description description
"SBOM extension grouping"; "Transparency extension grouping";
container sbom { container transparency {
description description
"container of methods to get an SBOM."; "container of methods to get an SBOM.";
choice sbom-retrieval-method {
choice sbom-type {
description description
"SBOM type"; "How to find SBOM information";
case cloud { case cloud {
list sboms { list sboms {
key "version-info"; key "version-info";
description description
"A list of SBOMs tied to different s/w "A list of SBOMs tied to different s/w
or h/w versions."; or h/w versions.";
leaf version-info { leaf version-info {
type string; type string;
description description
"The version to which this SBOM refers."; "The version to which this SBOM refers.";
} }
leaf sbom-url { leaf sbom-url {
type inet:uri; type inet:uri;
description description
"A statically located URI."; "A statically located URI.";
} }
} }
} }
case local-well-known { case local-well-known {
leaf local-well-known { leaf sbom-local-well-known {
type empty; type enumeration {
enum http {
description
"Use http (insecure) to retrieve
SBOM information.";
}
enum https {
description
"Use https (secure) to retrieve SBOM information.";
}
enum coap {
description
"Use COAP (insecure) to retrieve SBOM";
}
enum coaps {
description
"Use COAPS (secure) to retrieve SBOM";
}
enum openc2 {
description
"Use OpenC2 endpoint.
This is https://{host}/.well-known/openc2";
}
}
description description
"SBOM information is to be retrieved via "Which communication protocol to choose.";
https from the host on port 443, at
https://{hostname}/.well-known/sbom, where
hostname is replaced with the host to which
this MUD extension refers.";
} }
} }
case contact-info { case sbom-contact-info {
leaf contact-uri { leaf sbom-contact-uri {
type inet:uri; type inet:uri;
mandatory true; mandatory true;
description description
"This MUST be either a tel, http, https, or "This MUST be either a tel, http, https, or
mailto uri schema that customers can use to mailto uri schema that customers can use to
contact someone for SBOM information."; contact someone for SBOM information.";
} }
} }
case openc2 { }
leaf openc2-uri { choice vuln-retrieval-method {
description
"How to find vulnerability information";
case cloud {
leaf vuln-url {
type inet:uri;
description
"A statically located URL.";
}
}
case vuln-local-well-known {
leaf vuln-local-well-known {
type enumeration {
enum http {
description
"Use http (insecure) to retrieve vulnerability
information.";
}
enum https {
description
"Use https to retrieve vulnerability information.";
}
enum coap {
description
"Use COAP (insecure) to retrieve vulnerability
information";
}
enum coaps {
description
"Use COAPS to retrieve vulnerability information";
}
enum openc2 {
description
"Use OpenC2 endpoint.
This is https://{host}/.well-known/openc2";
}
}
description
"What communication protocol to use.";
}
}
case vuln-contact-info {
leaf contact-uri {
type inet:uri; type inet:uri;
mandatory true; mandatory true;
description description
"A link to the OpenC2 https RESTful "This MUST be either a tel, http, https, or
\t mapping. The OpenC2 protocol is then mailto uri schema that customers can use to
used to retrieve the SBOM"; contact someone for vulnerability information.";
} }
} }
} }
} }
} }
augment "/mud:mud" { augment "/mud:mud" {
description description
"Add extension for SBOMs."; "Add extension for software transparency.";
uses mud-sbom-extension; uses transparency-extension;
} }
} }
<CODE ENDS> <CODE ENDS>
5. Examples 5. Examples
In this example MUD file that uses a cloud service, the Frobinator In this example MUD file that uses a cloud service, the modelX
presents a location of the SBOM in a URL. Note, the ACLs in a MUD presents a location of the SBOM in a URL. Note, the ACLs in a MUD
file are NOT required, although they are a very good idea for IP- file are NOT required, although they are a very good idea for IP-
based devices. The first MUD file demonstrates how to get the SBOM based devices.
without ACLs, and the second has ACLs.
5.1. Without ACLS 5.1. Without ACLS
{
"ietf-mud:mud": {
"mud-version": 1,
"mud-url": "https://iot-device.example.com/dnsname",
"last-update": "2019-01-15T10:22:47+00:00",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "device that wants to talk to a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://frob.example.com/doc/frob2000",
"model-name": "Frobinator 2000",
"extensions" : [
"sbom"
],
"sboms" : { "sbom" : [
{
"version-info" : "FrobOS Release 1.1",
"sbom-url" : "https://frob.example.com/sboms/f20001.1",
}
]
}
}
}
5.2. Located on the Device This first MUD file demonstrates how to get SBOM and vulnerability
information without ACLs.
{ {
"ietf-mud:mud": { "ietf-mud:mud": {
"mud-version": 1, "mud-version": 1,
"mud-url": "https://iot-device.example.com/dnsname", "extensions": [
"last-update": "2019-01-15T10:22:47+00:00", "transparency"
"cache-validity": 48, ],
"is-supported": true, "transparency": {
"systeminfo": "device that wants to talk to a cloud service", "sboms": [
"mfg-name": "Example, Inc.", {
"documentation": "https://frob.example.com/doc/frob2000", "version-info": "ExOS1.1",
"model-name": "Frobinator 2000", "sbom-url": "https://iot.example.com/info/modelX/sbom.json"
"extensions" : [ }
"sbom" ],
], "vuln-url": "https://iot.example.com/info/modelX/csaf.json"
"sboms" : "sbom" : { },
"sbom-local" : "coaps:///.well-known/sbom", "mud-url": "https://iot.example.com/modelX.json",
} "mud-signature": "https://iot.example.com/modelX.p7s",
} "last-update": "2021-07-09T05:57:58+00:00",
} "cache-validity": 48,
"is-supported": true,
"systeminfo": "retrieving vuln and SBOM info via a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://iot.example.com/doc/modelX",
"model-name": "modelX"
}
}
5.3. SBOM Obtained from Contact Information The second example demonstrates that just SBOM information is
{ included.
"ietf-mud:mud": {
"mud-version": 1, {
"mud-url": "https://iot-device.example.com/dnsname", "ietf-mud:mud": {
"last-update": "2019-01-15T10:22:47+00:00", "mud-version": 1,
"cache-validity": 48, "extensions": [
"is-supported": true, "transparency"
"systeminfo": "device that wants to talk to a cloud service", ],
"mfg-name": "Example, Inc.", "transparency": {
"documentation": "https://frob.example.com/doc/frob2000", "sboms": [
"model-name": "Frobinator 2000", {
"extensions" : [ "version-info": "ExOS1.1",
"sbom" "sbom-url": "https://iot.example.com/info/modelX/sbom.json"
], }
"sboms" : { "sbom" : { ]
"contact-uri" : "mailto:sbom-requst@example.com", },
} "mud-url": "https://iot.example.com/modelX.json",
} "mud-signature": "https://iot.example.com/modelX.p7s",
} "last-update": "2021-07-09T06:03:21+00:00",
} "cache-validity": 48,
"is-supported": true,
"systeminfo": "retrieving vuln and SBOM info via a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://iot.example.com/doc/modelX",
"model-name": "modelX"
}
}
5.2. SBOM Located on the Device
In this example, the SBOM is retrieved from the device, while
vulnerability information is available from the cloud. This is
likely a common case, because vendors may learn of vulnerability
information more frequently than they update software.
{
"ietf-mud:mud": {
"mud-version": 1,
"extensions": [
"ol",
"transparency"
],
"ol": {
"owners": [
"Copyright (c) Example, Inc. 2021. All Rights Reserved"
],
"spdx-tag": "0BSD"
},
"transparency": {
"sbom-local-well-known": "https",
"vuln-url": "https://iot-device.example.com/info/modelX/csaf.json"
},
"mud-url": "https://iot-device.example.com/modelX.json",
"mud-signature": "https://iot-device.example.com/modelX.p7s",
"last-update": "2021-07-09T06:06:13+00:00",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "retrieving vuln and SBOM info via a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://iot-device.example.com/doc/modelX",
"model-name": "modelX"
}
}
5.3. Further contact required.
In this example, the network manager must take further steps to
retrieve SBOM information. Vulnerability information is still
available.
{
"ietf-mud:mud": {
"mud-version": 1,
"extensions": [
"transparency"
],
"transparency": {
"contact-info": "https://iot-device.example.com/contact-info.html",
"vuln-url": "https://iot-device.example.com/info/modelX/csaf.json"
},
"mud-url": "https://iot-device.example.com/modelX.json",
"mud-signature": "https://iot-device.example.com/modelX.p7s",
"last-update": "2021-07-09T06:16:42+00:00",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "retrieving vuln and SBOM info via a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://iot-device.example.com/doc/modelX",
"model-name": "modelX"
}
}
5.4. With ACLS 5.4. With ACLS
{ Finally, here is a complete example where the device provides SBOM
"ietf-mud:mud": { and vulnerability information, as well as access-control information.
"mud-version": 1,
"mud-url": "https://iot-device.example.com/dnsname",
"last-update": "2019-01-15T10:22:47+00:00",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "device that wants to talk to a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://frob.example.com/doc/frob2000",
"model-name": "Frobinator 2000",
"extensions" : [
"sbom"
],
"sboms" : "sbom" : [
{
"version-info" : "FrobOS Release 1.1",
"sbom-url" : "https://frob.example.com/sboms/f20001.1",
},
],
},
"from-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-96898-v4fr"
},
{
"name": "mud-96898-v6fr"
}
]
}
},
"to-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-96898-v4to"
},
{
"name": "mud-96898-v6to"
}
]
}
}
},
"ietf-access-control-list:acls": {
"acl": [
{
"name": "mud-96898-v4to",
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name": "cl0-todev",
"matches": {
"ipv4": {
"ietf-acldns:src-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
},
{
"name": "mud-96898-v4fr",
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name": "cl0-frdev",
"matches": {
"ipv4": {
"ietf-acldns:dst-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
},
{
"name": "mud-96898-v6to",
"type": "ipv6-acl-type",
"aces": {
"ace": [
{
"name": "cl0-todev",
"matches": {
"ipv6": {
"ietf-acldns:src-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
},
{
"name": "mud-96898-v6fr",
"type": "ipv6-acl-type",
"aces": {
"ace": [
{
"name": "cl0-frdev",
"matches": {
"ipv6": {
"ietf-acldns:dst-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
] {
} "ietf-mud:mud": {
} "mud-version": 1,
] "extensions": [
} "transparency"
} ],
"transparency": {
"sboms": [
{
"version-info": "ExOS1.1",
"sbom-url": "https://iot.example.com/info/modelX/sbom.json"
}
],
"vuln-url": "https://iot.example.com/info/modelX/csaf.json"
},
"mud-url": "https://iot.example.com/modelX.json",
"mud-signature": "https://iot.example.com/modelX.p7s",
"last-update": "2021-07-09T06:19:39+00:00",
"cache-validity": 48,
"is-supported": true,
"systeminfo": "retrieving vuln and SBOM info via a cloud service",
"mfg-name": "Example, Inc.",
"documentation": "https://iot.example.com/doc/modelX",
"model-name": "modelX",
"from-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-15060-v4fr"
}
]
}
},
"to-device-policy": {
"access-lists": {
"access-list": [
{
"name": "mud-15060-v4to"
}
]
}
}
},
"ietf-access-control-list:acls": {
"acl": [
{
"name": "mud-15060-v4to",
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name": "cl0-todev",
"matches": {
"ipv4": {
"ietf-acldns:src-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
},
{
"name": "mud-15060-v4fr",
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name": "cl0-frdev",
"matches": {
"ipv4": {
"ietf-acldns:dst-dnsname": "cloud.example.com"
}
},
"actions": {
"forwarding": "accept"
}
}
]
}
}
]
}
}
At this point, the management system can attempt to retrieve the At this point, the management system can attempt to retrieve the
SBOM, and determine which format is in use through the content-type SBOM, and determine which format is in use through the content-type
header on the response to a GET request. header on the response to a GET request, independently repeat the
process for vulnerability information, and apply ACLs, as
appropriate.
6. Security Considerations 6. Security Considerations
SBOMs provide an inventory of software. If firmware is available to SBOMs provide an inventory of software. If firmware is available to
an attacker, the attacker may well already be able to derive this an attacker, the attacker may well already be able to derive this
very same software inventory. Manufacturers MAY restrict access to very same software inventory. Manufacturers MAY restrict access to
SBOM information using appropriate authorization semantics within SBOM information using appropriate authorization semantics within
HTTP. In particular, if a system attempts to retrieve an SBOM via HTTP. In particular, if a system attempts to retrieve an SBOM via
HTTP and the client is not authorized, the server MUST produce an HTTP and the client is not authorized, the server MUST produce an
appropriate error, with instructions on how to register a particular appropriate error, with instructions on how to register a particular
skipping to change at page 13, line 40 skipping to change at page 18, line 5
Another risk is a skew in the SBOM listing and the actual software Another risk is a skew in the SBOM listing and the actual software
inventory of a device/container. For example, a manufacturer may inventory of a device/container. For example, a manufacturer may
update the SBOM on its server, but an individual device has not be update the SBOM on its server, but an individual device has not be
upgraded yet. This may result in an incorrect policy being applied upgraded yet. This may result in an incorrect policy being applied
to a device. A unique mapping of a device's firmware version and its to a device. A unique mapping of a device's firmware version and its
SBOM can minimize this risk. SBOM can minimize this risk.
To further mitigate attacks against a device, manufacturers SHOULD To further mitigate attacks against a device, manufacturers SHOULD
recommend access controls through the normal MUD mechanism. recommend access controls through the normal MUD mechanism.
Vulnerability information is generally made available to such
databases as NIST's National Vulnerability Database. It is possible
that vendor may wish to release information early to some customers.
We do not discuss here whether that is a good idea, but if it is
employed, then appropriate access controls and authoration would be
applied to the vulnerability resource.
7. IANA Considerations 7. IANA Considerations
7.1. MUD Extension 7.1. MUD Extension
The IANA is requested to add "controller-candidate" to the MUD The IANA is requested to add "transparency" to the MUD extensions
extensions registry as follows: registry as follows:
Extension Name: sbom Extension Name: transparency
Standard reference: This document Standard reference: This document
7.2. Well-Known Prefix 7.2. Well-Known Prefix
The following well known URI is requested in accordance with The following well known URIs are requested in accordance with
[RFC8615]: [RFC8615]:
URI suffix: "sbom" URI suffix: "sbom"
Change controller: "IETF" Change controller: "IETF"
Specification document: This memo Specification document: This memo
Related information: See ISO/IEC 19970-2 and SPDX.org Related information: See ISO/IEC 19970-2 and SPDX.org
URI suffix: "openc2"
Change controller: "IETF"
Specification document: This memo
Related information: OpenC2 Project
URI suffix: "vuln"
Change controller: "IETF"
Specification document: This memo
Related information: OASIS.ORG's CSAF project
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
skipping to change at page 14, line 39 skipping to change at page 19, line 20
Description Specification", RFC 8520, Description Specification", RFC 8520,
DOI 10.17487/RFC8520, March 2019, DOI 10.17487/RFC8520, March 2019,
<https://www.rfc-editor.org/info/rfc8520>. <https://www.rfc-editor.org/info/rfc8520>.
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
<https://www.rfc-editor.org/info/rfc8615>. <https://www.rfc-editor.org/info/rfc8615>.
8.2. Informative References 8.2. Informative References
[CSAF] OASIS, "Common Security Advisory Format", July 2021,
<https://github.com/oasis-tcs/csaf>.
[CVRF] Santos, O., Ed., "Common Vulnerability Reporting Framework
(CVRF) Version 1.2", September 2017, <http://docs.oasis-
open.org/csaf/csaf-cvrf/v1.2/csaf-cvrf-v1.2.pdf>.
[CycloneDX12] [CycloneDX12]
cylonedx.org, "CycloneDX XML Reference v1.2", May 2020. cylonedx.org, "CycloneDX XML Reference v1.2", May 2020.
[OpenC2] Lemire, D., Ed., "Specification for Transfer of OpenC2 [OpenC2] Lemire, D., Ed., "Specification for Transfer of OpenC2
Messages via HTTPS Version 1.0", July 2019, Messages via HTTPS Version 1.0", July 2019,
<https://docs.oasis-open.org/openc2/open-impl-https/v1.0/ <https://docs.oasis-open.org/openc2/open-impl-https/v1.0/
open-impl-https-v1.0.html>. open-impl-https-v1.0.html>.
[SPDX] The Linux Foundation, "SPDX Specification 2.1", 2016. [SPDX] The Linux Foundation, "SPDX Specification 2.1", 2016.
Appendix A. Changes from Earlier Versions Appendix A. Changes from Earlier Versions
Draft -02:
* include vulnerability information
Draft -01:
* some modest changes
Draft -00: Draft -00:
* Initial revision * Initial revision
Authors' Addresses Authors' Addresses
Eliot Lear Eliot Lear
Cisco Systems Cisco Systems
Richtistrasse 7 Richtistrasse 7
CH-8304 Wallisellen CH-8304 Wallisellen
Switzerland Switzerland
Phone: +41 44 878 9200 Phone: +41 44 878 9200
Email: lear@cisco.com Email: lear@cisco.com
Scott Rose Scott Rose
 End of changes. 59 change blocks. 
327 lines changed or deleted 492 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/