<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-opsawg-sbom-access-1htmlwdiff 8" number="9472" submissionType="IETF" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" updates="" obsoletes="" xml:lang="en" prepTime="2023-10-10T11:04:53" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-opsawg-sbom-access-1htmlwdiff 8" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9472" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="A YANG Data Model for SBOMs &amp; Vuln. Info">A YANG Data Model for Reporting Software Bills of Materials (SBOMs) and Vulnerability Information</title>
    <seriesInfo name="RFC" value="9472" stream="IETF"/>
    <author initials="E." surname="Lear" fullname="Eliot Lear">
      <organization showOnFrontPage="true">Cisco Systems</organization>
      <address>
        <postal>
          <street>Richtistrasse 7</street>
          <city>Wallisellen</city>
          <code>8304</code>
          <country>Switzerland</country>
        </postal>
        <phone>+41 44 878 9200</phone>
        <email>lear@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Rose" fullname="Scott Rose">
      <organization showOnFrontPage="true">NIST</organization>
      <address>
        <postal>
          <street>100 Bureau Dr.</street>
          <city>Gaithersburg</city>
          <region>MD</region>
          <code>20899</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 301-975-8439</phone>
        <email>scott.rose@nist.gov</email>
      </address>
    </author>
    <date month="10" year="2023"/>
    <area>ops</area>
    <workgroup>opsawg</workgroup>
    <keyword>sbom</keyword>
    <keyword>discovery</keyword>
    <keyword>mud</keyword>
    <keyword>vex</keyword>
    <keyword>chaff</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">To improve cybersecurity posture, automation is necessary to locate
      the software a device is using, whether that software has known
      vulnerabilities, and what, if any, recommendations suppliers may have.
      This memo extends the Manufacturer User Description (MUD) YANG schema to
      provide the locations of software bills of materials (SBOMs) and
      vulnerability information by introducing a transparency schema.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9472" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2023 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-how-this-information-is-ret">How This Information Is Retrieved</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.3">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.3.1"><xref derivedContent="1.3" format="counter" sectionFormat="of" target="section-1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-formats">Formats</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-well-known-transparency">The Well-Known Transparency Endpoint Set</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-mud-transparency-extens">The mud-transparency Extension</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-the-mud-sbom-augmentation-t">The mud-sbom Augmentation to the MUD YANG Data Model</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples">Examples</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-without-acls">Without ACLS</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sbom-located-on-the-device">SBOM Located on the Device</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-further-contact-required">Further Contact Required</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-with-acls">With ACLS</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-mud-extension">MUD Extension</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-yang-registration">YANG Registration</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-well-known-prefix">Well-Known Prefix</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">A number of activities have taken place to improve the visibility of
      what software is running on a system and what vulnerabilities that
      software may have <xref target="EO2021" format="default" sectionFormat="of" derivedContent="EO2021"/>.</t>
      <t indent="0" pn="section-1-2">Put simply, this memo seeks to answer two classes of questions for
      tens of thousands of devices and a large variety of device types.  Those
      questions are as follows:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-3">
        <li pn="section-1-3.1">Is this system susceptible to a particular vulnerability?</li>
        <li pn="section-1-3.2">Which devices in a particular environment contain vulnerabilities
        that require some action?</li>
      </ul>
      <t indent="0" pn="section-1-4">This memo doesn't specify the format of this information but rather
      only how to locate and retrieve these objects.  That is, the model is
      intended to facilitate discovery and on its own provides no access to
      the underlying data.</t>
      <t indent="0" pn="section-1-5">Software bills of materials (SBOMs) are descriptions of what
      software, including versioning and dependencies, a device contains.
      There are different SBOM formats such as Software Package Data Exchange
      <xref target="SPDX" format="default" sectionFormat="of" derivedContent="SPDX"/> or CycloneDX <xref target="CycloneDX15" format="default" sectionFormat="of" derivedContent="CycloneDX15"/>.</t>
      <t indent="0" pn="section-1-6">System vulnerabilities may be similarly described using several data
      formats, including the aforementioned CycloneDX, the Common Vulnerability
      Reporting Framework <xref target="CVRF" format="default" sectionFormat="of" derivedContent="CVRF"/>, and the Common Security Advisory
      Format <xref target="CSAF" format="default" sectionFormat="of" derivedContent="CSAF"/>.  This information is typically used to
      report the state of any known vulnerabilities on a system to administrators.</t>
      <t indent="0" pn="section-1-7">SBOM and vulnerability information can be used in concert with other
      sources of vulnerability information.  A network management tool could
      discover that a system uses a particular set of software components,
      searches a national vulnerability database to determine known
      vulnerabilities, and applies information provided by the manufacturer
      through this mechanism to produce a vulnerability report.  That 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.</t>
      <t indent="0" pn="section-1-8">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.</t>
      <t indent="0" pn="section-1-9">Note that SBOM formats 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.</t>
      <t indent="0" pn="section-1-10">This memo does not specify how vulnerability information may be
retrieved directly from the endpoint.  That is because vulnerability
information changes occur to software updates at different rates.
However, some SBOM formats may also contain vulnerability information.</t>
      <t indent="0" pn="section-1-11">SBOMs and vulnerability information are advertised and retrieved
through the use of a YANG augmentation of the Manufacturer User
Description (MUD) model <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/>.  Note that the schema creates a
grouping that can also be used independently of MUD.  Moreover, other
MUD features, such as access controls, needn't be present.</t>
      <t indent="0" pn="section-1-12">The mechanisms specified in this document are meant to address two
use cases:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1-13">
        <li pn="section-1-13.1">A network-layer management system retrieving information from an
        Internet of Things (IoT) device as part of its ongoing life
        cycle. Such devices may or may not have query interfaces
        available.</li>
        <li pn="section-1-13.2">An application-layer management system retrieving vulnerability or
        SBOM information in order to evaluate the posture of an application
        server of some form.  These application servers may themselves be
        containers or hypervisors.  Discovery of the topology of a server is
        beyond the scope of this memo.</li>
      </ul>
      <t indent="0" pn="section-1-14">To satisfy these two key use cases, objects may be found in one of
three methods:</t>
      <ol spacing="normal" indent="adaptive" start="1" type="1" pn="section-1-15">
        <li pn="section-1-15.1" derivedCounter="1.">on the devices themselves</li>
        <li pn="section-1-15.2" derivedCounter="2.">on a website (e.g., via a URI)</li>
        <li pn="section-1-15.3" derivedCounter="3.">through some form of out-of-band contact with the supplier</li>
      </ol>
      <t indent="0" pn="section-1-16">Using the first method, devices will have interfaces that permit
      direct retrieval.  Examples of these interfaces might be an HTTP <xref target="RFC9110" format="default" sectionFormat="of" derivedContent="RFC9110"/> or Constrained Application Protocol (CoAP) <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/> endpoint for retrieval.  There may also be private
      interfaces as well.</t>
      <t indent="0" pn="section-1-17">Using the second method, when a device does not have an appropriate
      retrieval interface, but one is directly available from the
      manufacturer, a URI to that information is discovered through interfaces
      such as MUD via DHCP or bootstrapping and ownership transfer
      mechanisms.</t>
      <t indent="0" pn="section-1-18">Using the third method, a supplier may wish to make an SBOM or
      vulnerability information available under certain circumstances and may
      need to individually evaluate requests.  The result of that evaluation
      might be the SBOM, the vulnerability itself, a restricted URL, or no
      access.</t>
      <t indent="0" pn="section-1-19">To enable application-layer discovery, this memo defines a well-known
      URI <xref target="RFC8615" format="default" sectionFormat="of" derivedContent="RFC8615"/>.  Management or orchestration tools can
      query this well-known URI to retrieve a system's SBOM information.
      Further queries may be necessary based on the content and structure of
      the response.</t>
      <section anchor="requirements-language" numbered="true" removeInRFC="false" toc="include" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1"> The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
        "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
        "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
        "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document
        are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they
        appear in all capitals, as shown here.
        </t>
      </section>
      <section anchor="how-this-information-is-retrieved" numbered="true" removeInRFC="false" toc="include" pn="section-1.2">
        <name slugifiedName="name-how-this-information-is-ret">How This Information Is Retrieved</name>
        <t indent="0" pn="section-1.2-1"><xref target="the-mud-sbom-augmentation-to-the-mud-yang-model" format="default" sectionFormat="of" derivedContent="Section 4"/>
        describes a data model to extend the MUD file format to carry SBOM and
        vulnerability information. <xref target="RFC8520" sectionFormat="of" section="1.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8520#section-1.5" derivedContent="RFC8520"/> describes mechanisms by which devices can emit a URL
        to point to this file.  Additionally, devices can share this URL
        either through documentation or within a QR code on a box.  <xref target="the-well-known-transparency-endpoint-set" format="default" sectionFormat="of" derivedContent="Section 2"/> describes a
        well-known URL from which an SBOM could be served from the local
        device.</t>
        <t indent="0" pn="section-1.2-2">Note that vulnerability and SBOM information are likely to change
        at different rates.  MUD's cache-validity node provides a way for
        manufacturers to control how often tooling should check for those
        changes through the cache-validity node.</t>
      </section>
      <section anchor="formats" numbered="true" removeInRFC="false" toc="include" pn="section-1.3">
        <name slugifiedName="name-formats">Formats</name>
        <t indent="0" pn="section-1.3-1">There are multiple ways to express both SBOMs and vulnerability
        information.  When these are retrieved either from the device or from
        a remote web server, tools will need to observe the Content-Type
        header to determine precisely which format is being transmitted.
        Because IoT devices in particular have limited capabilities, use of a
        specific Accept: header in HTTP or the Accept Option in CoAP is
        <bcp14>NOT RECOMMENDED</bcp14>.  Instead, backend tooling is
        encouraged to support all known formats and <bcp14>SHOULD</bcp14>
        silently discard SBOM information sent with a media type that is not
        understood.</t>
        <t indent="0" pn="section-1.3-2">If multiple SBOMs are intended to be supported in the same file,
        the media type should properly reflect that.  For example, one might
        make use of application/{someformat}+json-seq.  It is left to those
        supporting those formats to make the appropriate registrations in this
        case.</t>
        <t indent="0" pn="section-1.3-3">Some formats may support both vulnerability and software inventory
        information.  When both vulnerability and software inventory
        information is available from the same URL, both sbom-url and members
        of the vuln-url list <bcp14>MUST</bcp14> indicate that. Network
        management systems <bcp14>MUST</bcp14> take note of when the SBOM and
        vulnerability information are accessible via the same resource and not
        retrieve the resource a second time.</t>
      </section>
    </section>
    <section anchor="the-well-known-transparency-endpoint-set" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-the-well-known-transparency">The Well-Known Transparency Endpoint Set</name>
      <t indent="0" pn="section-2-1">A well-known endpoint is defined:</t>
      <t indent="3" pn="section-2-2">"/.well-known/sbom" retrieves an SBOM
      </t>
      <t indent="0" pn="section-2-3">As discussed previously, the precise format of a response is based on
the Content-Type provided.</t>
    </section>
    <section anchor="the-mud-transparency-extension-model-extension" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-the-mud-transparency-extens">The mud-transparency Extension</name>
      <t indent="0" pn="section-3-1">We now formally define the mud-transparency extension; this is done in two parts.</t>
      <t indent="0" pn="section-3-2">First, the extension name "transparency" is listed in the
      "extensions" array of the MUD file.  Note that this schema extension is
      intended to be used wherever it might be appropriate (e.g., not just
      with MUD).</t>
      <t indent="0" pn="section-3-3">Second, the "mud" container is augmented with a list of SBOM sources.</t>
      <t indent="0" pn="section-3-4">This is done as follows:</t>
      <sourcecode type="yangtree" markers="false" pn="section-3-5">
module: ietf-mud-transparency

  augment /mud:mud:
    +--rw transparency
       +--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?   identityref
       |  +--:(sbom-contact-info)
       |     +--rw sbom-contact-uri?        inet:uri
       +--rw sbom-archive-list?             inet:uri
       +--rw (vuln-retrieval-method)?
          +--:(cloud)
          |  +--rw vuln-url*                inet:uri
          +--:(vuln-contact-info)
             +--rw vuln-contact-uri?        inet:uri
</sourcecode>
      <t indent="0" pn="section-3-6">See <xref target="RFC8340" format="default" sectionFormat="of" derivedContent="RFC8340"/> for a description of YANG trees.</t>
    </section>
    <section anchor="the-mud-sbom-augmentation-to-the-mud-yang-model" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-the-mud-sbom-augmentation-t">The mud-sbom Augmentation to the MUD YANG Data Model</name>
      <t indent="0" pn="section-4-1">This YANG module references <xref target="RFC6991" format="default" sectionFormat="of" derivedContent="RFC6991"/>, <xref target="RFC7231" format="default" sectionFormat="of" derivedContent="RFC7231"/>, <xref target="RFC7252" format="default" sectionFormat="of" derivedContent="RFC7252"/>, <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/>, and <xref target="RFC9110" format="default" sectionFormat="of" derivedContent="RFC9110"/>.</t>
      <sourcecode name="ietf-mud-transparency@2023-10-10.yang" type="yang" markers="true" pn="section-4-2">
module ietf-mud-transparency {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-mud-transparency";
  prefix mudtx;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-mud {
    prefix mud;
    reference
      "RFC 8520: Manufacturer Usage Description Specification";
  }

  organization
    "IETF OPSAWG (Ops Area) Working Group";
  contact
    "WG Web: &lt;https://datatracker.ietf.org/wg/opsawg/&gt;
     WG List: &lt;opsawg@ietf.org&gt;

     Editor: Eliot Lear &lt;lear@cisco.com&gt;
     Editor: Scott Rose &lt;scott.rose@nist.gov&gt;";
  description
    "This YANG module augments the ietf-mud model to provide for
     reporting of SBOMs and vulnerability information.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     Copyright (c) 2023 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Revised BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 9472
     (https://www.rfc-editor.org/info/rfc9472);
     see the RFC itself for full legal notices.";

  revision 2023-10-10 {
    description
      "Initial proposed standard.";
    reference
      "RFC 9472: A YANG Data Model for Reporting Software Bills
       of Materials (SBOMs) and Vulnerability Information";
  }

  identity local-type {
    description
      "Base identity for local well-known choices.";
  }

  identity http {
    base mudtx:local-type;
    description
      "Use http (RFC 7231) (insecure) to retrieve SBOM information.
        This method is NOT RECOMMENDED but may be unavoidable for
        certain classes of deployment where TLS has not or
        cannot be implemented.";
      reference
        "RFC 7231: Hypertext Transfer Protocol (HTTP/1.1):
         Semantics and Content";
  }

  identity https {
    base mudtx:local-type;
    description
      "Use https (secure) to retrieve SBOM information.  See
       RFC 9110.";
      reference
        "RFC 9110: HTTP Semantics";
  }

  identity coap {
    base mudtx:local-type;
    description
      "Use COAP (RFC 7252) (insecure) to retrieve SBOM.  This method
       is NOT RECOMMENDED, although it may be unavoidable
       for certain classes of implementations/deployments.";
      reference
        "RFC 7252: The Constrained Application Protocol (CoAP)";
  }

  identity coaps {
    base mudtx:local-type;
    description
      "Use COAPS (secure) to retrieve SBOM (RFC 7252).";
  }

  grouping transparency-extension {
    description
      "This grouping provides a means to describe the location of
       software bills of material and vulnerability descriptions.";
    container transparency {
      description
        "Container of methods to get SBOMs and vulnerability
         information.";
      choice sbom-retrieval-method {
        description
          "How to find SBOM information.";
        case cloud {
          list sboms {
            key "version-info";
            description
              "A list of SBOMs tied to different software
               or hardware versions.";
            leaf version-info {
              type string;
              description
                "The version to which this SBOM refers.";
            }
            leaf sbom-url {
              type inet:uri {
                pattern '((coaps?)|(https?)):.*';
              }
              description
                "A statically located URL.";
            }
          }
        }
        case local-well-known {
          leaf sbom-local-well-known {
            type identityref {
              base mudtx:local-type;
            }
            description
              "Which communication protocol to choose.";
          }
        }
        case sbom-contact-info {
          leaf sbom-contact-uri {
            type inet:uri {
              pattern '((mailto)|(https?)|(tel)):.*';
            }
            description
              "This MUST be a tel, an http, an https, or
               a mailto uri schema that customers can use to
               contact someone for SBOM information.";
          }
        }
      }
      leaf sbom-archive-list {
        type inet:uri;
        description
          "This URI returns a JSON list of URLs that consist of
           SBOMs that were previously published for this
           device.  Publication dates can be found inside
           the SBOMs.";
      }
      choice vuln-retrieval-method {
        description
          "How to find vulnerability information.";
        case cloud {
          leaf-list vuln-url {
            type inet:uri;
            description
              "List of statically located URLs that reference
               vulnerability information.";
          }
        }
        case vuln-contact-info {
          leaf vuln-contact-uri {
            type inet:uri {
              pattern '((mailto)|(https?)|(tel)):.*';
            }
            description
              "This MUST be a tel, an http, an https, or
               a mailto uri schema that customers can use to
               contact someone for vulnerability information.";
          }
        }
      }
    }
  }

  augment "/mud:mud" {
    description
      "Add extension for software transparency.";
    uses transparency-extension;
  }
}
</sourcecode>
    </section>
    <section anchor="examples" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-examples">Examples</name>
      <t indent="0" pn="section-5-1">In this example MUD file that uses a cloud service, the modelX
      presents a location of the SBOM in a URL.  Note that the Access Control
      Lists (ACLs) in a MUD file are NOT required, although they are a very
      good idea for IP-based devices.</t>
      <section anchor="without-acls" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-without-acls">Without ACLS</name>
        <t indent="0" pn="section-5.1-1">This first MUD file demonstrates how to get SBOM and
vulnerability information without ACLs.</t>
        <sourcecode type="json" markers="false" pn="section-5.1-2">
{
 "ietf-mud:mud": {
   "mud-version": 1,
   "extensions": [
     "transparency"
   ],
   "mudtx:transparency": {
     sboms: [ {
     "version-info": "1.2",
     "sbom-url": "https://iot.example.com/info/modelX/sbom.json"
     } ],
     "vuln-url" : [
       "https://iotd.example.com/info/modelX/csaf.json"
     ]
   },
   "mud-url": "https://iot.example.com/modelX.json",
   "mud-signature": "https://iot.example.com/modelX.p7s",
   "last-update": "2022-01-05T13:29:12+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"
 }
}</sourcecode>
        <t indent="0" pn="section-5.1-3">The second example demonstrates that just SBOM information is
        included from the cloud.</t>
        <sourcecode type="json" markers="false" pn="section-5.1-4">
{
 "ietf-mud:mud": {
   "mud-version": 1,
   "extensions": [
     "transparency"
   ],
   "mudtx:transparency": {
     sboms: [ {
     "version-info": "1.2",
     "sbom-url": "https://iot.example.com/info/modelX/sbom.json"
     } ],
   },
   "mud-url": "https://iot.example.com/modelX.json",
   "mud-signature": "https://iot.example.com/modelX.p7s",
   "last-update": "2022-01-05T13:29:12+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"
 }
}</sourcecode>
      </section>
      <section anchor="sbom-located-on-the-device" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-sbom-located-on-the-device">SBOM Located on the Device</name>
        <t indent="0" pn="section-5.2-1">In the next example, the SBOM is located on the device, and there
        is no vulnerability information provided.</t>
        <sourcecode type="json" markers="false" pn="section-5.2-2">
{
  "ietf-mud:mud": {
    "mud-version": 1,
    "extensions": [
      "transparency"
    ],
    "mudtx:transparency": {
      "sbom-local-well-known": "https"
    },
    "mud-url": "https://iot.example.com/modelX.json",
    "mud-signature": "https://iot.example.com/modelX.p7s",
    "last-update": "2022-01-05T13:29:47+00:00",
    "cache-validity": 48,
    "is-supported": true,
    "systeminfo": "retrieving SBOM info from a local source",
    "mfg-name": "Example, Inc.",
    "documentation": "https://iot.example.com/doc/modelX",
    "model-name": "modelX"
  }
}</sourcecode>
        <t indent="0" pn="section-5.2-3">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.</t>
        <sourcecode type="json" markers="false" pn="section-5.2-4">
{
 "ietf-mud:mud": {
   "mud-version": 1,
   "extensions": [
     "transparency"
   ],
   "mudtx:transparency": {
     "sbom-local-well-known": "https",
     "vuln-url" : [
       "https://iotd.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": "2022-01-05T13:25:14+00:00",
   "cache-validity": 48,
   "is-supported": true,
   "systeminfo": "mixed example: SBOM on device, vuln info in cloud",
   "mfg-name": "Example, Inc.",
   "documentation": "https://iot-device.example.com/doc/modelX",
   "model-name": "modelX"
 }
}</sourcecode>
      </section>
      <section anchor="further-contact-required" numbered="true" removeInRFC="false" toc="include" pn="section-5.3">
        <name slugifiedName="name-further-contact-required">Further Contact Required</name>
        <t indent="0" pn="section-5.3-1">In this example, the network manager must take further steps
to retrieve SBOM information.  Vulnerability information is
still available.</t>
        <sourcecode type="json" markers="false" pn="section-5.3-2">
{
"ietf-mud:mud": {
"mud-version": 1,
"extensions": [
  "transparency"
],
"mudtx:transparency": {
  "contact-info": "https://iot-device.example.com/contact-info.html",
    "vuln-url" : [
      "https://iotd.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"
}
}</sourcecode>
      </section>
      <section anchor="with-acls" numbered="true" removeInRFC="false" toc="include" pn="section-5.4">
        <name slugifiedName="name-with-acls">With ACLS</name>
        <t indent="0" pn="section-5.4-1">Finally, here is a complete example where the device provides
SBOM and vulnerability information as well as access control
information.</t>
        <sourcecode type="json" markers="false" pn="section-5.4-2">
{
 "ietf-mud:mud": {
   "mud-version": 1,
   "extensions": [
     "transparency"
   ],
   "mudtx:transparency": {
     "sbom-local-well-known": "https",
     "vuln-url" : [
       "https://iotd.example.com/info/modelX/csaf.json"
     ]
   },
   "mud-url": "https://iot.example.com/modelX.json",
   "mud-signature": "https://iot.example.com/modelX.p7s",
   "last-update": "2022-01-05T13:30:31+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-65443-v4fr"
         }
       ]
     }
   },
   "to-device-policy": {
     "access-lists": {
       "access-list": [
         {
           "name": "mud-65443-v4to"
         }
       ]
     }
   }
 },
 "ietf-access-control-list:acls": {
   "acl": [
     {
       "name": "mud-65443-v4to",
       "type": "ipv4-acl-type",
       "aces": {
         "ace": [
           {
             "name": "cl0-todev",
             "matches": {
               "ipv4": {
                 "ietf-acldns:src-dnsname": "iotserver.example.com"
               }
             },
             "actions": {
               "forwarding": "accept"
             }
           }
         ]
       }
     },
     {
       "name": "mud-65443-v4fr",
       "type": "ipv4-acl-type",
       "aces": {
         "ace": [
           {
             "name": "cl0-frdev",
             "matches": {
               "ipv4": {
                 "ietf-acldns:dst-dnsname": "iotserver.example.com"
               }
             },
             "actions": {
               "forwarding": "accept"
             }
           }
         ]
       }
     }
   ]
 }
}</sourcecode>
        <t indent="0" pn="section-5.4-3">At this point, the management system can attempt to retrieve the
        SBOM, determine which format is in use through the Content-Type
        header on the response to a GET request, independently repeat the
        process for vulnerability information, and apply ACLs as
        appropriate.</t>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">This document describes a schema for discovering the location of
      information relating to software transparency and does not specify the
      access model for the information itself.  In particular, the YANG module
      specified in this document is not necessarily intended to be accessed
      via regular network management protocols, such as NETCONF <xref target="RFC6241" format="default" sectionFormat="of" derivedContent="RFC6241"/> or RESTCONF
      <xref target="RFC8040" format="default" sectionFormat="of" derivedContent="RFC8040"/>, and hence the regular security considerations
      for such usage are not considered here.</t>
      <t indent="0" pn="section-6-2">Below, we describe protections relating to both discovery and some
      advice on protecting the underlying SBOM and vulnerability
      information.</t>
      <t indent="0" pn="section-6-3">The model specifies both encrypted and unencrypted means to retrieve
      information.  This is a matter of pragmatism.  Unencrypted
      communications allow for manipulation of information being retrieved.
      Therefore, it is <bcp14>RECOMMENDED</bcp14> that implementations offer a
      means to configure endpoints so that they may make use of TLS or
      DTLS.</t>
      <t indent="0" pn="section-6-4">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
      read-only elements.  There are no means, for instance, to upload an SBOM.
      Additional risks are discussed below and are applicable to all nodes
      within the transparency container.</t>
      <t indent="0" pn="section-6-5">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:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-6">
        <li pn="section-6-6.1">the information retrieved would be false</li>
        <li pn="section-6-6.2">the URLs themselves point to malware</li>
      </ul>
      <t indent="0" pn="section-6-7">To address either of these risks or any tampering of a URL:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-8">
        <li pn="section-6-8.1">test any cloud-based URL against a reputation service</li>
        <li pn="section-6-8.2">provide the administrator an opportunity to approve further
        processing when the authority changes to one not known to be
        reputable</li>
      </ul>
      <t indent="0" pn="section-6-9">SBOMs provide an inventory of software.  Knowledge of which specific
      software is loaded on a system can aid an attacker in identifying an
      appropriate exploit for a known vulnerability or guide the development
      of novel exploit against this system.  However, if software is available
      to an attacker, the attacker may already be able to derive this
      very same software inventory.  When this information resides on the
      endpoint itself, the endpoint <bcp14>SHOULD NOT</bcp14> provide
      unrestricted access to the well-known URL by default.</t>
      <t indent="0" pn="section-6-10">Other servers that offer the data <bcp14>MAY</bcp14> restrict access
      to SBOM information using appropriate authorization semantics within
      HTTP.  One way to do this would be to issue a certificate to the client
      for this purpose after a registration process has taken place.  Another
      approach would involve the use of OAuth in combination.  In particular,
      if a system attempts to retrieve an SBOM via HTTP or CoAP and the client
      is not authorized, the server <bcp14>MUST</bcp14> produce an appropriate
      error with instructions on how to register a particular client.</t>
      <t indent="0" pn="section-6-11">Another risk is a skew in the SBOM listing and the actual software
      inventory of a device/container. For example, a manufacturer may update
      the SBOM on its server, but an individual device has not been 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 SBOM can
      minimize this risk.</t>
      <t indent="0" pn="section-6-12">To further mitigate attacks against a device, manufacturers
      <bcp14>SHOULD</bcp14> recommend network access controls.</t>
      <t indent="0" pn="section-6-13">Vulnerability information is generally made available to such
      databases as NIST's National Vulnerability Database <xref target="NISTNVD" format="default" sectionFormat="of" derivedContent="NISTNVD"/>.  It is possible that vendors 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 authorization <bcp14>SHOULD</bcp14> be applied to that
      information.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="mud-extension" numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-mud-extension">MUD Extension</name>
        <t indent="0" pn="section-7.1-1">IANA has added "transparency" to the "MUD Extensions"
        registry <xref target="RFC8520" format="default" sectionFormat="of" derivedContent="RFC8520"/> as follows:</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-7.1-2">
          <dt pn="section-7.1-2.1">Value:</dt>
          <dd pn="section-7.1-2.2">transparency</dd>
          <dt pn="section-7.1-2.3">Reference:</dt>
          <dd pn="section-7.1-2.4">RFC 9472</dd>
        </dl>
      </section>
      <section anchor="yang-registration" numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-yang-registration">YANG Registration</name>
        <t indent="0" pn="section-7.2-1">IANA has registered the following YANG module in the "YANG Module
Names" registry <xref target="RFC6020" format="default" sectionFormat="of" derivedContent="RFC6020"/>:</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-7.2-2">
          <dt pn="section-7.2-2.1">Name:</dt>
          <dd pn="section-7.2-2.2">ietf-mud-transparency</dd>
          <dt pn="section-7.2-2.3">Namespace:</dt>
          <dd pn="section-7.2-2.4">urn:ietf:params:xml:ns:yang:ietf-mud-transparency</dd>
          <dt pn="section-7.2-2.5">Maintained by IANA:</dt>
          <dd pn="section-7.2-2.6">N</dd>
          <dt pn="section-7.2-2.7">Prefix:</dt>
          <dd pn="section-7.2-2.8">mudtx</dd>
          <dt pn="section-7.2-2.9">Reference:</dt>
          <dd pn="section-7.2-2.10">RFC 9472</dd>
        </dl>
        <t indent="0" pn="section-7.2-3">The following URI has been registered in the "IETF XML Registry" <xref target="RFC3688" format="default" sectionFormat="of" derivedContent="RFC3688"/>:</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-7.2-4">
          <dt pn="section-7.2-4.1">URI:</dt>
          <dd pn="section-7.2-4.2">urn:ietf:params:xml:ns:yang:ietf-mud-transparency</dd>
          <dt pn="section-7.2-4.3">Registrant Contact:</dt>
          <dd pn="section-7.2-4.4">IESG</dd>
          <dt pn="section-7.2-4.5">XML:</dt>
          <dd pn="section-7.2-4.6">None.  Namespace URIs do not represent an XML specification.</dd>
        </dl>
      </section>
      <section anchor="well-known-prefix" numbered="true" removeInRFC="false" toc="include" pn="section-7.3">
        <name slugifiedName="name-well-known-prefix">Well-Known Prefix</name>
        <t indent="0" pn="section-7.3-1">IANA has added the following URI suffix to the "Well-Known URIs" registry
	in accordance with <xref target="RFC8615" format="default" sectionFormat="of" derivedContent="RFC8615"/>:</t>
        <dl newline="false" spacing="compact" indent="3" pn="section-7.3-2">
          <dt pn="section-7.3-2.1">URI Suffix:</dt>
          <dd pn="section-7.3-2.2">sbom</dd>
          <dt pn="section-7.3-2.3">Change Controller:</dt>
          <dd pn="section-7.3-2.4">IETF</dd>
          <dt pn="section-7.3-2.5">Reference:</dt>
          <dd pn="section-7.3-2.6">RFC 9472</dd>
          <dt pn="section-7.3-2.7">Status:</dt>
          <dd pn="section-7.3-2.8">permanent</dd>
          <dt pn="section-7.3-2.9">Related Information:</dt>
          <dd pn="section-7.3-2.10">See ISO/IEC 5962:2021 and SPDX.org</dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3688" quoteTitle="true" derivedAnchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t indent="0">This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020" quoteTitle="true" derivedAnchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t indent="0">YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241" quoteTitle="true" derivedAnchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t indent="0">The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991" quoteTitle="true" derivedAnchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t indent="0">This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC7231" target="https://www.rfc-editor.org/info/rfc7231" quoteTitle="true" derivedAnchor="RFC7231">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t indent="0">The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7231"/>
          <seriesInfo name="DOI" value="10.17487/RFC7231"/>
        </reference>
        <reference anchor="RFC7252" target="https://www.rfc-editor.org/info/rfc7252" quoteTitle="true" derivedAnchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t indent="0">The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t indent="0">CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040" quoteTitle="true" derivedAnchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t indent="0">This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8520" target="https://www.rfc-editor.org/info/rfc8520" quoteTitle="true" derivedAnchor="RFC8520">
          <front>
            <title>Manufacturer Usage Description Specification</title>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <author fullname="R. Droms" initials="R." surname="Droms"/>
            <author fullname="D. Romascanu" initials="D." surname="Romascanu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t indent="0">This memo specifies a component-based architecture for Manufacturer Usage Descriptions (MUDs). The goal of MUD is to provide a means for end devices to signal to the network what sort of access and network functionality they require to properly function. The initial focus is on access control. Later work can delve into other aspects.</t>
              <t indent="0">This memo specifies two YANG modules, IPv4 and IPv6 DHCP options, a Link Layer Discovery Protocol (LLDP) TLV, a URL, an X.509 certificate extension, and a means to sign and verify the descriptions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8520"/>
          <seriesInfo name="DOI" value="10.17487/RFC8520"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" quoteTitle="true" derivedAnchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t indent="0">This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t indent="0">In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" quoteTitle="true" derivedAnchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t indent="0">The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t indent="0">This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
      </references>
      <references pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="CSAF" target="https://docs.oasis-open.org/csaf/csaf/v2.0/csaf-v2.0.html" quoteTitle="true" derivedAnchor="CSAF">
          <front>
            <title>Common Security Advisory Framework Version 2.0</title>
            <author initials="L." surname="Rock" fullname="Langley Rock" role="editor">
              <organization showOnFrontPage="true">OASIS</organization>
            </author>
            <author initials="S." surname="Hagen" fullname="Stefan Hagen" role="editor">
              <organization showOnFrontPage="true">OASIS</organization>
            </author>
            <author initials="T." surname="Schmidt" fullname="Thomas Schmidt" role="editor">
              <organization showOnFrontPage="true">OASIS</organization>
            </author>
            <date year="2022" month="November"/>
          </front>
          <refcontent>OASIS Standard</refcontent>
        </reference>
        <reference anchor="CVRF" target="https://docs.oasis-open.org/csaf/csaf-cvrf/v1.2/csaf-cvrf-v1.2.pdf" quoteTitle="true" derivedAnchor="CVRF">
          <front>
            <title>CSAF Common Vulnerability Reporting Framework (CVRF) Version 1.2</title>
            <author initials="S." surname="Hagen" fullname="Stefan Hagen" role="editor">
              <organization showOnFrontPage="true">OASIS</organization>
            </author>
            <date year="2017" month="September"/>
          </front>
          <seriesInfo name="Committee Specification" value="01"/>
        </reference>
        <reference anchor="CycloneDX15" target="https://cyclonedx.org/docs/1.5/json" quoteTitle="true" derivedAnchor="CycloneDX15">
          <front>
            <title>CycloneDX v1.5 JSON Reference</title>
            <author>
              <organization showOnFrontPage="true">CycloneDX</organization>
            </author>
          </front>
          <refcontent>Version 1.5.0</refcontent>
        </reference>
        <reference anchor="EO2021" quoteTitle="true" derivedAnchor="EO2021">
          <front>
            <title>Executive Order on Improving the Nation's Cybersecurity</title>
            <author initials="J." surname="Biden" fullname="Joseph Biden">
              <organization showOnFrontPage="true">The White House</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
          <refcontent>EO 14028</refcontent>
        </reference>
        <reference anchor="NISTNVD" target="https://nvd.nist.gov" quoteTitle="true" derivedAnchor="NISTNVD">
          <front>
            <title>National Vulnerability Database</title>
            <author>
              <organization showOnFrontPage="true">NIST</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340" quoteTitle="true" derivedAnchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t indent="0">This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="SPDX" target="https://spdx.github.io/spdx-spec/v2.3/" quoteTitle="true" derivedAnchor="SPDX">
          <front>
            <title>The Software Package Data Exchange (SPDX) Specification</title>
            <author>
              <organization showOnFrontPage="true">The Linux Foundation</organization>
            </author>
            <date year="2022"/>
          </front>
          <refcontent>Version 2.3</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="acknowledgments" toc="include" numbered="false" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">Thanks to <contact fullname="Russ Housley"/>, <contact fullname="Dick       Brooks"/>, <contact fullname="Tom Petch"/>, and <contact fullname="Nicolas Comstedt"/>, who provided review comments.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="E." surname="Lear" fullname="Eliot Lear">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <postal>
            <street>Richtistrasse 7</street>
            <city>Wallisellen</city>
            <code>8304</code>
            <country>Switzerland</country>
          </postal>
          <phone>+41 44 878 9200</phone>
          <email>lear@cisco.com</email>
        </address>
      </author>
      <author initials="S." surname="Rose" fullname="Scott Rose">
        <organization showOnFrontPage="true">NIST</organization>
        <address>
          <postal>
            <street>100 Bureau Dr.</street>
            <city>Gaithersburg</city>
            <region>MD</region>
            <code>20899</code>
            <country>United States of America</country>
          </postal>
          <phone>+1 301-975-8439</phone>
          <email>scott.rose@nist.gov</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
