draft-ietf-opsawg-sbom-access-04.txt | draft-ietf-opsawg-sbom-access-05.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: 9 July 2022 NIST | Expires: 7 September 2022 NIST | |||
5 January 2022 | 6 March 2022 | |||
Discovering and Retrieving Software Transparency and Vulnerability | Discovering and Retrieving Software Transparency and Vulnerability | |||
Information | Information | |||
draft-ietf-opsawg-sbom-access-04 | draft-ietf-opsawg-sbom-access-05 | |||
Abstract | Abstract | |||
To improve cybersecurity posture, automation is necessary to locate | To improve cybersecurity posture, automation is necessary to locate | |||
what software is running on a device, whether that software has known | what software is running on a device, whether that software has known | |||
vulnerabilities, and what, if any recommendations suppliers may have. | vulnerabilities, and what, if any recommendations suppliers may have. | |||
This memo specifies a model to provide access to this information. | This memo specifies a model to provide access to this information. | |||
It may optionally be discovered through manufacturer usage | It may optionally be discovered through manufacturer usage | |||
descriptions. | descriptions. | |||
skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
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 9 July 2022. | This Internet-Draft will expire on 7 September 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Cases Not Addressed . . . . . . . . . . . . . . . . . . . 5 | 1.1. How This Information Is Retrieved . . . . . . . . . . . . 5 | |||
1.2. How This Information Is Retrieved . . . . . . . . . . . . 5 | 1.2. Formats . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.3. Formats . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.3. Discussion points . . . . . . . . . . . . . . . . . . . . 5 | |||
1.4. Discussion points . . . . . . . . . . . . . . . . . . . . 6 | ||||
2. The well-known transparency endpoint set . . . . . . . . . . 6 | 2. The well-known transparency endpoint set . . . . . . . . . . 6 | |||
3. The mud-transparency extension model extension . . . . . . . 6 | 3. The mud-transparency extension model extension . . . . . . . 6 | |||
4. The mud-sbom augmentation to the MUD YANG model . . . . . . . 7 | 4. The mud-sbom augmentation to the MUD YANG model . . . . . . . 6 | |||
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.1. Without ACLS . . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. Without ACLS . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.2. SBOM Located on the Device . . . . . . . . . . . . . . . 12 | 5.2. SBOM Located on the Device . . . . . . . . . . . . . . . 12 | |||
5.3. Further contact required. . . . . . . . . . . . . . . . . 13 | 5.3. Further contact required. . . . . . . . . . . . . . . . . 13 | |||
5.4. With ACLS . . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.4. With ACLS . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
7.1. MUD Extension . . . . . . . . . . . . . . . . . . . . . . 17 | 7.1. MUD Extension . . . . . . . . . . . . . . . . . . . . . . 18 | |||
7.2. YANG Registration . . . . . . . . . . . . . . . . . . . . 17 | 7.2. YANG Registration . . . . . . . . . . . . . . . . . . . . 18 | |||
7.3. Well-Known Prefix . . . . . . . . . . . . . . . . . . . . 17 | 7.3. Well-Known Prefix . . . . . . . . . . . . . . . . . . . . 18 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 18 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 18 | 9.2. Informative References . . . . . . . . . . . . . . . . . 20 | |||
Appendix A. Changes from Earlier Versions . . . . . . . . . . . 19 | Appendix A. Changes from Earlier Versions . . . . . . . . . . . 20 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
1. Introduction | 1. Introduction | |||
A number of activities have been working to improve visibility to | A number of activities have been working to improve visibility to | |||
what software is running on a system, and what vulnerabilities that | what software is running on a system, and what vulnerabilities that | |||
software may have[EO2021]. | software may have[EO2021]. | |||
Put simply, we seek to answer two classes of questions *at scale*: | Put simply, we seek to answer two classes of questions *at scale*: | |||
* Is this system vulnerable to a particular vulnerability? | * Is this system vulnerable to a particular vulnerability? | |||
skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
well-known URI to retrieve a system's SBOM or vulnerability | well-known URI to retrieve a system's SBOM or vulnerability | |||
information. Further queries may be necessary based on the content | information. Further queries may be necessary based on the content | |||
and structure of the response. | and structure of the response. | |||
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. How This Information Is Retrieved | |||
[ This section to be removed prior to publication ] | ||||
A separate use case may be addressed in future versions of this | ||||
document: | ||||
* Related to the application layer, software as a service may | ||||
involve multiple backend systems, depending on many factors. One | ||||
example might be a large cloud-based service that offers | ||||
spreadsheets, email, and document authoring and management. | ||||
Depending on what service is being used, a different set of back | ||||
end services may in turn be invoking different software that | ||||
should be listed. | ||||
The reason why this use case isn't addressed here is that it may be | ||||
better addressed inline within HTML. Further discussion is required. | ||||
1.2. How This Information Is Retrieved | ||||
For devices that can emit a URL or can establish a well-known URI, | For devices that can emit a URL or can establish a well-known URI, | |||
the mechanism may be highly automated. For devices that have a URL | the mechanism may be highly automated. For devices that have a URL | |||
in either their documentation or within a QR code on a box, the | 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 | mechanism is semi-automated (someone has to scan the QR code or enter | |||
the URL). | the URL). | |||
Note that vulnerability and SBOM information is likely to change at | Note that vulnerability and SBOM information is likely to change at | |||
different rates. The MUD semantics provide a way for manufacturers | different rates. The MUD semantics provide a way for manufacturers | |||
to control how often tooling should check for those changes through | to control how often tooling should check for those changes through | |||
the cache-validity node. | the cache-validity node. | |||
1.3. Formats | 1.2. Formats | |||
There are multiple ways to express both SBOMs and vulnerability | There are multiple ways to express both SBOMs and vulnerability | |||
information. When these are retrieved either directly from the | information. When these are retrieved either directly from the | |||
device or directly from a web server, tools will need to observe the | device or directly from a web server, tools will need to observe the | |||
content-type header to determine precisely which format is being | content-type header to determine precisely which format is being | |||
transmitted. Because IoT devices in particular have limited | transmitted. Because IoT devices in particular have limited | |||
capabilities, use of a specific Accept: header in HTTP or the Accept | capabilities, use of a specific Accept: header in HTTP or the Accept | |||
Option in CoAP is NOT RECOMMENDED. Instead, backend tooling is | Option in CoAP is NOT RECOMMENDED. Instead, backend tooling is | |||
encouraged to support all known formats, and SHOULD silently discard | encouraged to support all known formats, and SHOULD silently discard | |||
SBOM information sent with a media type that is not understood. | SBOM information sent with a media type that is not understood. | |||
Some formats may support both vulnerability and software inventory | Some formats may support both vulnerability and software inventory | |||
information. When both vulnerability and software inventory | information. When both vulnerability and software inventory | |||
information is available from the same location, both sbom and vuln | information is available from the same location, both sbom and vuln | |||
nodes MUST indicate that. Network management systems retrieving this | nodes MUST indicate that. Network management systems retrieving this | |||
information MUST take note that the identical resource is being | information MUST take note that the identical resource is being | |||
retrieved rather than retrieving it twice. | retrieved rather than retrieving it twice. | |||
1.4. Discussion points | 1.3. 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? | |||
skipping to change at page 9, line 17 ¶ | skipping to change at page 8, line 46 ¶ | |||
"A statically located URI."; | "A statically located URI."; | |||
} | } | |||
} | } | |||
} | } | |||
case local-well-known { | case local-well-known { | |||
leaf sbom-local-well-known { | leaf sbom-local-well-known { | |||
type enumeration { | type enumeration { | |||
enum http { | enum http { | |||
description | description | |||
"Use http (insecure) to retrieve | "Use http (insecure) to retrieve | |||
SBOM information."; | SBOM information. This method is NOT RECOMMENDED, | |||
but may be unavoidable for certain classes of | ||||
deployment, where TLS has not or cannot be implemented"; | ||||
} | } | |||
enum https { | enum https { | |||
description | description | |||
"Use https (secure) to retrieve SBOM information."; | "Use https (secure) to retrieve SBOM information."; | |||
} | } | |||
enum coap { | enum coap { | |||
description | description | |||
"Use COAP (insecure) to retrieve SBOM"; | "Use COAP (insecure) to retrieve SBOM. This method | |||
is NOT RECOMMENDED, although it may be unavoidable | ||||
for certain classes of implementations/deployments."; | ||||
} | } | |||
enum coaps { | enum coaps { | |||
description | description | |||
"Use COAPS (secure) to retrieve SBOM"; | "Use COAPS (secure) to retrieve SBOM"; | |||
} | } | |||
enum openc2 { | enum openc2 { | |||
description | description | |||
"Use OpenC2 endpoint. | "Use OpenC2 endpoint. | |||
This is https://{host}/.well-known/openc2"; | This is https://{host}/.well-known/openc2"; | |||
} | } | |||
skipping to change at page 16, line 32 ¶ | skipping to change at page 16, line 32 ¶ | |||
} | } | |||
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, independently repeat the | header on the response to a GET request, independently repeat the | |||
process for vulnerability information, and apply ACLs, as | process for vulnerability information, and apply ACLs, as | |||
appropriate. | appropriate. | |||
6. Security Considerations | 6. Security Considerations | |||
The YANG module specified in this document defines a schema for data | ||||
that is designed to be accessed via network management protocols such | ||||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | ||||
is the secure transport layer, and the mandatory-to-implement secure | ||||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | ||||
is HTTPS, and the mandatory-to-implement secure transport is TLS | ||||
[RFC8446]. | ||||
N.B., for MUD, the mandatory method of retrieval is TLS. | ||||
The Network Configuration Access Control Model (NACM) [RFC8341] | ||||
provides the means to restrict access for particular NETCONF or | ||||
RESTCONF users to a preconfigured subset of all available NETCONF or | ||||
RESTCONF protocol operations and content. | ||||
There are a number of data nodes defined in this YANG module that are | ||||
writable/creatable/deletable (i.e., config true, which is the | ||||
default). These data nodes may be considered sensitive or vulnerable | ||||
in some network environments. Write operations (e.g., edit-config) | ||||
to these data nodes without proper protection can have a negative | ||||
effect on network operations. These are the subtrees and data nodes | ||||
and their sensitivity/vulnerability: | ||||
The ietf-mud-transparency module has no operational impact on the | ||||
element itself, and is used to discover state information that may be | ||||
available on or off the element. In as much as the module itself is | ||||
made writeable, this only indicates a change in how to retrieve what | ||||
read-only elements. However, that does not mean there are no risks. | ||||
These are discussed below, and are applicable to all nodes within the | ||||
transparency container. | ||||
If an attacker modifies the elements, they may misdirect automation | ||||
to retrieve a different set of URLs than was intended by the | ||||
designer. This in turn leads to two specific sets of risks: | ||||
* the information retrieved would be false. | ||||
* the URLs themselves point to malware. | ||||
To address either risk, any change in a URL, and in particular to the | ||||
authority section, should be treated with some suspicion. One | ||||
mitigation would be to test any cloud-based URL against a reputation | ||||
service. | ||||
Some of the readable data nodes in this YANG module may be considered | ||||
sensitive or vulnerable in some network environments. It is thus | ||||
important to control read access (e.g., via get, get-config, or | ||||
notification) to these data nodes. These are the subtrees and data | ||||
nodes and their sensitivity/vulnerability: | ||||
SBOMs provide an inventory of software. If software is available to | SBOMs provide an inventory of software. If software 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 | |||
client. One example may be to issue a certificate to the client for | client. One example may be to issue a certificate to the client for | |||
this purpose after a registration process has taken place. Another | this purpose after a registration process has taken place. Another | |||
example would involve the use of OAUTH in combination with a | example would involve the use of OAUTH in combination with a | |||
federations of SBOM servers. | federations of SBOM servers. | |||
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 been | update the SBOM on its server, but an individual device has not been | |||
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 software version and its | to a device. A unique mapping of a device's software 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. | |||
Vulnerability information is generally made available to such | Vulnerability information is generally made available to such | |||
databases as NIST's National Vulnerability Database. It is possible | databases as NIST's National Vulnerability Database. It is possible | |||
that vendor may wish to release information early to some customers. | 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 | We do not discuss here whether that is a good idea, but if it is | |||
employed, then appropriate access controls and authorization would be | employed, then appropriate access controls and authorization SHOULD | |||
applied to the vulnerability resource. | 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 "transparency" to the MUD extensions | The IANA is requested to add "transparency" to the MUD extensions | |||
registry as follows: | registry as follows: | |||
Extension Name: transparency | Extension Name: transparency | |||
Standard reference: This document | Standard reference: This document | |||
skipping to change at page 18, line 19 ¶ | skipping to change at page 19, line 29 ¶ | |||
9. References | 9. References | |||
9.1. Normative References | 9.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>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<https://www.rfc-editor.org/info/rfc6991>. | <https://www.rfc-editor.org/info/rfc6991>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Access Control Model", STD 91, RFC 8341, | ||||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
<https://www.rfc-editor.org/info/rfc8446>. | ||||
[RFC8520] Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage | [RFC8520] Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage | |||
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>. | |||
9.2. Informative References | 9.2. Informative References | |||
End of changes. 18 change blocks. | ||||
45 lines changed or deleted | 103 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/ |