diff options
Diffstat (limited to 'doc/rfc/rfc8412.txt')
-rw-r--r-- | doc/rfc/rfc8412.txt | 5659 |
1 files changed, 5659 insertions, 0 deletions
diff --git a/doc/rfc/rfc8412.txt b/doc/rfc/rfc8412.txt new file mode 100644 index 0000000..61ff09a --- /dev/null +++ b/doc/rfc/rfc8412.txt @@ -0,0 +1,5659 @@ + + + + + + +Internet Engineering Task Force (IETF) C. Schmidt +Request for Comments: 8412 D. Haynes +Category: Standards Track C. Coffin +ISSN: 2070-1721 The MITRE Corporation + D. Waltermire + National Institute of Standards and Technology + J. Fitzgerald-McKay + United States National Security Agency + July 2018 + + + Software Inventory Message and Attributes (SWIMA) for PA-TNC + +Abstract + + This document extends "PA-TNC: A Posture Attribute (PA) Protocol + Compatible with Trusted Network Connect (TNC)" (RFC 5792) by + providing specific attributes and message exchanges to allow + endpoints to report their installed software inventory information to + a NEA Server, as defined in "Network Endpoint Assessment (NEA): + Overview and Requirements" (RFC 5209). + +Status of This Memo + + This is an Internet Standards Track document. + + 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. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8412. + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 1] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +Copyright Notice + + Copyright (c) 2018 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) 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 Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction ....................................................4 + 1.1. Network Endpoint Assessment (NEA) ..........................6 + 1.2. Conventions Used in This Document ..........................7 + 1.3. Definitions ................................................7 + 2. Background ......................................................8 + 2.1. Supported Use Cases ........................................8 + 2.1.1. Use Software Inventory as an Access Control Factor ..8 + 2.1.2. Central Stores of Up-to-Date Endpoint + Software Inventory Data .............................9 + 2.1.3. PA-TNC Use Cases ....................................9 + 2.2. Use Cases That Are Not Supported ...........................9 + 2.3. SWIMA Requirements ........................................10 + 2.4. Non-SWIMA Requirements ....................................11 + 2.5. Assumptions ...............................................12 + 2.6. Assumptions Not Made ......................................12 + 3. System Requirements ............................................12 + 3.1. Data Sources ..............................................13 + 3.2. Data Models ...............................................14 + 3.3. Basic Attribute Exchange ..................................16 + 3.4. Core Software-Reporting Information .......................17 + 3.4.1. Software Identifiers ...............................17 + 3.4.2. Data Model Type ....................................19 + 3.4.3. Record Identifiers .................................19 + 3.4.4. Software Locators ..................................20 + 3.4.5. Source Identifiers .................................21 + 3.4.6. Using Software and Record Identifiers in + SWIMA Attributes ...................................22 + 3.5. Targeted Requests .........................................22 + 3.6. Monitoring Changes in an Endpoint's Software + Inventory Evidence Collection .............................23 + + + + +Schmidt, et al. Standards Track [Page 2] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + 3.7. Reporting Change Events ...................................26 + 3.7.1. Event Identifiers ..................................27 + 3.7.2. Core Event-Tracking Information ....................28 + 3.7.3. Updating Inventory Knowledge Based on Events .......29 + 3.7.4. Using Event Records in SWIMA Attributes ............29 + 3.7.5. Partial and Complete Lists of Event Records + in SWIMA Attributes ................................30 + 3.7.6. Synchronizing Event Identifiers and Epochs .........32 + 3.8. Subscriptions .............................................33 + 3.8.1. Establishing Subscriptions .........................34 + 3.8.2. Managing Subscriptions .............................35 + 3.8.3. Terminating Subscriptions ..........................36 + 3.8.4. Subscription Status ................................36 + 3.8.5. Fulfilling Subscriptions ...........................37 + 3.8.5.1. Subscriptions That Report Inventories .....38 + 3.8.5.2. Subscriptions That Report Events ..........38 + 3.8.5.3. Targeted Subscriptions ....................40 + 3.8.5.4. No Subscription Consolidation .............40 + 3.8.5.5. Delayed Subscription Fulfillment ..........41 + 3.9. Error Handling ............................................41 + 4. Protocol .......................................................43 + 4.1. Direct Response to a SWIMA Request ........................44 + 4.2. Subscription-Based Response ...............................45 + 4.3. Required Exchanges ........................................45 + 5. Software Inventory Messages and Attributes .....................46 + 5.1. PA Subtype (aka PA-TNC Component Type) ....................46 + 5.2. SWIMA Attribute Overview ..................................46 + 5.3. Message Diagram Syntax ....................................48 + 5.4. Normalization of Text Encoding ............................49 + 5.5. Request IDs ...............................................49 + 5.6. SWIMA Request .............................................50 + 5.7. Software Identifier Inventory .............................54 + 5.8. Software Identifier Events ................................58 + 5.9. Software Inventory ........................................64 + 5.10. Software Events ..........................................67 + 5.11. Subscription Status Request ..............................72 + 5.12. Subscription Status Response .............................73 + 5.13. Source Metadata Request ..................................75 + 5.14. Source Metadata Response .................................76 + 5.15. PA-TNC Error as Used by SWIMA ............................78 + 5.15.1. SWIMA_ERROR, SWIMA_SUBSCRIPTION_DENIED_ERROR, and + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR Information .....81 + 5.15.2. SWIMA_RESPONSE_TOO_LARGE_ERROR Information ........83 + 5.15.3. SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR Information ..85 + + + + + + + +Schmidt, et al. Standards Track [Page 3] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + 6. Supported Data Models ..........................................87 + 6.1. ISO 2015 SWID Tags Using XML ..............................87 + 6.1.1. Guidance on Normalizing Source Data to ISO 2015 + SWID Tags Using XML ................................87 + 6.1.2. Guidance on Creation of Software Identifiers from + ISO 2015 SWID Tags .................................88 + 6.2. ISO 2009 SWID Tags Using XML ..............................88 + 6.2.1. Guidance on Normalizing Source Data to ISO 2009 + SWID Tags Using XML ................................88 + 6.2.2. Guidance on Creation of Software Identifiers from + ISO 2009 SWID Tags .................................89 + 7. Relationship to Other Specifications ...........................89 + 8. Security Considerations ........................................90 + 8.1. Evidentiary Value of Software Inventory Evidence Records ..90 + 8.2. Sensitivity of Collected Records ..........................91 + 8.3. Integrity of Endpoint Records .............................92 + 8.4. SWIMA-PC Access Permissions ...............................92 + 8.5. Sanitization of Record Fields .............................93 + 8.6. PA-TNC Security Threats ...................................93 + 9. Privacy Considerations .........................................93 + 10. IANA Considerations ...........................................94 + 10.1. Guidance for the Designated Experts ......................94 + 10.2. PA Subtypes ..............................................95 + 10.3. PA-TNC Attribute Types ...................................96 + 10.4. PA-TNC Error Codes .......................................97 + 10.5. Software Data Model Types ................................97 + 11. References ....................................................98 + 11.1. Normative References .....................................98 + 11.2. Informative References ...................................99 + Authors' Addresses ...............................................101 + +1. Introduction + + Knowing the list of software installed on endpoints is useful to + understand and maintain the security state of a network. For + example, if an enterprise policy requires the presence of certain + software and prohibits the presence of other software, reported + software installation information can be used to indicate compliance + and non-compliance with these requirements. Endpoint software + installation inventory lists (hereinafter "software inventories") can + further be used to determine an endpoint's exposure to attack based + on comparison of vulnerability or threat alerts against identified + software's patch-level data. These are some of the highly useful + management use cases supported by software inventory data. + + + + + + + +Schmidt, et al. Standards Track [Page 4] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Software Inventory Message and Attributes (SWIMA) for PA-TNC (see + "PA-TNC: A Posture Attribute (PA) Protocol Compatible with Trusted + Network Connect (TNC)" [RFC5792]) provides a standardized method for + exchanging software inventory data that includes a unique Software + Identifier associated with a specific version of a software product. + SWIMA can also convey metadata about software products beyond this + identifier. SWIMA enables software identification, installation, and + characterization information to be transported to a central server + from any endpoint that supports this specification. Such information + can come from multiple sources, including tag files (such as ISO + Software Identification (SWID) tags [SWID15]), reports from + third-party inventory tools, output from package managers, and other + sources. SWIMA does not standardize how software is detected, + instead relying on a set of "data sources" to provide information + about installed software. SWIMA provides a flexible transport + capable of conveying this information, regardless of how it is + expressed. + + This specification is designed to only report software that is + installed on a target endpoint. In particular, it does not monitor + or report information about what software is running on the endpoint. + Likewise, it is not intended to report individual files, libraries, + installation packages, or similar artifacts. While all of this + information has its uses, this information requires different + metadata and monitoring methods. As a result, this specification + focuses solely on software inventory information, leaving the + reporting of other classes of endpoint information to other + specifications. + + Note that while this specification focuses on "software inventory", + the mechanisms it describes could also be used to convey information + about firmware and operating systems associated with an endpoint. + The focus on software throughout this document should not be read as + excluding the use of SWIMA for these other purposes. + + This specification defines a new set of PA-TNC attributes; these + attributes are used to communicate requests for software inventory + information and software installation change events. The exchange of + these messages allows software inventory information to be sent to a + Network Endpoint Assessment (NEA) Server, which can make this + information available to other applications. + + Part of the motivation for the development of SWIMA was to support + the IETF's Security Automation and Continuous Monitoring (SACM) + architecture. More details about SWIMA's role in SACM appear in + Section 7. However, SWIMA has no dependencies on any part of SACM + and is usable wherever the NEA architecture is employed. + + + + +Schmidt, et al. Standards Track [Page 5] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +1.1. Network Endpoint Assessment (NEA) + + SWIMA defines extensions to the PA-TNC specification [RFC5792]; these + extensions are part of the NEA architecture. The NEA specifications + define an open solution architecture that enables network operators + to collect and utilize information about endpoint configuration and + state. This information can be used to enforce policies and monitor + endpoint health, among many other activities. Information about the + software present on an endpoint is an important consideration for + such activities. The new PA-TNC attributes defined in this document + are used to communicate software inventory evidence, collected from a + range of possible sources, from the Posture Collector on the endpoint + to the Posture Validator on a NEA Server using the PA-TNC interface, + as shown in Figure 1 below. + + +-------------+ +--------------+ + | Posture | <--------PA--------> | Posture | + | Collectors | | Validators | + | (1 .. N) | | (1 .. N) | + +-------------+ +--------------+ + | | + | | + | | + +-------------+ +--------------+ + | Posture | | Posture | + | Broker | <--------PB--------> | Broker | + | Client | | Server | + +-------------+ +--------------+ + | | + | | + +-------------+ +--------------+ + | Posture | | Posture | + | Transport | <--------PT--------> | Transport | + | Client | | Server | + | (1 .. N) | | (1 .. N) | + +-------------+ +--------------+ + NEA CLIENT NEA SERVER + + Figure 1: NEA Reference Model + + To better understand this specification, the reader should review the + NEA reference architecture as described in "Network Endpoint + Assessment (NEA): Overview and Requirements" [RFC5209]. The reader + should also review the PA-TNC interfaces as defined in RFC 5792 + [RFC5792]. + + + + + + +Schmidt, et al. Standards Track [Page 6] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + This document is based on standards published by the Trusted + Computing Group's Trusted Network Communications (TNC) workgroup (see + <https://trustedcomputinggroup.org/>). The TNC and NEA architectures + are interoperable, and many components are equivalent. + +1.2. Conventions Used in This Document + + 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 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +1.3. Definitions + + This section defines terms that have special meaning within this + document. + + o SWIMA-PC - A NEA Posture Collector (PC) that interprets SWIMA + attributes sent by SWIMA-PVs and that conforms to this + specification. Note that such a Posture Collector might also + support other PA-TNC exchanges beyond those defined herein. + + o SWIMA-PV - A NEA Posture Validator (PV) that interprets SWIMA + attributes sent by SWIMA-PCs and that conforms to this + specification. Note that such a Posture Validator might also + support other PA-TNC exchanges beyond those defined herein. + + o SWIMA Attribute - A PA-TNC attribute (as defined in RFC 5792 + [RFC5792]) whose structure and behavior is defined in this + specification. + + o Endpoint's Software Inventory Evidence Collection - The set of + information regarding the set of software installed on an + endpoint. An endpoint's Software Inventory Evidence Collection + might include information created by or derived from multiple + sources, including but not limited to SWID tag files deposited on + the filesystem during software installation, information generated + by software discovery tools, and information dynamically generated + by a software or package management system on an endpoint. + + o Software Inventory Evidence Record - Part of the endpoint's + Software Inventory Evidence Collection (which is composed of + "records"). Each record corresponds to one installed instance of + a particular software product as reported by some data source. It + is possible for a single installed instance to have multiple + + + + + +Schmidt, et al. Standards Track [Page 7] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Software Inventory Evidence Records in an endpoint's Software + Inventory Evidence Collection -- this can happen if multiple + sources all report the same software installation instance. + + o Software Identifier - A string associated with a specific version + of a specific software product. These identifiers are derived + from the records used to describe software products. SWIMA does + not limit the formats of these records, nor does it enforce that + all data sources populate records using the same format. As such, + while each Software Identifier uniquely identifies a specific + software product, the same software product might be associated + with multiple Software Identifiers reflecting differences between + different data sources and supported record formats. + +2. Background + +2.1. Supported Use Cases + + This section describes the use cases supported by this specification. + The primary use of exchanging software inventory information over the + PA-TNC interface is to enable a challenger (e.g., a NEA Server) to + obtain inventory evidence about some system in a way that conforms to + NEA procedures. Collected software information can support a range + of security activities, including determining whether an endpoint is + permitted to connect to the enterprise, determining which endpoints + contain software that requires patching, and similar activities. + +2.1.1. Use Software Inventory as an Access Control Factor + + Some enterprises might define security policies that require + connected endpoints to have certain pieces of security software + installed. By contrast, some security policies might prevent access + to resources by endpoints that have certain prohibited pieces of + software installed, since such applications might pose a security + risk. To support such policies, the NEA Server needs to collect + software inventory evidence from a target endpoint that is seeking to + initiate or continue connectivity to the enterprise resource. + + Based on this specification, the SWIMA-PC can provide a complete or + partial inventory to the SWIMA-PV as required to determine policy + compliance. The SWIMA-PV can then use this as evidence of compliance + or non-compliance to make a policy-based access decision. + + + + + + + + + +Schmidt, et al. Standards Track [Page 8] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +2.1.2. Central Stores of Up-to-Date Endpoint Software Inventory Data + + Many tools use information about an endpoint's software inventory to + monitor and enforce the security of a network. For example, a + software-patching tool needs to determine if there is out-of-date + software installed that needs to be updated. A vulnerability + management tool needs to identify endpoints with known vulnerable + software installed (patched or otherwise) to gauge an endpoint's + relative exposure to attack. A license management tool needs to + verify that all installed software within the enterprise is accounted + for. A central repository representing an up-to-date understanding + of each endpoint's software inventory facilitates these activities. + Multiple tools can share such a repository, ensuring that software + inventory information is collected more frequently and efficiently, + leading to a more complete and consistent understanding of installed + software state as compared to each tool collecting the same inventory + information from endpoints individually. + + This specification supports these activities through a number of + mechanisms. As noted above, a SWIMA-PC can provide a complete list + of software present in an endpoint's Software Inventory Evidence + Collection to the SWIMA-PV, which can then pass this information on + to a central repository, such as a Configuration Management Database + (CMDB) or similar application. In addition, SWIMA-PCs are required + to be able to monitor for changes to an endpoint's Software Inventory + Evidence Collection in near real time and can be requested to + immediately push reports of detected changes to the SWIMA-PV. Thus, + any central repository fed by a SWIMA-PV receiving inventory + information can be updated quickly after a change occurs. Keeping a + central repository synchronized with current software inventory + information in this way allows tools to make efficient decisions + based on up-to-date, consistent information. + +2.1.3. PA-TNC Use Cases + + SWIMA is intended to operate over the PA-TNC interface and, as such, + is intended to meet the use cases set out in the PA-TNC + specification. + +2.2. Use Cases That Are Not Supported + + Some use cases not covered by this specification include: + + o Addressing how the endpoint's Software Inventory Evidence + Collection is populated. In particular, NEA components are not + expected to perform software discovery activities beyond compiling + information in an endpoint's Software Inventory Evidence + Collection. This collection might come from multiple sources on + + + +Schmidt, et al. Standards Track [Page 9] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + the endpoint (e.g., information generated dynamically by package + management tools or discovery tools, as well as SWID tag files + discovered on the filesystem). While an enterprise might make use + of software discovery capabilities to identify installed software, + such capabilities are outside the scope of this specification. + + o Converting inventory information expressed in a proprietary format + into formats used in the attributes described in this + specification. Instead, this specification focuses exclusively on + defining interfaces for the transportation of software + information, expecting that reporting tools will converge around + some set of standardized formats for this information. + + o Mechanisms for a Posture Validator to request a specific list of + software information based on arbitrary software properties. For + example, requesting only information about software from a + particular vendor is not supported. After the endpoint's Software + Inventory Evidence Collection has been copied to some central + location, such as the CMDB, processes there can perform queries + based on any criteria present in the collected information, but + this specification does not address using such queries to + constrain the initial collection of this information from the + endpoint. + + o Use of properties of certain sources of software information that + might facilitate local tests (i.e., on the endpoint) of endpoint + state. For example, the optional package_footprint field of an + ISO SWID tag can contain a list of files and hash values + associated with the software indicated by the tag. Tools on the + endpoint can use the values in this field to test for the presence + of the indicated files. Successful evaluation of such tests leads + to greater assurance that the indicated software is present on the + endpoint. Currently, most SWID tag creators do not provide values + for tag fields that support local testing. For this reason, the + added complexity of supporting endpoint testing using these fields + is out of scope for this specification, but this topic may be + considered in a future version. + +2.3. SWIMA Requirements + + Below are the requirements that SWIMA must meet in order to + successfully play its role in the NEA architecture. + + Efficient: The NEA architecture enables delay of network access + until the endpoint is determined not to pose a security threat to + the network, based on its asserted integrity information. To + minimize user frustration, SWIMA ought to minimize overhead delays + and make PA-TNC communications as rapid and efficient as possible. + + + +Schmidt, et al. Standards Track [Page 10] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Scalable: SWIMA needs to be usable in enterprises that contain tens + of thousands of endpoints or more. As such, it needs to allow + security tools to make decisions based on up-to-date information + about an endpoint's software inventory without creating an + excessive burden on the enterprise's network. + + Support precise and complete historical reporting: This + specification outlines capabilities that support real-time + understanding of the state of endpoints in a network in a way that + can be used by other tools. One means of facilitating such an + outcome is for a CMDB to be able to contain information about all + endpoints connected to the enterprise for all points in time + between the endpoint's first connection and the present. In such + a scenario, it is necessary that any SWIMA-PC be able to report + any changes to its Software Inventory Evidence Collection in near + real time while connected and, upon reconnection to the + enterprise, be able to update the NEA Server (and, through it, the + CMDB) with regard to the state of its Software Inventory Evidence + Collection throughout the entire interval when it was not + connected. + +2.4. Non-SWIMA Requirements + + There are certain capabilities that users of SWIMA might require but + that are beyond the scope of SWIMA itself and need to be addressed by + other standards. + + Confidentiality: SWIMA does not define a mechanism for + confidentiality, nor is confidentiality automatically provided by + using the PA-TNC interface. In the NEA architecture, + confidentiality is generally provided by the underlying transport + protocols, such as the PT binding to TLS [RFC6876] or PT-EAP + (Posture Transport for Tunneled Extensible Authentication Protocol + (EAP) Methods) [RFC7171]; see Section 7 for more information on + related standards. The information conveyed by SWIMA is often + sensitive in nature for both security (Section 8) and privacy + (Section 9) reasons. Those who implement SWIMA need to ensure + that appropriate NEA transport mechanisms are employed to meet + confidentiality requirements. + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 11] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +2.5. Assumptions + + The Posture Broker Client and Posture Broker Server are assumed to + provide reliable delivery for PA-TNC messages and attributes sent + between the SWIMA-PCs and the SWIMA-PVs. "Reliable delivery" means + that either a message is delivered or the sender is made aware of the + delivery failure. In the event that reliable delivery cannot be + provided, some SWIMA features, primarily subscriptions, might not + behave as expected. + +2.6. Assumptions Not Made + + This specification explicitly does not assume that software inventory + information exchanges reflect the software installation state of the + endpoint. This specification does not attempt to detect when the + endpoint is providing false information, either through malice or + error, but instead focuses on correctly and reliably providing the + reported Software Inventory Evidence Collection to the NEA Server. + Tools that employ the SWIMA standard can include methods to help + verify the accuracy of reports, but how those tools do so is beyond + the scope of this specification. + + Similarly, this specification makes no assumption about the + completeness of the Software Inventory Evidence Collection's coverage + of the total set of software installed on the endpoint. It is + possible, and even likely, that some installed software is not + represented by a record in an endpoint's Software Inventory Evidence + Collection. Instead, SWIMA ensures that what does get reported is + reported consistently and that the software products that are + reported can be reliably tracked. + + See Section 8 for more on this security consideration. + +3. System Requirements + + SWIMA facilitates the exchange of software inventory and event + information. Specifically, each application supporting SWIMA + includes a component known as the SWIMA-PC that receives SWIMA + attributes. The SWIMA-PC is also responsible for sending appropriate + SWIMA attributes back to the SWIMA-PV in response. This section + outlines what software inventories and events are and the + requirements on SWIMA-PCs and SWIMA-PVs in order to support the + stated use cases of this specification. + + + + + + + + +Schmidt, et al. Standards Track [Page 12] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.1. Data Sources + + The records in an endpoint's Software Inventory Evidence Collection + come from one or more "sources". A source represents one collection + of software inventory information about the endpoint. Examples of + sources include, but are not limited to, ISO SWID tags deposited on + the filesystem and collected therefrom, information derived from + package managers, and the output of software inventory-scanning + tools. + + There is no expectation that any one source of inventory information + will have either perfect or complete software inventory information. + For this reason, this specification supports the simultaneous use of + multiple sources of software inventory information. Each source + might have its own "sphere of expertise" and report the software + within that sphere. For example, a package manager would have an + excellent understanding of the software that it managed but would not + necessarily have any information about software installed via other + means. + + A SWIMA-PC is not required to utilize every possible source of + software information on its endpoint. Some SWIMA-PCs might be + explicitly tied only to one or a handful of software inventory + sources, or a given SWIMA-PC could be designed to dynamically + accommodate new sources. For all software inventory evidence sources + that a particular SWIMA-PC supports, it MUST completely support all + requirements of this specification with regard to those sources. A + potential source that cannot support some set of required + functionality (e.g., it is unable to monitor the software it reports + for change events, as discussed in Section 3.6) MUST NOT be used as a + source of endpoint software inventory information, even if it could + provide some information. In other words, a source either supports + full functionality as described in this specification or cannot be + used at all. In the event that a previously used source becomes + unavailable, this would be treated as a discontinuity in the + SWIMA-PC's reporting. Section 3.7.1 describes how to use changes in + the Event Identifier (EID) Epoch value to indicate a reporting + discontinuity. + + When sending information about installed software, the SWIMA-PC MUST + include the complete set of relevant data from all supported sources + of software inventory evidence. In other words, sources need to be + used consistently. This is because if a particular source is + included in an initial inventory but excluded from a later inventory, + the SWIMA-PV receiving this information might reasonably conclude + that the software reported by that source was no longer installed on + the endpoint. As such, it is important that all supported sources be + used every time the SWIMA-PC provides information to a SWIMA-PV. + + + +Schmidt, et al. Standards Track [Page 13] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Note that if a SWIMA-PC collects data from multiple sources, it is + possible that some software products might be "double counted". This + can happen if two or more sources of inventory evidence provide a + record for a single installation of a software product. When a + SWIMA-PC reports information or records events from multiple + inventory evidence sources, it MUST use the information those sources + provide, rather than attempt to perform some form of reduction. In + other words, if multiple sources report records corresponding to a + single installation of a software product, all such records from each + source are required to be part of the SWIMA-PC's processing even if + this might lead to multiple reporting, and the SWIMA-PC is not to + ignore some records to avoid such multiple reporting. + + All inventory records reported by a SWIMA-PC include a Source + Identifier linking them to a particular source. Source Identifiers + are discussed more in Section 3.4.5. As discussed in that section, + Source Identifiers can help consumers of SWIMA data identify cases of + multiple reporting. + +3.2. Data Models + + SWIMA conveys records about software presence from a SWIMA-PC to a + SWIMA-PV. SWIMA does not manage the actual generation or collection + of such records on the endpoint. As a result, information available + to SWIMA-PCs might come in a variety of formats, and a SWIMA-PC could + have little control over the format of the data made available to it. + Because of this, SWIMA places no constraints on the format of these + generated records and supports an open set of record formats by which + installed software instances can be described. The following terms + are used in this document: + + o Data model - The format used to structure data within a given + record. SWIMA does not constrain the data models it conveys. + + o Record - A populated instance of some data model that describes a + software product. + + Do not confuse the "data model" described here with the structure of + the SWIMA messages and attributes used to convey information between + SWIMA-PVs and SWIMA-PCs. The SWIMA standard dictates the structure + of its messages and attributes. Some attributes, however, have + specific fields used to convey inventory records, and those fields + support an extensible list of data models for their values. In other + words, SWIMA data models provide an extension point within SWIMA + attributes that allows the structure of inventory records to evolve. + + + + + + +Schmidt, et al. Standards Track [Page 14] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The data model used to structure software inventory information has + very little impact on the behavior of the components defined in this + specification. The SWIMA-PV has no dependency on the data model of + records conveyed in SWIMA messages. For this reason, it MUST NOT + reject a message or respond with a PA-TNC Error due to the data model + used to structure records in attributes it receives. Similarly, it + MUST NOT reject a message or respond with a PA-TNC Error if a record + fails to comply with a stated format, unless that failure prevents + correct parsing of the attribute itself. In short, the record bodies + are effectively treated as "black boxes" by the SWIMA-PV. (Note that + the SWIMA-PV might serve as the "front end" of other functionality + that does have a dependency on the data model used to structure + software information, but any such dependency is beyond the scope of + this specification and needs to be addressed outside the behaviors + specified in this document. This specification is only concerned + with the collection and delivery of software inventory information; + components that consume and use this information are a separate + concern.) + + The SWIMA-PC does have one functional dependency on the data models + used in the software records it delivers, but only insofar as it is + required to deterministically create a Software Identifier (described + in Section 3.4.1) based on each record it delivers. The SWIMA-PC + MUST be able to generate a Software Identifier for each record it + delivers, and if the SWIMA-PC cannot do so, it cannot deliver the + record. All SWIMA-PCs MUST at least be able to generate Software + Identifiers for the data model types specified in Section 6 of this + document. A SWIMA-PC MAY include the ability to generate Software + Identifiers for other data model types and thus be able to support + them as well. + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 15] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.3. Basic Attribute Exchange + + In the most basic exchange supported by this specification, a + SWIMA-PV sends a request to the SWIMA-PC, requesting some type of + information about the endpoint's software inventory. This simple + exchange is shown in Figure 2. + + +-------------+ +--------------+ + | SWIMA-PC | | SWIMA-PV | Time + +-------------+ +--------------+ | + | | | + |<------------SWIMA Request---------------| | + | | | + |-------------SWIMA Response------------->| | + | | V + + Figure 2: Basic SWIMA Attribute Exchange + + Upon receiving such a SWIMA Request from the SWIMA-PV, the SWIMA-PC + is expected to collect all the relevant software inventory + information from the endpoint's Software Inventory Evidence + Collection and place it within its response attribute. + + SWIMA-PVs MUST discard, without error, any SWIMA Response attributes + that they receive for which they do not know the SWIMA Request + parameters that led to this SWIMA Response. This is due to the fact + that the SWIMA Request includes parameters that control the nature of + the response (as will be described in the following sections); + without knowing those parameters, the SWIMA Response cannot be + reliably interpreted. Each SWIMA Request includes a Request ID, + which is echoed in any SWIMA Response to that request and allows + matching of responses to requests. See Section 5.5 for more on + Request IDs. Receiving an unsolicited SWIMA Response attribute will + most often happen when a NEA Server has multiple SWIMA-PVs; one + SWIMA-PV sends a SWIMA Request, but unless exclusive delivery + [RFC5793] is set by the sender and honored by the recipient, multiple + SWIMA-PVs will receive copies of the resulting SWIMA Response. In + this case, the SWIMA-PV that didn't send the SWIMA Request would lack + the context necessary to correctly interpret the SWIMA Response it + received and would simply discard it. Note, however, that + proprietary measures might allow a SWIMA-PV to discover the SWIMA + Request parameters for a SWIMA Response even if that SWIMA-PV did not + send the given SWIMA Request. As such, there is no blanket + requirement for a SWIMA-PV to discard all SWIMA Responses to SWIMA + Requests that the SWIMA-PV did not generate itself -- only that + SWIMA-PVs are required to discard SWIMA Responses for which they + cannot get the necessary context to interpret. + + + + +Schmidt, et al. Standards Track [Page 16] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + In the case that it is possible to do so, the SWIMA-PC SHOULD send + its SWIMA Response attribute to the SWIMA-PV that requested it, using + exclusive delivery as described in Section 4.5 of "PB-TNC: A Posture + Broker (PB) Protocol Compatible with Trusted Network Connect (TNC)" + [RFC5793]. Exclusive delivery requests that only the sender of the + SWIMA Request be the receiver of the resulting SWIMA Response. Note, + however, that PB-TNC does not require the recipient to honor the + exclusive delivery flag in messages that it receives, so setting the + flag cannot be guaranteed to prevent a SWIMA-PV from receiving + unsolicited SWIMA Responses. + + Note that, in the case that a single endpoint hosts multiple + SWIMA-PCs, a single SWIMA Request could result in multiple SWIMA + Responses. SWIMA-PVs need to handle such an occurrence without + error. + + All numeric values sent in SWIMA messages are sent in network + (big endian) byte order. + +3.4. Core Software-Reporting Information + + Different parameters in the SWIMA Request can influence what + information is returned in the SWIMA Response. However, while each + SWIMA Response provides different additional information about this + installed software, the responses all share a common set of fields + that support reliable software identification on an endpoint. These + fields include Software Identifiers, Data Model Type, Record + Identifiers, Software Locators, and Source Identifiers. These fields + are present for each reported piece of software in each type of SWIMA + Response. The following sections examine these information types in + more detail. + +3.4.1. Software Identifiers + + A Software Identifier uniquely identifies a specific version of a + specific software product. The SWIMA standard does not dictate the + structure of a Software Identifier (beyond stating that it is a + string) or define how it is created. Instead, each data model + described in the "Software Data Model Types" registry (Section 10.5) + includes its own rules for how a Software Identifier is created based + on a record in the endpoint's Software Inventory Evidence Collection + expressed in that data model. Other data models will have their own + procedures for the creation of associated Software Identifiers. + Within SWIMA, the Software Identifier is simply an opaque string, and + there is never any need to unpack any information that might be part + of that identifier. + + + + + +Schmidt, et al. Standards Track [Page 17] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + A Software Identifier is a fraction of the size of the inventory + record from which it is derived. For this reason, it is often more + efficient to collect full inventories using Software Identifiers and + only collect full records when necessary using targeted requests. + For some combinations of data models and sources, the full record + might never be necessary, as the identifier can be directly + correlated to the contents of the full record. This is possible with + authoritative SWID tags, since these tags always have the same + contents and thus a Software Identifier derived from these tags can + be used as a lookup to a local copy of the full tag. For other + combinations of source and data model, a server might not be able to + determine the specific software product and version associated with + the identifier without requesting the delivery of the full record. + However, even in those cases, downstream consumers of this + information might never need the full record as long as the Software + Identifiers they receive can be tracked reliably. A SWIMA-PV can use + Software Identifiers to track the presence of specific software + products on an endpoint over time in a bandwidth-efficient manner. + + There are two important limitations of Software Identifiers to keep + in mind: + + 1. The identifiers do not necessarily change when the associated + record changes. In some situations, a record in the endpoint's + Software Inventory Evidence Collection will change due to new + information becoming available or in order to correct prior + errors in that information. Such changes might or might not + result in changes to the Software Identifier, depending on the + nature of the changes and the rules governing how Software + Identifiers are derived from records of the appropriate data + model. + + 2. It is possible that a single software product is installed on a + single endpoint multiple times. If these multiple installation + instances are reported by the same source using the same data + format, then this can result in identical Software Identifiers + for both installation instances. In other words, Software + Identifiers might not uniquely identify installation instances; + they are just intended to uniquely identify software products + (which might have more than one installation instance). Instead, + to reliably distinguish between multiple instances of a single + software product, one needs to make use of Record Identifiers as + described in Section 3.4.3. + + + + + + + + +Schmidt, et al. Standards Track [Page 18] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.4.2. Data Model Type + + The Data Model Type consists of two fields: Data Model Type PEN and + Data Model Type. ("PEN" stands for "Private Enterprise Number".) + The combination of these fields is used to identify the type of data + model of the associated software inventory record. The data model is + significant not only because it informs the recipient of the data + model of the associated record but also because the process for + generating the Software Identifier for the record depends on the + record's data model. Clearly identifying the type of data model from + which the Software Identifier was derived thus provides useful + context for that value. + + The PEN identifies the organization that assigns meaning to the Data + Model Type field value. PENs are managed by IANA in the "Private + Enterprise Numbers" registry. PENs allow vendors to designate their + own set of data models for software inventory description. IANA + reserves the PEN of 0x000000. Data Model Types associated with this + PEN are defined in the "Software Data Model Types" registry; see + Section 10.5 of this specification. Note that this IANA table + reserves all values greater than or equal to 0xC0 (192) for local + enterprise use. This means that local enterprises can use custom + data formats and indicate them with the IANA PEN and a Data Model + Type value between 0xC0 and 0xFF, inclusive. Those enterprises are + responsible for configuring their SWIMA-PCs to correctly report those + custom data models. + +3.4.3. Record Identifiers + + A Record Identifier is a 4-byte unsigned integer that is generated by + the SWIMA-PC and is uniquely associated with a specific record within + the endpoint's Software Inventory Evidence Collection. The SWIMA-PC + MUST assign a unique identifier to each record when it is added to + the endpoint's Software Inventory Evidence Collection. The Record + Identifier SHOULD remain unchanged if that record is modified. + However, it is recognized that, in some circumstances, record + modification might be hard to distinguish from record deletion + followed by creation of a new record. For this reason, retaining a + constant Record Identifier across a record modification is + recommended but not required. Similarly, in the case that the + software product associated with a record is moved, ideally the + Record Identifier for the record of the moved software will remain + unchanged, reflecting that it represents the same software product + instance, albeit in a new location. However, this level of tracking + could prove difficult to achieve and is not required. The SWIMA-PC + might wish to assign Record Identifiers sequentially, but any scheme + is acceptable, provided that no two records receive the same + identifier. + + + +Schmidt, et al. Standards Track [Page 19] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Servers can use Record Identifiers to distinguish between multiple + instances of a single software product installed on an endpoint. + Since each installation instance of a software product is associated + with a separate record, servers can use the Record Identifier to + distinguish between instances. For example, if an event is reported + (as described in Section 3.7), the Record Identifier will allow the + server to discern which instance of a software product is involved. + +3.4.4. Software Locators + + In addition to the need to identify what software products are on an + endpoint, some processes that use inventory information also need to + know where software is located on the endpoint. This information + might be needed to direct remediation actions or similar processes. + For this reason, every reported software product also includes a + Software Locator to identify where the software is installed on the + endpoint. + + If the location is not provided directly by the data source, the + SWIMA-PC is responsible for attempting to determine the location of + the software product. The "location" of a product SHOULD be the + directory in which the software product's executables are kept. The + SWIMA-PC MUST be consistent in reporting the location of a software + product. In other words, assuming that a software product has not + moved, the SWIMA-PC cannot use one location in one report and a + different location for the same software product in another. (If a + software product has moved, the Software Locator needs to reflect the + new location.) + + The location is expressed as a URI string. The string MUST conform + to URI syntax requirements [RFC3986]. The URI scheme describes the + context of the described location. For example, in most cases the + location of the installed software product will be expressed in terms + of its path in the filesystem. For such locations, the location URI + scheme MUST be "file", and the URI MUST conform to the "file" URI + scheme standard [RFC8089], including the percent-encoding of + whitespace and other special characters. It is possible that other + schemes could be used to represent other location contexts. Apart + from specifying the use of the "file" scheme, this specification does + not identify other schemes or define their use. When representing + software products in other location contexts, tools MUST be + consistent in their use of schemes, but the exact schemes are not + normatively defined here. SWIMA implementations are not limited to + the IANA list of URI schemes <https://www.iana.org/assignments/ + uri-schemes/> and can define new schemes to support other types of + application locations. + + + + + +Schmidt, et al. Standards Track [Page 20] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + It is possible that a SWIMA-PC is unable to determine the location of + a reported software product. In this case, the SWIMA-PC MUST provide + a zero-length Software Locator. + +3.4.5. Source Identifiers + + All SWIMA-PCs MUST track the source of each piece of software + information they report. Each time a SWIMA-PC gets information to + send to a given SWIMA-PV from a new source (from the perspective of + that SWIMA-PV), the SWIMA-PC MUST assign that source a Source + Identifier, which is an 8-bit unsigned integer. Each item reported + includes the number of the Source Identifier for the source that + provided that information. All information that is provided by that + source MUST be delivered with this same Source Identifier. This MUST + be done for each source used. If the SWIMA-PC is ever unclear as to + whether a given source is new or not, it MUST assume that this is a + new source and assign it a new Source Identifier. Source Identifier + numbers do not need to be assigned sequentially. SWIMA does not + support the presence of more than 256 sources, as the chance that a + single endpoint will have more than 256 methods of collecting + inventory information is vanishingly small. All possible values + between 0 and 255 are valid; there are no reserved Source Identifier + numbers. + + Source Identifiers can help with (although will not completely + eliminate) the challenges posed by multiple reporting of a single + software instance. If multiple sources each report the same type of + software product once, there is most likely a single instance of that + product installed on the endpoint, which each source has detected + independently. On the other hand, if multiple instances are reported + by a single source, this almost certainly means that there are + actually multiple instances that are being reported. + + The SWIMA-PC is responsible for tracking associations between Source + Identifiers and the given data source. This association MUST remain + consistent with regard to a given SWIMA-PV while there is an active + PB-TNC session with that SWIMA-PV. The SWIMA-PC MAY have a different + Source Identifier association for different SWIMA-PVs. Likewise, the + SWIMA-PC MAY change the Source Identifier association for a given + SWIMA-PV if the PB-TNC session terminates. However, implementers of + SWIMA-PCs will probably find it easier to manage associations by + maintaining the same association for all SWIMA-PVs and across + multiple sessions. + + Of special note, event records reported from the SWIMA-PC's event log + (discussed in Section 3.7) also need to be sent with their associated + data source. The Source Identifier reported with events MUST be the + current (i.e., at the time the event is sent) Source Identifier + + + +Schmidt, et al. Standards Track [Page 21] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + associated with the data source that produced the event, regardless + of how long ago that event occurred. Event logs are likely to + persist far longer than a single PB-TNC session. SWIMA-PCs MUST + ensure that each event can be linked to the appropriate data source, + even if the Source Identifiers used when the event was created have + since been reassigned. In other words, when sending an event, it + needs to be sent with the Source Identifier currently linked to the + data source that produced it, regardless of whether a different + Source Identifier would have been associated with the event when the + event was first created. + + Note that the Source Identifier is primarily used to support + recognition, rather than identification, of sources. That is to say, + a Source Identifier can tell a recipient that two events were + reported by the same source, but the number will not necessarily help + that recipient determine which source was used. Moreover, different + SWIMA-PCs will not necessarily use the same Source Identifiers for + the same sources. SWIMA-PCs MUST track the assignment of Source + Identifiers to ensure consistent application thereof. SWIMA-PCs MUST + also track which Source Identifiers have been used with each SWIMA-PV + with which they communicate. + +3.4.6. Using Software and Record Identifiers in SWIMA Attributes + + A SWIMA attribute reporting an endpoint's Software Inventory Evidence + Collection always contains the Software Identifiers associated with + the identified software products. A SWIMA attribute might or might + not also contain copies of Software Inventory Evidence Records. The + attribute exchange is identical to the diagram shown in Figure 2, + regardless of whether Software Inventory Evidence Records are + included. The SWIMA Request attribute indicates whether the response + is required to include Software Inventory Evidence Records. + Excluding Software Inventory Evidence Records can reduce the + attribute size of the response by multiple orders of magnitude when + compared to sending the same inventory with full records. + +3.5. Targeted Requests + + Sometimes a SWIMA-PV does not require information about every piece + of software on an endpoint but only needs to receive updates about + certain software instances. For example, enterprise endpoints might + be required to have certain software products installed and to keep + these updated. Instead of requesting a complete inventory just to + see if these products are present, the SWIMA-PV can make a "targeted + request" for the software in question. + + + + + + +Schmidt, et al. Standards Track [Page 22] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Targeted requests follow the same attribute exchange as the exchange + described in Figure 2. The SWIMA-PV targets its request by providing + one or more Software Identifiers in its SWIMA Request attribute. The + SWIMA-PC MUST then limit its response to contain only records that + match the indicated Software Identifier(s). This allows the network + exchange to exclude information that is not relevant to a given + policy question, thus reducing unnecessary bandwidth consumption. + The SWIMA-PC's response might or might not include Software Inventory + Evidence Records, depending on the parameters of the SWIMA Request. + + Note that targeted requests identify the software relevant to the + request only through Software Identifiers. This specification does + not support arbitrary, parameterized querying of records. For + example, one cannot request all records from a certain software + publisher or all records created by a particular data source. + Targeted requests only allow a requester to request specific software + (as identified by their Software Identifiers) and receive a response + that is limited to the named software. + + There is no assumption that a SWIMA-PC will recognize "synonymous + records" -- that is, records from different sources for the same + software. Recall that different sources and data models may use + different Software Identifier strings for the same software product. + The SWIMA-PC returns only records that match the Software Identifiers + in the SWIMA Request, even if there might be other records in the + endpoint's Software Inventory Evidence Collection for the same + software product. This is necessary because SWIMA-PCs might not have + the ability to determine that two Software Identifiers refer to the + same product. + + A targeted SWIMA Request attribute does not specify Record + Identifiers or Software Locators. The response to a targeted request + MUST include all records associated with the named Software + Identifiers, including the case where there are multiple records + associated with a single Software Identifier. + + SWIMA-PCs MUST accept targeted requests and process them correctly as + described above. SWIMA-PVs MUST be capable of making targeted + requests and processing the responses thereto. + +3.6. Monitoring Changes in an Endpoint's Software Inventory Evidence + Collection + + The software collection on an endpoint is not static. As software is + installed, uninstalled, patched, or updated, the Software Inventory + Evidence Collection is expected to change to reflect the new software + state on the endpoint. Different data sources might update the + evidence collection at different rates. For example, a package + + + +Schmidt, et al. Standards Track [Page 23] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + manager might update its records in the Software Inventory Evidence + Collection immediately whenever it is used to add or remove a + software product. By contrast, sources that perform periodic + examination of the endpoint would likely only update their records in + the Software Inventory Evidence Collection after each examination. + + All SWIMA-PCs MUST be able to detect changes to the Software + Inventory Evidence Collection. Specifically, SWIMA-PCs MUST be able + to detect: + + o The creation of records + + o The deletion of records + + o The alteration of records + + An "alteration" is anything that modifies the contents of a record + (or would modify it, if the record is dynamically generated on + demand) in any way, regardless of whether the change is functionally + meaningful. + + SWIMA-PCs MUST detect such changes to the endpoint's Software + Inventory Evidence Collection in close to real time (i.e., within + seconds) when the SWIMA-PC is operating. In addition, in the case + where there is a period during which the SWIMA-PC is not operating, + the SWIMA-PC MUST be able to determine the net change to the + endpoint's Software Inventory Evidence Collection over the period it + was not operational. Specifically, the "net change" represents the + difference between (1) the state of the endpoint's Software Inventory + Evidence Collection when the SWIMA-PC was last operational and + monitoring its state and (2) the state of the endpoint's Software + Inventory Evidence Collection when the SWIMA-PC resumed operation. + Note that a net change might not reflect the total number of change + events over this interval. For example, if a record was altered + three times during a period when the SWIMA-PC was unable to monitor + for changes, the net change of this interval might only note that + there was an alteration to the record, but not how many individual + alteration events occurred. It is sufficient for a SWIMA-PC's + determination of a net change to note that there was a difference + between the earlier and current state, rather than to enumerate all + the individual events that allowed the current state to be reached. + + The SWIMA-PC MUST assign a time to each detected change in the + endpoint's Software Inventory Evidence Collection. These timestamps + correspond to the SWIMA-PC's best understanding as to when the + detected change occurred. For changes to the endpoint's Software + Inventory Evidence Collection that occur while the SWIMA-PC is + operating, the SWIMA-PC ought to be able to assign a time to the + + + +Schmidt, et al. Standards Track [Page 24] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + event that is accurate to within a few seconds. For changes to the + endpoint's Software Inventory Evidence Collection that occur while + the SWIMA-PC is not operational, upon becoming operational the + SWIMA-PC needs to make a best guess as to the time of the relevant + events (possibly by looking at timestamps on files), but these values + might be off. In the case of dynamically generated records, the time + of change is the time at which the data from which the records are + generated changes, not the time at which a changed record is + generated. For example, if records are dynamically generated based + on data in an RPM database (<http://rpm.org/>), the time of change + would be when the RPM database changed. + + With regard to deletions of records, the SWIMA-PC needs to detect the + deletion of a given record and MUST retain a copy of the full deleted + record along with the associated Record Identifier and Software + Locator so that the record and associated information can be provided + to the SWIMA-PV upon request. This copy of the record MUST be + retained for a reasonable amount of time. Vendors and administrators + determine what "reasonable" means, but a copy of the record SHOULD be + retained for as long as the event recording the deletion of the + record remains in the SWIMA-PC's event log (as described in + Section 3.7). This is recommended, because as long as the event is + in the SWIMA-PC's event log the SWIMA-PC might send a change event + attribute (described in Section 3.7) that references this record, and + a copy of the record is needed if the SWIMA-PV wants a full copy of + the relevant record. In the case that a SWIMA-PC is called upon to + report a deletion event that is still in the event log but where the + record itself is no longer available, the SWIMA-PC will still return + an entry corresponding to the deletion event, but the field of that + entry that would normally contain the full copy of the record SHOULD + be zero-length. + + With regard to alterations to a record, SWIMA-PCs MUST detect any + alterations to the contents of a record. Alterations need to be + detected even if they have no functional impact on the record. A + good guideline is that any alteration to a record that might change + the value of a hash taken on the record's contents needs to be + detected by the SWIMA-PC. A SWIMA-PC might be unable to distinguish + modifications to the contents of a record from modifications to the + metadata that the filesystem associates with the record. For + example, a SWIMA-PC might use the "last modification" timestamp as an + indication of alteration to a given record, but a record's last + modification time can change for reasons other than modifications to + the record's contents. A SWIMA-PC is still considered compliant with + this specification if it also reports metadata change events that do + not change the record itself as alterations to the record. In other + words, while SWIMA-PC implementers are encouraged to exclude + modifications that do not affect the bytes within the record, + + + +Schmidt, et al. Standards Track [Page 25] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + discriminating between modifications to file contents and changes to + file metadata can be difficult and time consuming on some systems. + As such, as long as the alterations detected by a SWIMA-PC always + cover all modifications to the contents of a record, the SWIMA-PC is + considered compliant even if it also registers alterations that do + not modify the contents of a record as well. When recording an + alteration to a record, the SWIMA-PC is only required to note that an + alteration occurred. The SWIMA-PC is not required to note or record + how the record was altered, nor is it possible to include such + details in SWIMA attributes reporting the change to a SWIMA-PV. + There is no need to retain a copy of the original record prior to the + alteration. + + When a record changes, it SHOULD retain the same Record Identifier. + The Software Locator might or might not change, depending on whether + the software changed locations during the changes that led to the + record change. A record change MUST retain the same Software + Identifier. This means that any action that changes a software + product (e.g., application of a patch that results in a change to the + product's version) MUST NOT be reflected by a record change but + instead MUST result in the deletion of the old record and the + creation of a new record. This reflects the requirement that a + record in the endpoint's Software Inventory Evidence Collection + correspond directly with an instance of a specific software product. + +3.7. Reporting Change Events + + As noted in Section 3.6, SWIMA-PCs are required to detect changes to + the endpoint's Software Inventory Evidence Collection (creation, + deletion, and alteration) in near real time while the SWIMA-PC is + operational, and a given SWIMA-PC MUST be able to account for any net + change to the endpoint's Software Inventory Evidence Collection that + occurs when the SWIMA-PC is not operational. However, to be of use + to the enterprise, the NEA Server needs to be able to receive these + events and be able to understand how new changes relate to earlier + changes. In SWIMA, this is facilitated by reporting change events. + All SWIMA-PCs MUST be capable of receiving requests for change events + and sending change event attributes. All SWIMA-PVs MUST be capable + of requesting and receiving change event attributes. + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 26] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.7.1. Event Identifiers + + To be useful, change events need to be correctly ordered. The + ordering of events is facilitated by two pieces of information: an + Event Identifier (EID) value and an EID Epoch value. + + An EID is a 4-byte unsigned integer that the SWIMA-PC assigns + sequentially to each observed event (whether detected in real time or + deduced by looking for net changes over a period of SWIMA-PC + inactivity). All EIDs exist within the context of some "EID Epoch", + which is also represented as a 4-byte unsigned integer. EID Epochs + are used to ensure synchronization between the SWIMA-PC and any + SWIMA-PVs with which it communicates. EID Epoch values MUST be + generated in such a way as to minimize the chance that an EID Epoch + will be reused, even in the case where the SWIMA-PC reverts to an + earlier state. For this reason, sequential EID Epochs are + discouraged, since loss of state could result in value reuse. There + are multiple reasons that a SWIMA-PC might need to deliberately reset + its EID counter, including exhaustion of available EID values, the + need to purge entries from the event log to recover memory, or + corruption of the event log. In all cases where a SWIMA-PC needs to + reset its EID counter, a new EID Epoch MUST be selected. + + Within an Epoch, EIDs MUST be assigned sequentially, so that if a + particular event is assigned an EID of N, the next observed event is + given an EID of N+1. In some cases, events might occur + simultaneously, or the SWIMA-PC might not otherwise be able to + determine an ordering for events. In these cases, the SWIMA-PC + creates an arbitrary ordering of the events and assigns EIDs + according to this ordering. Two change events MUST NOT ever be + assigned the same EID within the same EID Epoch. No meaningful + comparison can be made between EID values of different Epochs. + + The EID value of 0 is reserved and MUST NOT be associated with any + event. Specifically, an EID of 0 in a SWIMA Request attribute + indicates that a SWIMA-PV wants an inventory response rather than an + event response, while an EID of 0 in a SWIMA Response is used to + indicate the initial state of the endpoint's Software Inventory + Evidence Collection prior to the observation of any events. Thus, + the very first recorded event in a SWIMA-PC's records within an EID + Epoch MUST be assigned a value of 1. Note that EID and EID Epoch + values are assigned by the SWIMA-PC without regard to whether events + are being reported to one or more SWIMA-PVs. The SWIMA-PC records + events and assigns EIDs during its operation. All SWIMA-PVs that + request event information from the SWIMA-PC will have those requests + served from the same event records and thus will see the same EIDs + and EID Epochs for the same events. + + + + +Schmidt, et al. Standards Track [Page 27] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + If a SWIMA-PC uses multiple sources, a SWIMA-PC's assignment of EIDs + MUST reflect the presence and order of all events on the endpoint (at + least for supported sources), regardless of the source. This means + that if source A experiences an event and then source B experiences + two events, and then source A experiences another two events, the + SWIMA-PC is required to capture five events with consecutive EID + values reflecting the order in which the events occurred. + + The SWIMA-PC MUST ensure that there is no coverage gap (i.e., change + events that are not recorded in the SWIMA-PC's records) in its change + event records. This is necessary because a coverage gap might give a + SWIMA-PV a false impression of the endpoint's state. For example, if + a SWIMA-PV saw an event indicating that a particular record had been + added to the endpoint's Software Inventory Evidence Collection but + did not see any subsequent events indicating that the record in + question had been deleted, it might reasonably assume that this + record was still present and thus that the indicated software was + still installed (assuming that the Epoch has not changed). If there + is a coverage gap in the SWIMA-PC's event records, however, this + assumption could be false. For this reason, the SWIMA-PC's event + records MUST NOT contain gaps. In the case where there are periods + where it is possible that changes occurred without the SWIMA-PC + detecting or recording them, the SWIMA-PC MUST either (1) compute a + net change and update its event records appropriately or (2) pick a + new EID Epoch to indicate a discontinuity with previous event + records. + + Within a given Epoch, once a particular event has been assigned an + EID, this association MUST NOT be changed. That is, within an Epoch, + once an EID is assigned to an event, that EID cannot be reassigned to + a different event, and the event cannot be assigned a different EID. + When the SWIMA-PC's Epoch changes, all of these associations between + EIDs and events are cancelled, and EID values once again become free + for assignment. + +3.7.2. Core Event-Tracking Information + + Whether reporting events or full inventories, it is important to know + how the reported information fits into the overall timeline of change + events. This is why all SWIMA Response attributes include fields to + place that response within the sequence of detected events. + Specifically, all SWIMA Responses include a Last EID field and an EID + Epoch field. The EID Epoch field identifies the EID Epoch in which + the SWIMA Response was sent. If the SWIMA Response is reporting + events, all reported events occurred within the named EID Epoch. The + Last EID (which is also always from the named EID Epoch) indicates + the EID of the last recorded change event at the time that the SWIMA + + + + +Schmidt, et al. Standards Track [Page 28] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Response was sent. These two fields allow any response to be placed + in the context of the complete set of detected change events within a + given EID Epoch. + +3.7.3. Updating Inventory Knowledge Based on Events + + Modern endpoints can have hundreds of software products installed, + most of which are unlikely to change from one day to the next. As + such, instead of exchanging a complete list of an endpoint's + inventory on a regular basis, one might wish to only identify changes + since some earlier known state of this inventory. This is readily + facilitated by the use of EIDs to place change events in a context + relative to the earlier state. + + As noted above, every SWIMA Response sent by a SWIMA-PC to a SWIMA-PV + (as described in Sections 3.3 through 3.5) includes the EID Epoch and + EID of the last event recorded prior to that response being compiled. + This allows the SWIMA-PV to place all subsequently received event + records in context relative to this SWIMA Response attribute (since + the EIDs represent a total ordering of all changes to the endpoint's + Software Inventory Evidence Collection). Specifically, a SWIMA-PV + (or, more likely, a database that collects and records its findings) + can record an endpoint's full inventory and also the EID and Epoch of + the most recent event reflected at the time of that inventory. From + that point on, if change events are observed, the attribute + describing these events indicates the nature of the change, the + affected records, and the order in which these events occurred (as + indicated by the sequential EIDs). Using this information, any + remote record of the endpoint's Software Inventory Evidence + Collection can be updated appropriately. + +3.7.4. Using Event Records in SWIMA Attributes + + A SWIMA-PV MUST be able to request a list of event records instead of + an inventory. The attribute flow in such an exchange looks the same + as the basic flow shown in Figure 2. The only difference is that in + the SWIMA Request attribute the SWIMA-PV provides an EID other than + 0. (An EID value of 0 in a SWIMA Request represents a request for an + inventory.) When the SWIMA-PC receives such a request, instead of + identifying records from the endpoint's Software Inventory Evidence + Collection, it consults its list of detected changes. The SWIMA-PC + MUST add an event record to the SWIMA Response attribute for each + recorded change event with an EID greater than or equal to the EID in + the SWIMA Request attribute (although the targeting of requests, as + described in the next paragraph, might limit this list). A list of + event records MUST only contain events with EIDs that all come from + the current Epoch. + + + + +Schmidt, et al. Standards Track [Page 29] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + SWIMA-PVs can target requests for event records by including one or + more Software Identifiers, as described in Section 3.5, in the SWIMA + Request that requests an event record list. A targeted request for + event records is used to indicate that only events affecting software + that matches one of the provided Software Identifiers are to be + returned. Specifically, in response to a targeted request for event + records, the SWIMA-PC MUST exclude any event records that are less + than the indicated EID (within the current EID Epoch) and exclude any + event records where the affected software does not match one of the + provided Software Identifiers. This might mean that the resulting + list of event records sent in the response attribute does not provide + a continuous sequence of EIDs. Both SWIMA-PCs and SWIMA-PVs MUST + support targeted requests for event records. + +3.7.5. Partial and Complete Lists of Event Records in SWIMA Attributes + + Over time, a SWIMA-PC might record a large number of change events. + If a SWIMA-PV requests all change events covering a long period of + time, the resulting SWIMA Response attribute might be extremely + large, especially if the SWIMA-PV requests the inclusion of Software + Inventory Evidence Records in the response. In the case that the + resulting attribute is too large to send (because it exceeds either + (1) the 4 GB attribute size limit imposed by the PA-TNC specification + or (2) some smaller size limit imposed on the SWIMA-PC), the SWIMA-PC + MAY send a partial list of event records back to the SWIMA-PV. + + The generation of a partial list of events in a SWIMA Response + attribute requires the SWIMA-PC to identify a "consulted range" of + EIDs. A consulted range is the set of event records that are + examined for inclusion in the SWIMA Response attribute and that are + included in that attribute if applicable. Recall that if a SWIMA + Request is targeted, only event records that involve the indicated + software would be applicable. (See Section 3.5 for more on targeted + requests.) If a request is not targeted, all event records in the + consulted range are applicable and are included in the SWIMA Response + attribute. + + The lower bound of the consulted range MUST be the EID provided in + the SWIMA Request. (Recall that a SWIMA-PV indicates a request for + event records by providing a non-zero EID value in the SWIMA Request. + See Section 3.7.4.) The upper bound of the consulted range is the + EID of the latest event record (as ordered by EID values) that is + included in the SWIMA Response attribute if it is applicable to the + request. The EID of this last event record is called the "Last + Consulted EID". The SWIMA-PC chooses this Last Consulted EID based + on the size of the event record list it is willing to provide to the + SWIMA-PV. + + + + +Schmidt, et al. Standards Track [Page 30] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + A partial result list MUST include all applicable event records + within the consulted range. This means that for any applicable event + record (i.e., any event record in a non-targeted request or any event + record associated with software matching a requested Software + Identifier in a targeted request) whose EID is greater than or equal + to the EID provided in the SWIMA Request and whose EID is less than + or equal to the Last Consulted EID, that event record MUST be + included in the SWIMA Response conveying this partial list of event + records. This ensures that every partial list of event records is + always complete within its indicated range. Remember that for + targeted requests, "complete" doesn't mean that all EIDs between the + range endpoints are present -- only that every matching EID between + the range endpoints is included. + + In addition to the EID Epoch and Last EID fields that are present in + all SWIMA Responses, all SWIMA Response attributes that convey event + records include a Last Consulted EID field. Note that if responding + to a targeted SWIMA Request, the SWIMA Response attribute might not + contain the event record whose EID matches the Last Consulted EID + value. For example, that record might have been deemed inapplicable + because it did not match the specified list of Software Identifiers + in the SWIMA Request. + + If a SWIMA-PV receives a SWIMA Response attribute where the Last EID + and Last Consulted EID fields are identical, the SWIMA-PV knows that + it has received a result list that is complete, given the parameters + of the request, up to the present time. + + On the other hand, if the Last EID is greater than the Last Consulted + EID, the SWIMA-PV has received a partial result list. (The Last + Consulted EID MUST NOT exceed the Last EID.) In this case, if the + SWIMA-PV wishes to try to collect the rest of the partially delivered + result list, it then sends a new SWIMA Request whose EID is one + greater than the Last Consulted EID in the preceding response. Doing + this causes the SWIMA-PC to generate another SWIMA Response attribute + containing event records where the earliest reported event record is + the one immediately after the event record with the Last Consulted + EID (since EIDs are assigned sequentially). By repeating this + process until it receives a SWIMA Response where the Last EID and + Last Consulted EID are equal, the SWIMA-PV is able to collect all + event records over a given range, even if the complete set of event + records would be too large to deliver via a single attribute. + + Implementers need to be aware that a SWIMA Request might specify an + EID that is greater than the EID of the last event recorded by a + SWIMA-PC. In accordance with the behaviors described in + Section 3.7.4, a SWIMA-PC MUST respond to such a request with a SWIMA + Response attribute that contains zero event records. This is because + + + +Schmidt, et al. Standards Track [Page 31] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + the SWIMA-PC has recorded no event records with EIDs greater than or + equal to the EID in the SWIMA Request. In such a case, the Last + Consulted EID field MUST be set to the same value as the Last EID + field in this SWIMA Response attribute. This case is called out + because the consulted range on a SWIMA-PC in such a situation is a + negative range, where the "first" EID in the range (provided in the + SWIMA Request) is greater than the "last" EID in the range (this + being the EID of the last recorded event on the SWIMA-PC). + Implementers need to ensure that SWIMA-PCs do not experience problems + in such a circumstance. + + Note that this specification only supports the returning of partial + results when returning event records. There is no way to return a + partial inventory list under this specification. + +3.7.6. Synchronizing Event Identifiers and Epochs + + Since EIDs are sequential within an Epoch, if a SWIMA-PV's list of + event records contains gaps in the EID values within a single Epoch, + the SWIMA-PV knows that there are events that it has not accounted + for. The SWIMA-PV can request either (1) a new event list to collect + the missing events or (2) a full inventory to resync its + understanding of the state of the endpoint's Software Inventory + Evidence Collection. In either case, after the SWIMA-PV's record of + the endpoint's Software Inventory Evidence Collection has been + updated, the SWIMA-PV can record the new latest EID value and track + events normally from that point on. + + If the SWIMA-PV receives any attribute from a SWIMA-PC where the EID + Epoch differs from the EID Epoch that was used previously, then the + SWIMA-PV or any entity using this information to track the endpoint's + Software Inventory Evidence Collection knows that there is a + discontinuity in its understanding of the endpoint's state. To move + past this discontinuity and reestablish a current understanding of + the state of the endpoint's Software Inventory Evidence Collection, + the SWIMA-PV needs to receive a full inventory from the endpoint. + The SWIMA-PV cannot be brought in sync with the endpoint's state + through the collection of any set of event records in this situation. + This is because it is not possible to account for all events on the + SWIMA-PC since the previous Epoch was used: there is no way to query + for EIDs from a previous Epoch. Once the SWIMA-PV has received a + full inventory for the new Epoch, the SWIMA-PV records the latest EID + reported in this new Epoch and can track further events normally. + + A SWIMA-PC MUST NOT report events with EIDs from any Epoch other than + the current EID Epoch. The SWIMA-PC MAY choose to purge all event + records from a previous Epoch from memory after an Epoch change. + Alternately, the SWIMA-PC MAY choose to retain some event records + + + +Schmidt, et al. Standards Track [Page 32] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + from a previous EID Epoch and assign them new EIDs in the current + Epoch. However, in the case where a SWIMA-PC chooses the latter + option it MUST ensure that the order of events according to their + EIDs is unchanged and that there is no coverage gap between the first + retained event recorded during the previous Epoch (now reassigned + with an EID in the current Epoch) and the first event recorded during + the current Epoch. In particular, the SWIMA-PC MUST ensure that all + change events that occurred after the last recorded event from the + previous Epoch are known and recorded. (This might not be possible + if the Epoch change is due to state corruption on the SWIMA-PC.) A + SWIMA-PC might choose to reassign EIDs to records from a preceding + Epoch to create a "sliding window" of events, where each Epoch change + represents a shift in the window of available events. + + In the case where a SWIMA-PC suffers a crash and loses track of its + current EID Epoch or current EID, then it MUST generate a new EID + Epoch value and begin assigning EIDs within that Epoch. In this + case, the SWIMA-PC MUST purge all event records from before the + crash, as it cannot ensure that there is not a gap between the last + of those records and the next detected event. The process for + generating a new EID Epoch MUST minimize the possibility that the + newly generated EID Epoch is the same as a previously used EID Epoch. + + The SWIMA-PV will normally never receive an attribute indicating that + the latest EID is less than the latest EID reported in a previous + attribute within the same EID Epoch. If this occurs, the SWIMA-PC + has suffered an error of some kind, possibly indicative of at least + partial corruption of its event log. In this case, the SWIMA-PV MUST + treat the situation as if there was a change in Epoch and treat any + local copy of the endpoint's Software Inventory Evidence Collection + as being out of sync until a full inventory can be reported by the + SWIMA-PC. The SWIMA-PV SHOULD log the occurrence so the SWIMA-PC can + be examined to ensure that it is now operating properly. + +3.8. Subscriptions + + Thus far, all attribute exchanges discussed assume that a SWIMA-PV + sent a SWIMA Request attribute and the SWIMA-PC is providing a direct + response to that request. SWIMA also supports the ability of a + SWIMA-PC to send a SWIMA Response to the SWIMA-PV in response to + observed changes in the endpoint's Software Inventory Evidence + Collection, instead of in direct response to a SWIMA Request. An + agreement by a SWIMA-PC to send content when certain changes to the + endpoint's Software Inventory Evidence Collection are detected is + referred to in this specification as a "subscription", and the + SWIMA-PV that receives this content is said to be "subscribed to" the + given SWIMA-PC. All SWIMA-PCs and SWIMA-PVs MUST support the use of + subscriptions. + + + +Schmidt, et al. Standards Track [Page 33] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.8.1. Establishing Subscriptions + + A SWIMA-PV establishes a subscription on a particular SWIMA-PC by + sending a SWIMA Request attribute with the Subscribe flag set. The + SWIMA Request attribute is otherwise identical to the SWIMA Requests + discussed in previous sections. Specifically, such a SWIMA Request + might or might not request the inclusion of Software Inventory + Evidence Records, might or might not be targeted, and might request + change event records or endpoint inventory. Assuming that no error + is encountered, a SWIMA-PC MUST send a SWIMA Response attribute in + direct response to this SWIMA Request attribute, just as if the + Subscribe flag was not set. As such, the attribute exchange that + establishes a new subscription in a SWIMA-PC has the same flow as the + flow seen in the previous attribute exchanges, as depicted in + Figure 2. If the SWIMA-PV does not receive a PA-TNC Error attribute + (as described in Sections 3.9 and 5.15) in response to its + subscription request, the subscription has been successfully + established on the SWIMA-PC. The SWIMA Request attribute that + establishes a new subscription is referred to as the "establishing + request" for that subscription. + + When a subscription is established, it is assigned a Subscription ID + value. The Subscription ID is equal to the value of the Request ID + of the establishing request. (For more about Request IDs, see + Section 5.5.) + + A SWIMA-PC MUST have the ability to record and support at least 8 + simultaneous subscriptions and SHOULD have the ability to support + more than this. These subscriptions might all come from a single + SWIMA-PV, might all be from different SWIMA-PVs (residing on the same + or different NEA Servers), or might be a mix. In the case that a + SWIMA-PC receives a subscription request but is unable to support an + additional subscription, it MUST respond to the request with a PA-TNC + Error attribute with error code SWIMA_SUBSCRIPTION_DENIED_ERROR. + + A SWIMA-PV MUST have the ability to record and support at least 256 + simultaneous subscriptions and SHOULD have the ability to support + more than this. Any number of these subscriptions might be to the + same SWIMA-PC, and any number of these subscriptions might be to + different SWIMA-PCs. In the latter case, some of these SWIMA-PCs + might share a single endpoint, while others might be on different + endpoints. + + + + + + + + + +Schmidt, et al. Standards Track [Page 34] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.8.2. Managing Subscriptions + + The SWIMA-PC MUST record each accepted subscription along with the + identity of the party to whom attributes are to be pushed. This + identity includes two parts: + + o An identifier for the PB-TNC session between the Posture Broker + Server on a NEA Server and the Posture Broker Client on the + endpoint. This identifier is called the "Connection ID" + + o The Posture Validator Identifier for the SWIMA-PV that made the + subscription request + + The Posture Validator Identifier is provided in the field of the same + name in the PB-PA message that encapsulates the subscription request + attribute (Section 4.5 of [RFC5793]), and this information is passed + along to NEA Posture Collectors (Section 3.3 of [RFC5792]). The + Connection ID is a value local to a particular endpoint's Posture + Broker Client that identifies an ongoing session between a specific + Posture Broker Client and a specific Posture Broker Server. Posture + Broker Clients and Posture Broker Servers need to be capable of + supporting multiple simultaneous sessions, so they already need a way + to locally distinguish each ongoing session. (See Section 3.1 of + [RFC5793].) A Posture Broker Client needs to assign each session at + a given time its own Connection ID that lasts for the life of that + session. Connection IDs only need to be unique among the Connection + IDs of simultaneously occurring sessions on that endpoint. This + Connection ID needs to be exposed to the SWIMA-PC, and the SWIMA-PC + needs to be informed when the Connection ID is unbound due to the + closure of that connection. + + Likewise, SWIMA-PVs MUST record each accepted subscription for which + they are the subscribing party, including the parameters of the + establishing request, along with the associated Subscription ID and + the identity of the SWIMA-PC that will be fulfilling the + subscription. The SWIMA-PV needs to retain this information in order + to correctly interpret pushed SWIMA Response attributes sent in + fulfillment of the subscription. The identity of the SWIMA-PC is + given in the Posture Collector Identifier [RFC5793] of the PB-PA + message header in all messages from that SWIMA-PC. The SWIMA-PV has + no need to record the associated connection ID of the subscription as + the SWIMA-PV is only receiving, not sending, attributes once a + subscription is established. + + + + + + + + +Schmidt, et al. Standards Track [Page 35] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.8.3. Terminating Subscriptions + + Subscriptions MAY be terminated at any time by the subscribing + SWIMA-PV by setting the Clear Subscriptions flag in a SWIMA Request. + (See Section 5.6 for more on using this flag.) In the case that a + SWIMA Request with the Clear Subscriptions flag set is received, the + SWIMA-PC MUST only clear subscriptions that match both the NEA + Server's Connection ID and the SWIMA-PV's Posture Validator + Identifier for this SWIMA Request and MUST clear all such + subscriptions. + + This specification does not give the SWIMA-PV the ability to + terminate subscriptions individually -- all subscriptions to the + SWIMA-PV are cleared when the Clear Subscriptions flag is set. + + This specification does not give the SWIMA-PC the ability to + unilaterally terminate a subscription. However, if the SWIMA-PC + experiences a fatal error while fulfilling a subscription, resulting + in sending a PA-TNC Error attribute with error code + SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR, then the subscription whose + fulfillment led to the error MUST be treated as terminated by both + the SWIMA-PC and the SWIMA-PV. Only the subscription experiencing + the error is cancelled; other subscriptions are unaffected. See + Section 3.9 for more on this error condition. + + Finally, a subscription is terminated if the connection between the + SWIMA-PC and SWIMA-PV is closed. This occurs when the Connection ID + used in the messages between the SWIMA-PC and the SWIMA-PV becomes + unbound. Loss of this Connection ID would prevent the SWIMA-PC from + sending messages in fulfillment of this subscription. As such, loss + of the Connection ID necessarily forces subscription termination + between the affected parties. + +3.8.4. Subscription Status + + A SWIMA-PV can request that a SWIMA-PC report the list of active + subscriptions for which the SWIMA-PV is the subscriber. A SWIMA-PV + can use this capability to recover lost information about active + subscriptions. A SWIMA-PV can also use this capability to verify + that a SWIMA-PC has not forgotten any of its subscriptions. The + latter is especially useful in cases where a SWIMA-PC does not send + any attributes in fulfillment of a given subscription for a long + period of time. The SWIMA-PV can check the list of active + subscriptions on the SWIMA-PC and verify whether the inactivity is + due to (1) a lack of reportable events or (2) the SWIMA-PC forgetting + its obligations to fulfill a given subscription. + + + + + +Schmidt, et al. Standards Track [Page 36] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + A SWIMA-PV requests a list of its subscriptions on a given SWIMA-PC + by sending that SWIMA-PC a Subscription Status Request. The SWIMA-PC + MUST then respond with a Subscription Status Response (or a PA-TNC + Error if an error condition is experienced). The Subscription Status + Response MUST contain one subscription record for each of the active + subscriptions for which the SWIMA-PV is the subscribing party. + +3.8.5. Fulfilling Subscriptions + + As noted in Section 3.6, SWIMA-PCs are required to automatically + detect changes to an endpoint's Software Inventory Evidence + Collection in near real time. For every active subscription, the + SWIMA-PC MUST send an attribute to the subscribed SWIMA-PV whenever a + change to relevant records is detected within the endpoint's Software + Inventory Evidence Collection. Such an attribute is said to be sent + "in fulfillment of" the given subscription, and any such attribute + MUST include that subscription's Subscription ID. If the + establishing request for that subscription was a targeted request, + then only records that match the Software Identifiers provided in + that establishing request are considered relevant. Otherwise (i.e., + for non-targeted requests), any record is considered relevant for + this purpose. Figure 3 shows a sample attribute exchange where a + subscription is established and then attributes are sent from the + SWIMA-PC in fulfillment of the established subscription. + + +-------------+ +--------------+ + | SWIMA-PC | | SWIMA-PV | Time + +-------------+ +--------------+ | + | | | + |<----------SWIMA Request-----------| | + | | | + |-----------SWIMA Response--------->| | + | | | + . . . + . . . + . . . + <Change Event>| | | + |----------SWIMA Response---------->| | + | | | + . . . + . . . + . . . + <Change Event>| | | + |----------SWIMA Response---------->| | + | | V + + Figure 3: Subscription Establishment and Fulfillment + + + + +Schmidt, et al. Standards Track [Page 37] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The contents of an attribute sent in fulfillment of a subscription + depend on the parameters provided in the establishing request for + that subscription. Specifically, the attribute sent in fulfillment + of a subscription has the same attribute type as would a direct + response to the establishing request. For example, if the + establishing request stipulated a response that contained an event + record list that included Software Inventory Evidence Records, all + attributes sent in fulfillment of this subscription will also consist + of event record lists with Software Inventory Evidence Records. As + such, all SWIMA Responses displayed in the exchange depicted in + Figure 3 are the same attribute type. A SWIMA Response generated in + fulfillment of an active subscription MUST be a valid SWIMA Response + attribute according to all the rules outlined in the preceding + sections. In other words, an attribute constructed in fulfillment of + a subscription will look the same as an attribute sent in direct + response to an explicit request from a SWIMA-PV that had the same + request parameters and that arrived immediately after the given + change event. There are a few special rules that expand on this + guideline, as discussed in Sections 3.8.5.1 through 3.8.5.5. + +3.8.5.1. Subscriptions That Report Inventories + + In the case that a SWIMA-PV subscribes to a SWIMA-PC and requests an + inventory attribute whenever changes are detected (i.e., the EID in + the establishing request is 0), then the SWIMA-PC MUST send the + requested inventory whenever a relevant change is detected. (A + "relevant change" is any change for non-targeted requests or a change + to an indicated record in a targeted request.) Upon detection of a + relevant change for an active subscription, the SWIMA-PC sends the + appropriate inventory information as if it had just received the + establishing request. Inventory attributes sent in fulfillment of + this subscription will probably have a large amount of redundancy, as + the same records are likely to be present in each of these SWIMA + attributes. The role of an inventory subscription is not to report + records just for the items that changed -- that is the role of a + subscription that reports events (see Section 3.8.5.2). A SWIMA-PC + MUST NOT exclude a record from an attribute sent in fulfillment of an + inventory subscription simply because that record was not involved in + the triggering event (although a record might be excluded for other + reasons, such as if the subscription is targeted; see + Section 3.8.5.3). + +3.8.5.2. Subscriptions That Report Events + + A SWIMA-PV indicates that it wishes to establish a subscription + requesting event records by providing a non-zero EID in the SWIMA + Request establishing the subscription (see Section 3.7.1). However, + when the SWIMA-PC constructs an attribute in fulfillment of the + + + +Schmidt, et al. Standards Track [Page 38] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + subscription (other than the direct response to the establishing + request), it MUST only include event records for the detected + change(s) that precipitated this response attribute. In other words, + it MUST NOT send a complete list of all changes starting with the + establishing request's EID, up through the latest change, every time + a new event is detected. In effect, the EID in the establishing + request is treated as being updated every time an attribute is sent + in fulfillment of this subscription, such that a single event is not + reported twice in fulfillment of a single subscription. As such, + every SWIMA-PC MUST track the EID of the last event that triggered an + attribute for the given subscription. When the next event (or set of + events) is detected, the SWIMA-PC MUST only report events with EIDs + after the last reported event. In the case that the EID Epoch of the + SWIMA-PC changes, the SWIMA-PC MUST reset this EID tracker to zero + (if the event log is completely purged) or to the new EID of the last + reported retained event (if the event log is partially purged to + create a "sliding window"). Doing this ensures that the SWIMA-PC + continues to only send events that have not been previously reported. + + Note that while a subscription is active, the subscribing SWIMA-PV + MAY make other requests for event records that overlap with events + that are reported in fulfillment of a subscription. Such requests + are not affected by the presence of the subscription, nor is the + subscription affected by such requests. In other words, a given + request will get the same results back whether or not there was a + subscription. Likewise, an attribute sent in fulfillment of a + subscription will contain the same information whether or not other + requests had been received from the SWIMA-PV. + + A SWIMA-PV needs to pay attention to the EID Epoch in these + attributes, as changes in the Epoch might create discontinuities in + the SWIMA-PV's understanding of the endpoint's Software Inventory + Evidence Collection state, as discussed in Section 3.7.6. In + particular, once the EID Epoch changes, a SWIMA-PV is unable to have + confidence that it has a correct understanding of the state of an + endpoint's Software Inventory Evidence Collection until after the + SWIMA-PV collects a complete inventory. + + SWIMA-PCs MAY send partial lists of event records in fulfillment of a + subscription. (See Section 3.7.5 for more on partial lists of event + records.) In the case that a SWIMA-PC sends a partial list of event + records in fulfillment of a subscription, it MUST immediately send + the next consecutive partial list and continue doing so until it has + sent the equivalent of the complete list of event records. In other + words, if the SWIMA-PC sends a partial list, it does not wait for + another change event to send another SWIMA Response; rather, it + continues sending SWIMA Responses until it has sent all event records + that would have been included in a complete fulfillment of the + + + +Schmidt, et al. Standards Track [Page 39] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + subscription. Note that the direct response to the establishing + request is not considered to be sent in fulfillment of a + subscription. However, in this case the SWIMA-PC MUST treat the + presence of unreported events as a triggering event for pushing + additional messages in fulfillment of the newly established + subscription. As such, the net effect is that if the direct response + to the establishing request (i.e., the Subscription Fulfillment flag + is unset) is partial, the SWIMA-PC will immediately follow this with + additional attributes (with the Subscription Fulfillment flag set) + until the complete set of events has been sent to the SWIMA-PV. + +3.8.5.3. Targeted Subscriptions + + Subscriptions MAY be targeted to only apply to records that match a + given set of Software Identifiers. In the case where changes that + affect multiple records are detected -- some matching the + establishing request's Software Identifiers and some not -- the + attribute sent in fulfillment of the subscription MUST only include + inventory or events (as appropriate) for records that match the + establishing request's Software Identifiers. The SWIMA-PC MUST NOT + include non-matching records in the attribute, even if those + non-matching records experienced change events that were simultaneous + with change events on the matching records. + + In addition, a SWIMA-PC MUST send an attribute in fulfillment of a + targeted subscription only when changes to the endpoint's Software + Inventory Evidence Collection impact one or more records matching the + subscription's establishing request's Software Identifiers. A + SWIMA-PC MUST NOT send any attribute in fulfillment of a targeted + subscription based on detected changes to the endpoint's Software + Inventory Evidence Collection that did not involve any of the records + targeted by that subscription. + +3.8.5.4. No Subscription Consolidation + + A SWIMA-PV MAY establish multiple subscriptions to a given SWIMA-PC. + If this is the case, it is possible that a single change event on the + endpoint might require fulfillment by multiple subscriptions and that + the information included in attributes that fulfill each of these + subscriptions might overlap. The SWIMA-PC MUST send separate + attributes for each established subscription that requires a response + due to the given event. Each of these attributes MUST contain all + information required to fulfill that individual subscription, even if + that information is also sent in other attributes sent in fulfillment + of other subscriptions at the same time. In other words, SWIMA-PCs + MUST NOT attempt to combine information when fulfilling multiple + subscriptions simultaneously, even if this results in some redundancy + in the attributes sent to the SWIMA-PV. + + + +Schmidt, et al. Standards Track [Page 40] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +3.8.5.5. Delayed Subscription Fulfillment + + A SWIMA-PC MAY delay the fulfillment of a subscription following a + change event in the interest of waiting to see if additional change + events are forthcoming and, if so, conveying the relevant records + back to the SWIMA-PV in a single SWIMA Response attribute. This can + help reduce network bandwidth consumption between the SWIMA-PC and + the SWIMA-PV. For example, consider a situation where 10 changes + occur a tenth of a second apart. If the SWIMA-PC does not delay in + assembling and sending SWIMA Response attributes, the SWIMA-PV will + receive 10 separate SWIMA Response attributes over a period of + 1 second. However, if the SWIMA-PC waits half a second after the + initial event before assembling a SWIMA Response, the SWIMA-PV only + receives two SWIMA Response attributes over the same period of time. + + Note that the ability to consolidate events for a single subscription + over a given period of time does not contradict the rules in + Section 3.8.5.4 prohibiting consolidation across multiple + subscriptions. When delaying fulfillment of subscriptions, SWIMA-PCs + are still required to fulfill each individual subscription + separately. Moreover, in the case that change events within the + delay window cancel each other out (e.g., a record is deleted and + then re-added), the SWIMA-PC MUST still report each change event, + rather than just report the net effect of changes over the delay + period. In other words, delayed fulfillment can decrease the number + of attributes sent by the SWIMA-PC, but it does not reduce the total + number of change events reported. + + SWIMA-PCs are not required to support delayed fulfillment of + subscriptions. However, in the case that the SWIMA-PC does support + delayed subscription fulfillment, it MUST be possible to configure + the SWIMA-PC to disable delayed fulfillment. In other words, parties + deploying SWIMA-PCs need to be allowed to disable delayed + subscription fulfillment in their SWIMA-PCs. The manner in which + such configuration occurs is left to the discretion of implementers, + although implementers MUST protect the configuration procedure from + unauthorized tampering. In other words, there needs to be some + assurance that unauthorized individuals are not able to introduce + long delays in subscription fulfillment. + +3.9. Error Handling + + In the case where the SWIMA-PC detects an error in a SWIMA Request + attribute that it receives, it MUST respond with a PA-TNC Error + attribute with an error code appropriate to the nature of the error. + (See Section 4.2.8 of PA-TNC [RFC5792] for more details about PA-TNC + Error attributes and error codes, and see Section 5.15 in this + specification for error codes specific to SWIMA attributes.) In the + + + +Schmidt, et al. Standards Track [Page 41] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + case that an error is detected in a SWIMA Request, the SWIMA-PC + MUST NOT take any action requested by this SWIMA Request, even if + partial completion of the request is possible. In other words, a + SWIMA Request that contains an error will be completely ignored by + the SWIMA-PC (beyond sending a PA-TNC Error attribute and possibly + logging the error locally); no attempt at partial completion of the + request will be made. + + In the case where the SWIMA-PC receives a valid SWIMA Request + attribute but experiences an error during the process of responding + to that attribute's instructions where that error prevents the + SWIMA-PC from properly or completely fulfilling that request, the + SWIMA-PC MUST send a PA-TNC Error attribute with an error code + appropriate to the nature of the error. In the case where a PA-TNC + Error attribute is sent, the SWIMA-PC MUST NOT take any of the + actions requested by the SWIMA Request attribute that led to the + detected error. This is the case even if some actions could have + been completed successfully and might even require the SWIMA-PC to + reverse some successful actions already taken before the error + condition was detected. In other words, either (1) all aspects of a + SWIMA Request complete fully and successfully (in which case the + SWIMA-PC sends a SWIMA Response attribute) or (2) no aspects of the + SWIMA Request occur (in which case the SWIMA-PC sends a PA-TNC Error + attribute). In the case that a SWIMA-PC sends a PA-TNC Error + attribute in response to a SWIMA Request, then the SWIMA-PC MUST NOT + also send any SWIMA Response attribute in response to the same SWIMA + Request. For this reason, the sending of a SWIMA Response attribute + MUST be the last action taken by a SWIMA-PC in response to a SWIMA + Request, to avoid the possibility of a processing error occurring + after that SWIMA Response attribute is sent. + + In the case that the SWIMA-PC detects an error that prevents it from + properly or completely fulfilling its obligations under an active + subscription, the SWIMA-PC MUST send a PA-TNC Error attribute with + error code SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR to the SWIMA-PV that + established this subscription. This type of PA-TNC Error attribute + identifies the specific subscription that cannot be adequately + honored due to the error condition and also identifies an error + "subtype". The error subtype indicates the error code of the error + condition the SWIMA-PC experienced that prevented it from honoring + the given subscription. In the case that the error condition cannot + be identified or does not align with any of the defined error codes, + the SWIMA_ERROR error code SHOULD be used in the subtype. In the + case that a SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR is sent, the + associated subscription MUST be treated as cancelled by both the + SWIMA-PC and the SWIMA-PV. + + + + + +Schmidt, et al. Standards Track [Page 42] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The SWIMA-PV MUST NOT send any PA-TNC Error attributes to SWIMA-PCs. + In the case that a SWIMA-PV detects an error condition, it SHOULD log + this error, but the SWIMA-PV does not inform any SWIMA-PCs of this + event. Errors might include, but are not limited to, the detection + of malformed SWIMA Response attributes sent from a given SWIMA-PC, as + well as the detection of error conditions when the SWIMA-PV processes + SWIMA Responses. + + Both SWIMA-PCs and SWIMA-PVs SHOULD log errors so that administrators + can trace the causes of errors. Log entries SHOULD include the code + of the error, the time it was detected, and additional descriptive + information to aid in understanding the nature and cause of the + error. Logs are an important debugging tool, and implementers are + strongly advised to include comprehensive logging capabilities in + their products. + +4. Protocol + + The SWIMA protocol supports two different types of message exchanges + for conveying software inventory information. These message + exchanges are described in the following subsections, along with + implementation requirements for supporting them. + + The SWIMA protocol also supports two simple status exchanges: a + Subscription Status exchange for conveying information about active + subscriptions, and a Source Metadata exchange for conveying + information about a SWIMA-PC's data sources. In both cases, a + SWIMA-PV sends a request attribute (Subscription Status Request or + Source Metadata Request, respectively) and a SWIMA-PC responds with a + matching response attribute (Subscription Status Response or Source + Metadata Response, respectively). As these exchanges are + straightforward, no additional information on the exchanges is + provided. + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 43] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +4.1. Direct Response to a SWIMA Request + + The first type of software information exchange is used to provide + the SWIMA-PV with a software inventory or event collection from the + queried endpoint. + + +-------------+ +--------------+ + | SWIMA-PC | | SWIMA-PV | Time + +-------------+ +--------------+ | + | | | + |<-----------SWIMA Request------------| | + | | | + | SWIMA Response* | | + |-----------------or----------------->| | + | PA-TNC Error | | + | | V + + *SWIMA Response is one of the following: Software Identifier + Inventory, Software Identifier Events, Software Inventory, + or Software Events. + + Figure 4: SWIMA Attribute Exchange (Direct Response to SWIMA Request) + + In this exchange, the SWIMA-PV indicates to the SWIMA-PC, via a SWIMA + Request, the nature of the information it wishes to receive + (inventory vs. events, full or targeted) and how it wishes the + returned inventory to be expressed (with or without Software + Inventory Evidence Records). The SWIMA-PC responds with the + requested information using the appropriate attribute type. A single + SWIMA Request MUST only lead to a single SWIMA Response or PA-TNC + Error that is in direct response to that request. + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 44] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +4.2. Subscription-Based Response + + The second type of software information exchange allows change-event- + based reporting based on a subscription. If there is an active + subscription on the endpoint, the SWIMA-PC sends a SWIMA Response to + the SWIMA-PV following a change event on the endpoint in fulfillment + of that subscription. Such an exchange is shown in Figure 5. + + +-------------+ +--------------+ + | SWIMA-PC | | SWIMA-PV | Time + +-------------+ +--------------+ | + | | | + <Change Event>| | | + |------SWIMA Response(s)*------>| | + | | | + | | V + + *SWIMA Response is one of the following: Software Identifier + Inventory, Software Identifier Events, Software Inventory, + or Software Events. + + Figure 5: SWIMA Attribute Exchange (in Fulfillment of an + Active Subscription) + + Note that unlike direct responses to a SWIMA Request, a single change + event can precipitate multiple SWIMA Responses for a single + subscription, but only if all but the last of those SWIMA Responses + convey partial lists of event records. When providing multiple SWIMA + Responses in this way, the initial responses contain partial lists of + event records and the last of those SWIMA Responses conveys the + remainder of the relevant event records, completing the delivery of + all relevant events in response to the change event. A single change + event MUST NOT otherwise be followed by multiple SWIMA Responses or + PA-TNC Error attributes in any combination. + +4.3. Required Exchanges + + All SWIMA-PVs and SWIMA-PCs MUST support both types of software + information exchanges. In particular, SWIMA-PCs MUST be capable of + pushing a SWIMA Response to a SWIMA-PV immediately upon detection of + a change to the endpoint's Software Inventory Evidence Collection in + fulfillment of established SWIMA-PV subscriptions, as described in + Section 3.8. + + All SWIMA-PCs MUST support both status exchanges (Subscription Status + and Source Metadata); SWIMA-PVs are recommended to support these + status exchanges, but doing so is not required. + + + + +Schmidt, et al. Standards Track [Page 45] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5. Software Inventory Messages and Attributes + + This section describes the format and semantics of the SWIMA + protocol. This protocol uses the PA-TNC message header format + [RFC5792]. + +5.1. PA Subtype (aka PA-TNC Component Type) + + The NEA PB-TNC [RFC5793] interface provides a general + message-batching protocol capable of carrying one or more PA-TNC + messages between the Posture Broker Client and Posture Broker Server. + When PB-TNC is carrying a PA-TNC message, the PB-TNC message headers + contain a 32-bit identifier called the "PA Subtype". The PA Subtype + field indicates the type of component associated with all of the + PA-TNC attributes carried by the PB-TNC message. The core set of + PA Subtypes is defined in the PA-TNC specification. This + specification defines a new "SWIMA Attributes" PA Subtype, which is + registered in Section 10.2 of this document and is used as a + namespace for the collection of SWIMA attributes defined in this + document. + + For more information on PB-TNC messages and PA-TNC messages, as well + as their message headers, see the PB-TNC [RFC5793] and PA-TNC + [RFC5792] specifications, respectively. + +5.2. SWIMA Attribute Overview + + Each PA-TNC attribute described in this specification is intended to + be sent between the SWIMA-PC and SWIMA-PV and so will be carried in a + PB-TNC message indicating a PA Subtype of "SWIMA Attributes". PB-TNC + messages MUST always include the SWIMA Attributes Subtype defined in + Section 5.1 when carrying SWIMA attributes over PA-TNC. The + attributes defined in this specification appear below, along with a + short summary of their purposes. + + PA-TNC attribute types are identified in the PA-TNC Attribute Header + via the PA-TNC Attribute Vendor ID field and the PA-TNC Attribute + Type field; see Section 4.1 of [RFC5792] for details. Table 1 + identifies the appropriate values for these fields for each attribute + type used within the SWIMA protocol. All attributes have a PEN value + of 0x000000. Both the hexadecimal and decimal values are provided in + the Integer column in the table. Each attribute is described in + greater detail in subsequent sections (identified in the table's + Description column). + + + + + + + +Schmidt, et al. Standards Track [Page 46] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +--------------+-----------------+----------------------------------+ + | Attribute | Integer | Description | + | Name | | | + +--------------+-----------------+----------------------------------+ + | SWIMA | 0x0000000D (13) | Request sent from a SWIMA-PV to | + | Request | | a SWIMA-PC for the SWIMA-PC to | + | | | provide a software inventory or | + | | | event list. It might also | + | | | establish a subscription. | + | | | (Section 5.6) | + | | | | + | Software | 0x0000000E (14) | An inventory sent without | + | Identifier | | Software Inventory Evidence | + | Inventory | | Records sent from a SWIMA-PC. | + | | | (Section 5.7) | + | | | | + | Software | 0x0000000F (15) | A collection of events impacting | + | Identifier | | the endpoint's Software | + | Events | | Inventory Evidence Collection, | + | | | where events do not include | + | | | Software Inventory Evidence | + | | | Records. (Section 5.8) | + | | | | + | Software | 0x00000010 (16) | An inventory including Software | + | Inventory | | Inventory Evidence Records sent | + | | | from a SWIMA-PC. (Section 5.9) | + | | | | + | Software | 0x00000011 (17) | A collection of events impacting | + | Events | | the endpoint's Software | + | | | Inventory Evidence Collection, | + | | | where events include Software | + | | | Inventory Evidence Records. | + | | | (Section 5.10) | + | | | | + | Subscription | 0x00000012 (18) | A request for a list of a | + | Status | | SWIMA-PV's active subscriptions | + | Request | | on a SWIMA-PC. (Section 5.11) | + | | | | + | Subscription | 0x00000013 (19) | A list of a SWIMA-PV's active | + | Status | | subscriptions on a SWIMA-PC. | + | Response | | (Section 5.12) | + | | | | + | Source | 0x00000014 (20) | A request for information about | + | Metadata | | a SWIMA-PC's data sources. | + | Request | | (Section 5.13) | + | | | | + + + + + +Schmidt, et al. Standards Track [Page 47] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Source | 0x00000015 (21) | Descriptive metadata about a | + | Metadata | | SWIMA-PC's data sources. | + | Response | | (Section 5.14) | + | | | | + | PA-TNC Error | 0x00000008 (8) | An error attribute as defined in | + | | | the PA-TNC specification | + | | | [RFC5792]. | + +--------------+-----------------+----------------------------------+ + + Table 1: SWIMA Attribute Enumeration + + Because one of the Software Identifier Inventory, Software Identifier + Events, Software Inventory, or Software Events attributes is expected + to be sent to a SWIMA-PV in direct response to a SWIMA Request + attribute or in fulfillment of an active subscription, those four + attribute types are referred to collectively in this document as + "SWIMA Response attributes". + + All SWIMA-PVs MUST be capable of sending SWIMA Request attributes and + be capable of receiving and processing all SWIMA Response attributes + as well as PA-TNC Error attributes. All SWIMA-PCs MUST be capable of + receiving and processing SWIMA Request attributes and be capable of + sending all types of SWIMA Response attributes as well as PA-TNC + Error attributes. SWIMA-PVs MUST ignore any SWIMA Request attributes + that they receive. SWIMA-PCs MUST ignore any SWIMA Response + attributes or PA-TNC Error attributes that they receive. + +5.3. Message Diagram Syntax + + This specification uses diagrams to define the syntax of new PA-TNC + messages and attributes. Each diagram depicts the format and size of + each field in bits. Implementations MUST send the bits depicted in + each diagram as they are shown from left to right for each 32-bit + quantity, "traversing" the diagram from top to bottom. Fields + representing numeric values MUST be sent in network (big endian) byte + order. + + Descriptions of bit field (e.g., flag) values refer to the position + of the bit within the field. These bit positions are numbered from + the most significant bit through the least significant bit. As such, + an octet with only bit 0 set would have a value of 0x80 (1000 0000), + an octet with only bit 1 set would have a value of 0x40 (0100 0000), + and an octet with only bit 7 set would have a value of 0x01 + (0000 0001). + + + + + + + +Schmidt, et al. Standards Track [Page 48] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.4. Normalization of Text Encoding + + In order to ensure consistency of transmitted attributes, some fields + require normalization of their format. When this is necessary, this + information is indicated in the field's description. In such cases, + the field contents MUST be normalized to Network Unicode format as + defined in RFC 5198 [RFC5198]. Network Unicode format defines a + refinement of UTF-8 [RFC3629] that ensures a normalized expression of + characters. SWIMA-PCs and SWIMA-PVs MUST NOT perform conversion and + normalization on any field values except those specifically + identified in the following sections as requiring normalization. + Note, however, that some data models require additional normalization + before source information is added to an endpoint's Software + Inventory Evidence Collection as a record. The references from the + "Software Data Model Types" registry (see Section 10.5) will note + where this is necessary. + +5.5. Request IDs + + All SWIMA Request attributes MUST include a Request ID value. The + Request ID field provides a value that identifies a given request + relative to other requests between a SWIMA-PV and the receiving + SWIMA-PC. Specifically, the SWIMA-PV assigns each SWIMA Request + attribute a Request ID value that is intended to be unique within the + lifetime of a given network Connection ID. + + In the case that a SWIMA Request requests the establishment of a + subscription and the receiving SWIMA-PC agrees to that subscription, + the Request ID of that SWIMA Request (i.e., the establishing request + of the subscription) becomes that subscription's Subscription ID. + All attributes sent in fulfillment of this subscription include a + flag indicating that the attribute fulfills a subscription and the + subscription's Subscription ID. A SWIMA-PV MUST NOT reuse a Request + ID value in communications with a given SWIMA-PC while that Request + ID is also serving as a Subscription ID for an active subscription + with that SWIMA-PC. In the case where a SWIMA-PC receives a SWIMA + Request from a given SWIMA-PV where that Request ID is also the + Subscription ID of an active subscription with that SWIMA-PV, the + SWIMA-PC MUST respond with a PA-TNC Error attribute with an error + code of SWIMA_SUBSCRIPTION_ID_REUSE_ERROR. Note that this error does + not cancel the indicated subscription. + + Subscription Status Requests and Subscription Status Responses do not + include Request IDs. + + + + + + + +Schmidt, et al. Standards Track [Page 49] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + In the case where all possible Request ID values have been exhausted + within the lifetime of a single network Connection ID, the sender MAY + reuse previously used Request IDs within the same network connection + if the ID is not being used as a Subscription ID. In the case where + reuse is necessary due to exhaustion of possible ID values, the + SWIMA-PV SHOULD structure the reuse to maximize the time between + original and subsequent use. The Request ID value is included in a + SWIMA Response attribute directly responding to this SWIMA Request to + indicate which SWIMA Request was received and caused the response. + Request IDs can be randomly generated or sequential, as long as + values are not repeated per the rules in this paragraph. SWIMA-PCs + are not required to check for duplicate Request IDs, except insofar + as is necessary to detect Subscription ID reuse. + +5.6. SWIMA Request + + A SWIMA-PV sends this attribute to a SWIMA-PC to request that the + SWIMA-PC send software inventory information to the SWIMA-PV. A + SWIMA-PC MUST NOT send this attribute. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Software Identifier Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Earliest EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Software Identifier Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 6: SWIMA Request Attribute + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier Length | Software Identifier (var len) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 7: SWIMA Request Attribute SUB-BLOCK + + + + + + + + +Schmidt, et al. Standards Track [Page 50] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +---------------+---------------------------------------------------+ + | Field | Description | + +---------------+---------------------------------------------------+ + | Flags: Bit 0 | If set (1), the SWIMA-PC MUST delete all | + | - Clear | subscriptions established by the requesting | + | Subscriptions | SWIMA-PV (barring any errors). | + | | | + | Flags: Bit 1 | If set (1), in addition to responding to the | + | - Subscribe | request as described, the SWIMA-PC MUST establish | + | | a subscription with parameters matching those in | + | | the SWIMA Request attribute (barring any errors). | + | | | + | Flags: Bit 2 | If unset (0), the SWIMA-PC's response MUST | + | - Result Type | include Software Inventory Evidence Records, and | + | | thus the response MUST be a Software Inventory, | + | | Software Events, or PA-TNC Error attribute. If | + | | set (1), the response MUST NOT include Software | + | | Inventory Evidence Records, and thus the response | + | | MUST be a Software Identifier Inventory, Software | + | | Identifier Events, or PA-TNC Error attribute. | + | | | + | Flags: Bits | Reserved for future use. This field MUST be set | + | 3-7 - | to zero on transmission and ignored upon | + | Reserved | reception. | + | | | + | Software | A 3-byte unsigned integer indicating the number | + | Identifier | of Software Identifiers that follow. If this | + | Count | value is non-zero, this is a targeted request, as | + | | described in Section 3.5. The Software | + | | Identifier Length and Software Identifier fields | + | | are repeated, in order, the number of times | + | | indicated in this field. In the case where | + | | Software Identifiers are present, the SWIMA-PC | + | | MUST only report software that corresponds to the | + | | identifiers the SWIMA-PV provided in this | + | | attribute (or respond with a PA-TNC Error | + | | attribute). This field value MAY be 0, in which | + | | case there are no instances of the Software | + | | Identifier Length and Software Identifier fields. | + | | In this case, the SWIMA-PV is indicating an | + | | interest in all Software Inventory Evidence | + | | Records on the endpoint (i.e., this is not a | + | | targeted request). | + | | | + | Request ID | A value that uniquely identifies this SWIMA | + | | Request from a particular SWIMA-PV. | + | | | + + + + +Schmidt, et al. Standards Track [Page 51] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Earliest EID | In the case where the SWIMA-PV is requesting | + | | software events, this field contains the EID | + | | value of the earliest event the SWIMA-PV wishes | + | | to have reported. (Note: The report will be | + | | inclusive of the event with this EID value.) In | + | | the case where the SWIMA-PV is requesting an | + | | inventory, then this field MUST be 0 | + | | (0x00000000). In the case where this field is | + | | non-zero, the SWIMA-PV is requesting events, and | + | | the SWIMA-PC MUST respond using a Software | + | | Events, Software Identifier Events, or PA-TNC | + | | Error attribute. In the case where this field is | + | | zero, the SWIMA-PV is requesting an inventory, | + | | and the SWIMA-PC MUST respond using a Software | + | | Inventory, Software Identifier Inventory, or | + | | PA-TNC Error attribute. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Identifier | in bytes, of the Software Identifier field. | + | Length | | + | | | + | Software | A string containing the Software Identifier value | + | Identifier | from a Software Inventory Evidence Record. This | + | | field value MUST be normalized to Network Unicode | + | | format, as described in Section 5.4. This string | + | | MUST NOT be null terminated. | + +---------------+---------------------------------------------------+ + + Table 2: SWIMA Request Attribute Fields + + The SWIMA-PV sends the SWIMA Request attribute to a SWIMA-PC to + request the indicated information. Note that between the Result Type + flag and the Earliest EID field, the SWIMA-PC is constrained to a + single possible SWIMA Response attribute type (or a PA-TNC Error + attribute) in its response to the request. + + The Subscribe flag and the Clear Subscriptions flag are used to + manage subscriptions for the requesting SWIMA-PV on the receiving + SWIMA-PC. Specifically, an attribute with the Subscribe flag set + seeks to establish a new subscription by the requesting SWIMA-PV to + the given SWIMA-PC, while an attribute with the Clear Subscriptions + flag set seeks to delete all existing subscriptions by the requesting + SWIMA-PV on the given SWIMA-PC. Note that in the latter case, only + the subscriptions associated with the Connection ID and the Posture + Validator Identifier of the requester are deleted as described in + Section 3.8.3. A newly established subscription has the parameters + outlined in the SWIMA Request attribute. Specifically, the Result + Type flag indicates the type of result to send in fulfillment of the + + + +Schmidt, et al. Standards Track [Page 52] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + subscription, the value of the Earliest EID field indicates whether + the fulfillment attributes list inventories or events, and the fields + describing Software Identifiers (if present) indicate if and how a + subscription is targeted. In the case that the SWIMA-PC is unable or + unwilling to comply with the SWIMA-PV's request to establish or clear + subscriptions, the SWIMA-PC MUST respond with a PA-TNC Error + attribute with the SWIMA_SUBSCRIPTION_DENIED_ERROR error code. If + the SWIMA-PV requests that subscriptions be cleared but has no + existing subscriptions, this is not an error. + + An attribute requesting the establishment of a subscription is + effectively doing "double duty", as it is a request for an immediate + response from the SWIMA-PC in addition to setting up the + subscription. Assuming that the SWIMA-PC is willing to comply with + the subscription, it MUST send an appropriate response attribute to a + request with the Subscribe flag set containing all requested + information. The same is true of the Clear Subscriptions flag -- + assuming that there is no error, the SWIMA-PC MUST generate a + response attribute without regard to the presence of this flag, in + addition to clearing its subscription list. + + Both the Subscribe flag and the Clear Subscriptions flag MAY be set + in a single SWIMA Request attribute. In the case where this request + is successful, the end result MUST be equivalent to the SWIMA-PC + clearing its subscription list for the given SWIMA-PV first and then + creating a new subscription in accordance with the request + parameters. In other words, do not first create the new subscription + and then clear all the subscriptions (including the one that was just + created). In the case that the requested actions are successfully + completed, the SWIMA-PC MUST respond with a SWIMA Response attribute. + The specific type of SWIMA Response attribute depends on the Result + Type flag and the Earliest EID field, as described above. In the + case where there is a failure that prevents some part of this request + from completing, the SWIMA-PC MUST NOT add a new subscription, + MUST NOT clear the old subscriptions, and MUST respond with a PA-TNC + Error attribute. In other words, the SWIMA-PC MUST NOT partially + succeed at implementing such a request; either all actions succeed or + none succeed. + + The Earliest EID field is used to indicate if the SWIMA-PV is + requesting an inventory or event list from the SWIMA-PC. A value of + 0 (0x00000000) represents a request for inventory information. + Otherwise, the SWIMA-PV is requesting event information. For + Earliest EID values other than 0, the SWIMA-PC MUST respond with + event records, as described in Section 3.7. Note that the request + does not identify a particular EID Epoch, since responses can only + include events in the SWIMA-PC's current EID Epoch. + + + + +Schmidt, et al. Standards Track [Page 53] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The Software Identifier Count indicates the number of Software + Identifiers in the attribute. This number might be any value between + 0 and 16,777,216, inclusive. A single Software Identifier is + represented by the following fields: Software Identifier Length and + Software Identifier. These fields are repeated a number of times + equal to the Software Identifier Count, which may be 0. The Software + Identifier Length field indicates the number of bytes allocated to + the Software Identifier field. The Software Identifier field + contains a Software Identifier as described in Section 3.4.1. The + presence of one or more Software Identifiers is used by the SWIMA-PV + to indicate a targeted request, which seeks only inventories of or + events affecting software corresponding to the given identifiers. + The SWIMA-PC MUST only report software that matched the Software + Identifiers provided in the SWIMA-PV's SWIMA Request attribute. + +5.7. Software Identifier Inventory + + A SWIMA-PC sends this attribute to a SWIMA-PV to convey the inventory + of the endpoint's Software Inventory Evidence Collection without the + inclusion of Software Inventory Evidence Records. This list might + represent a complete inventory or a targeted list of records, + depending on the parameters in the SWIMA-PV's request. A SWIMA-PV + MUST NOT send this attribute. The SWIMA-PC sends this attribute + either (1) in fulfillment of an existing subscription where the + establishing request has a Result Type of 1 and the Earliest EID is + zero or (2) in direct response to a SWIMA Request attribute where the + Result Type is 1 and the Earliest EID is zero. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Software Identifier Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID Copy / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID Epoch | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Software Identifier Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 8: Software Identifier Inventory Attribute + + + + + + +Schmidt, et al. Standards Track [Page 54] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Identifier | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data Model Type PEN |Data Model Type| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Id Num | Reserved | Software Identifier Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Locator Length |Software Locator (variable len)| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 9: Software Identifier Inventory Attribute SUB-BLOCK + + +----------------+--------------------------------------------------+ + | Field | Description | + +----------------+--------------------------------------------------+ + | Flags: Bit 0 - | In the case that this attribute is sent in | + | Subscription | fulfillment of a subscription, this bit MUST be | + | Fulfillment | set (1). In the case that this attribute is a | + | | direct response to a SWIMA Request, this bit | + | | MUST be unset (0). | + | | | + | Flags: Bits | Reserved for future use. This field MUST be set | + | 1-7 - Reserved | to zero on transmission and ignored upon | + | | reception. | + | | | + | Software | The number of Software Identifiers that follow. | + | Identifier | This field is an unsigned integer. The Record | + | Count | Identifier, Data Model Type PEN, Data Model | + | | Type, Source Identification Number, Reserved, | + | | Software Identifier Length, Software Identifier, | + | | Software Locator Length, and Software Locator | + | | fields are repeated, in order, the number of | + | | times indicated in this field. This field value | + | | MAY be 0, in which case there are no instances | + | | of these fields. | + | | | + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 55] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Request ID | In the case where this attribute is in direct | + | Copy / | response to a SWIMA Request attribute from a | + | Subscription | SWIMA-PV, this field MUST contain an exact copy | + | ID | of the Request ID field from that SWIMA Request. | + | | In the case where this attribute is sent in | + | | fulfillment of an active subscription, this | + | | field MUST contain the Subscription ID of the | + | | subscription being fulfilled by this attribute. | + | | | + | EID Epoch | The EID Epoch of the Last EID value. This field | + | | is a 4-byte unsigned integer. | + | | | + | Last EID | The EID of the last event recorded by the | + | | SWIMA-PC, or 0 if the SWIMA-PC has no recorded | + | | events. This field is a 4-byte unsigned | + | | integer. | + | | | + | Record | A 4-byte unsigned integer containing the Record | + | Identifier | Identifier value from a Software Inventory | + | | Evidence Record. | + | | | + | Data Model | A 3-byte unsigned integer containing the Private | + | Type PEN | Enterprise Number (PEN) of the organization that | + | | assigned the meaning of the Data Model Type | + | | value. | + | | | + | Data Model | A 1-byte unsigned integer containing an | + | Type | identifier number that identifies the data model | + | | of the reported record. | + | | | + | Source | The Source Identifier number associated with the | + | Identification | source from which this software installation | + | Number | inventory instance was reported. | + | | | + | Reserved | Reserved for future use. This field MUST be set | + | | to zero on transmission and ignored upon | + | | reception. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Identifier | in bytes, of the Software Identifier field. | + | Length | | + | | | + | Software | A string containing the Software Identifier | + | Identifier | value from a Software Inventory Evidence Record. | + | | This field value MUST be normalized to Network | + | | Unicode format, as described in Section 5.4. | + | | This string MUST NOT be null terminated. | + | | | + + + +Schmidt, et al. Standards Track [Page 56] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Software | A 2-byte unsigned integer indicating the length, | + | Locator Length | in bytes, of the Software Locator field. | + | | | + | Software | A string containing the Software Locator value. | + | Locator | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4, and then encoded as a URI | + | | [RFC3986]. This string MUST NOT be null | + | | terminated. | + +----------------+--------------------------------------------------+ + + Table 3: Software Identifier Inventory Attribute Fields + + In the case that this attribute is sent in fulfillment of a + subscription, the Subscription Fulfillment bit MUST be set (1). In + the case that this attribute is sent in direct response to a SWIMA + Request, the Subscription Fulfillment bit MUST be unset (0). Note + that the SWIMA Response attribute sent in direct response to a SWIMA + Request that establishes a subscription (i.e., a subscription's + establishing request) MUST be treated as a direct response to that + SWIMA Request (and thus the Subscription Fulfillment bit is unset). + SWIMA Response attributes are only treated as being in fulfillment of + a subscription (i.e., Subscription Fulfillment bit set) if they are + sent following a change event, as shown in Figure 3. + + The Software Identifier Count field indicates the number of Software + Identifiers present in this inventory. Each Software Identifier is + represented by the following set of fields: Record Identifier, Data + Model Type PEN, Data Model Type, Source Identification Number, + Reserved, Software Identifier Length, Software Identifier, Software + Locator Length, and Software Locator. These fields will appear once + for each reported record. + + When responding directly to a SWIMA Request attribute, the Request ID + Copy / Subscription ID field MUST contain an exact copy of the + Request ID field from that SWIMA Request. When this attribute is + sent in fulfillment of an existing subscription on this SWIMA-PC, + this field MUST contain the Subscription ID of the fulfilled + subscription. + + The EID Epoch field indicates the EID Epoch of the Last EID value. + The Last EID field MUST contain the EID of the last recorded change + event (see Section 3.7 for more about EIDs and recorded events) at + the time this inventory was collected. In the case where there are + no recorded change events at the time that this inventory was + collected, the Last EID field MUST contain 0. These fields can be + + + + + +Schmidt, et al. Standards Track [Page 57] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + interpreted to indicate that the provided inventory reflects the + state of the endpoint after all changes up to and including this last + event have been accounted for. + + The Data Model Type PEN and Data Model Type fields are used to + identify the data model associated with the given software record. + These fields are discussed more in Section 3.4.2. + + The Source Identification Number field is used to identify the source + that provided the given record, as described in Section 3.1. + +5.8. Software Identifier Events + + A SWIMA-PC sends this attribute to a SWIMA-PV to convey events where + the affected records are reported without Software Inventory Evidence + Records. A SWIMA-PV MUST NOT send this attribute. The SWIMA-PC + sends this attribute either (1) in fulfillment of an existing + subscription where the establishing request has a Result Type of 1 + and the Earliest EID is non-zero or (2) in direct response to a SWIMA + Request attribute where the Result Type is 1 and the Earliest EID is + non-zero. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Event Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID Copy / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID Epoch | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last Consulted EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Event Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 10: Software Identifier Events Attribute + + + + + + + + + + +Schmidt, et al. Standards Track [Page 58] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- -+ + | Timestamp | + +- -+ + | | + +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Identifier | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data Model Type PEN |Data Model Type| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Id Num | Action | Software Identifier Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Locator Length |Software Locator (variable len)| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 11: Software Identifier Events Attribute SUB-BLOCK + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 59] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +----------------+--------------------------------------------------+ + | Field | Description | + +----------------+--------------------------------------------------+ + | Flags: Bit 0 - | In the case that this attribute is sent in | + | Subscription | fulfillment of a subscription, this bit MUST be | + | Fulfillment | set (1). In the case that this attribute is a | + | | direct response to a SWIMA Request, this bit | + | | MUST be unset (0). | + | | | + | Flags: Bits | Reserved for future use. This field MUST be set | + | 1-7 - Reserved | to zero on transmission and ignored upon | + | | reception. | + | | | + | Event Count | The number of events that are reported in this | + | | attribute. This field is a 3-byte unsigned | + | | integer. The EID, Timestamp, Record Identifier, | + | | Data Model Type PEN, Data Model Type, Source | + | | Identification Number, Action, Software | + | | Identifier Length, Software Identifier, Software | + | | Locator Length, and Software Locator fields are | + | | repeated, in order, the number of times | + | | indicated in this field. This field value MAY | + | | be 0, in which case there are no instances of | + | | these fields. | + | | | + | Request ID | In the case where this attribute is in direct | + | Copy / | response to a SWIMA Request attribute from a | + | Subscription | SWIMA-PV, this field MUST contain an exact copy | + | ID | of the Request ID field from that SWIMA Request. | + | | In the case where this attribute is sent in | + | | fulfillment of an active subscription, this | + | | field MUST contain the Subscription ID of the | + | | subscription being fulfilled by this attribute. | + | | | + | EID Epoch | The EID Epoch of the Last EID value. This field | + | | is a 4-byte unsigned integer. | + | | | + | Last EID | The EID of the last event recorded by the | + | | SWIMA-PC, or 0 if the SWIMA-PC has no recorded | + | | events. This field contains the EID of the | + | | SWIMA-PC's last recorded change event (which | + | | might or might not be included as an event | + | | record in this attribute). | + | | | + + + + + + + +Schmidt, et al. Standards Track [Page 60] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Last Consulted | The EID of the last event record that was | + | EID | consulted when generating the event record list | + | | included in this attribute. This is different | + | | from the Last EID field value if and only if | + | | this attribute is conveying a partial list of | + | | event records. See Section 3.7.5 for more on | + | | partial lists of event records. | + | | | + | EID | The EID of the event in this event record. | + | | | + | Timestamp | The timestamp associated with the event in this | + | | event record. This timestamp is the SWIMA-PC's | + | | best understanding of when the given event | + | | occurred. Note that this timestamp might be an | + | | estimate. The Timestamp date and time MUST be | + | | represented as an ASCII string that is expressed | + | | in Coordinated Universal Time (UTC) and is | + | | compliant with RFC 3339 [RFC3339], with the | + | | additional restrictions that the 'T' delimiter | + | | and the 'Z' suffix MUST be capitalized and | + | | fractional seconds (time-secfrac) MUST NOT be | + | | included. This field conforms to the date-time | + | | ABNF production from Section 5.6 of RFC 3339, | + | | with the above restrictions. Leap seconds are | + | | permitted, and SWIMA-PVs MUST support them. The | + | | Timestamp string MUST NOT be null terminated or | + | | padded in any way. The length of this field is | + | | always 20 octets. | + | | | + | Record | A 4-byte unsigned integer containing the Record | + | Identifier | Identifier value from a Software Inventory | + | | Evidence Record. | + | | | + | Data Model | A 3-byte unsigned integer containing the PEN of | + | Type PEN | the organization that assigned the meaning of | + | | the Data Model Type value. | + | | | + | Data Model | A 1-byte unsigned integer containing an | + | Type | identifier number that identifies the data model | + | | of the reported record. | + | | | + | Source | The Source Identifier number associated with the | + | Identification | source for the software installation inventory | + | Number | instance that this event record reported. | + | | | + + + + + + +Schmidt, et al. Standards Track [Page 61] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Action | The type of event that is recorded in this event | + | | record. Possible values are as follows: 1 = | + | | CREATION - the addition of a record to the | + | | endpoint's Software Inventory Evidence | + | | Collection; 2 = DELETION - the removal of a | + | | record from the endpoint's Software Inventory | + | | Evidence Collection; 3 = ALTERATION - an | + | | alteration that was made to a record within the | + | | endpoint's Software Inventory Evidence | + | | Collection. All other values are reserved for | + | | future use and MUST NOT be used when sending | + | | attributes. In the case where a SWIMA-PV | + | | receives an event record that uses an action | + | | value other than the ones defined here, it MUST | + | | ignore that event record but SHOULD process | + | | other event records in this attribute as normal. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Identifier | in bytes, of the Software Identifier field. | + | Length | | + | | | + | Software | A string containing the Software Identifier | + | Identifier | value from a Software Inventory Evidence Record. | + | | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4. This string MUST NOT be null | + | | terminated. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Locator Length | in bytes, of the Software Locator field. | + | | | + | Software | A string containing the Software Locator value. | + | Locator | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4, and then encoded as a URI | + | | [RFC3986]. This string MUST NOT be null | + | | terminated. | + +----------------+--------------------------------------------------+ + + Table 4: Software Identifier Events Attribute Fields + + The first few fields in the Software Identifier Events attribute + mirror those in the Software Identifier Inventory attribute. The + primary difference is that instead of conveying an inventory the + attribute conveys zero or more event records, consisting of the EID, + Timestamp, Record Identifier, Data Model Type PEN, Data Model Type, + + + + + +Schmidt, et al. Standards Track [Page 62] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Source Identification Number, Action, Software Identifier Length, + Software Identifier, Software Locator Length, and Software Locator + fields of the affected Software Inventory Evidence Record. + + With regard to the Timestamp field, it is important to note that + clock skew between the SWIMA-PC and SWIMA-PV as well as between + different SWIMA-PCs within an enterprise might make correlation of + Timestamp values difficult. This specification does not attempt to + resolve clock skew issues, although other mechanisms (which are + outside the scope of this specification) do exist to reduce the + impact of clock skew and make the timestamp more useful for such + correlation. Instead, SWIMA uses the Timestamp value primarily as a + means to indicate the amount of time between two events on a single + endpoint. For example, by taking the difference of the times for + when a record was removed and then subsequently re-added, one can get + an indication as to how long the system was without the given record + (and thus without the associated software). Since this will involve + comparison of Timestamp values all originating on the same system, + clock skew between the SWIMA-PC and SWIMA-PV is not an issue. + However, if the SWIMA-PC's clock was adjusted between two recorded + events, it is possible for such a calculation to lead to + misunderstandings regarding the temporal distance between events. + Users of this field need to be aware of the possibility for such + occurrences. In the case where the Timestamp values of two events + appear to contradict the EID ordering of those events (i.e., the + later EID has an earlier timestamp), the recipient MUST treat the EID + ordering as correct. + + All events recorded in a Software Identifier Events attribute are + required to be part of the same EID Epoch. Specifically, all such + reported events MUST have an EID that is from the same EID Epoch and + that is the same as the EID Epoch of the Last EID and Last Consulted + EID values. The SWIMA-PC MUST NOT report events with EIDs from + different EID Epochs. + + The Last Consulted EID field contains the EID of the last event + record considered for inclusion in this attribute. If this attribute + contains a partial event set (as described in Section 3.7.5), this + field value will be less than the Last EID value; if this attribute + contains a complete event set, the Last EID and Last Consulted EID + values are identical. + + If multiple events are sent in a Software Identifier Events + attribute, the order in which they appear within the attribute is not + significant. The EIDs associated with them are used for ordering the + indicated events appropriately. Also note that a single software + record might be reported multiple times in an attribute, such as if + multiple events involving the associated record were being reported. + + + +Schmidt, et al. Standards Track [Page 63] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.9. Software Inventory + + A SWIMA-PC sends this attribute to a SWIMA-PV to convey a list of + inventory records. A SWIMA-PV MUST NOT send this attribute. The + SWIMA-PC sends this attribute either (1) in fulfillment of an + existing subscription where the establishing request has a Result + Type of 0 and the Earliest EID is zero or (2) in direct response to a + SWIMA Request attribute where the Result Type is 0 and the Earliest + EID is zero. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Record Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID Copy / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID Epoch | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Record Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 12: Software Inventory Attribute + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Identifier | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data Model Type PEN |Data Model Type| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Id Num | Reserved | Software Identifier Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Locator Length |Software Locator (variable len)| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 13: Software Inventory Attribute SUB-BLOCK + + + + +Schmidt, et al. Standards Track [Page 64] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +----------------+--------------------------------------------------+ + | Field | Description | + +----------------+--------------------------------------------------+ + | Flags: Bit 0 - | In the case that this attribute is sent in | + | Subscription | fulfillment of a subscription, this bit MUST be | + | Fulfillment | set (1). In the case that this attribute is a | + | | direct response to a SWIMA Request, this bit | + | | MUST be unset (0). | + | | | + | Flags: Bits | Reserved for future use. This field MUST be set | + | 1-7 - Reserved | to zero on transmission and ignored upon | + | | reception. | + | | | + | Record Count | The number of records that follow. This field | + | | is a 3-byte unsigned integer. The Record | + | | Identifier, Data Model Type PEN, Data Model | + | | Type, Source Identification Number, Reserved, | + | | Software Identifier Length, Software Identifier, | + | | Software Locator Length, Software Locator, | + | | Record Length, and Record fields are repeated, | + | | in order, the number of times indicated in this | + | | field. This field value MAY be 0, in which case | + | | there are no instances of these fields. | + | | | + | Request ID | In the case where this attribute is in direct | + | Copy / | response to a SWIMA Request attribute from a | + | Subscription | SWIMA-PV, this field MUST contain an exact copy | + | ID | of the Request ID field from that SWIMA Request. | + | | In the case where this attribute is sent in | + | | fulfillment of an active subscription, this | + | | field MUST contain the Subscription ID of the | + | | subscription being fulfilled by this attribute. | + | | | + | EID Epoch | The EID Epoch of the Last EID value. This field | + | | is a 4-byte unsigned integer. | + | | | + | Last EID | The EID of the last event recorded by the | + | | SWIMA-PC, or 0 if the SWIMA-PC has no recorded | + | | events. This field is a 4-byte unsigned | + | | integer. | + | | | + | Record | A 4-byte unsigned integer containing the Record | + | Identifier | Identifier value from a Software Inventory | + | | Evidence Record. | + | | | + + + + + + +Schmidt, et al. Standards Track [Page 65] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Data Model | A 3-byte unsigned integer containing the PEN of | + | Type PEN | the organization that assigned the meaning of | + | | the Data Model Type value. | + | | | + | Data Model | A 1-byte unsigned integer containing an | + | Type | identifier number that identifies the data model | + | | of the reported record. | + | | | + | Source | The Source Identifier number associated with the | + | Identification | source from which this software installation | + | Number | inventory instance was reported. | + | | | + | Reserved | Reserved for future use. This field MUST be set | + | | to zero on transmission and ignored upon | + | | reception. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Identifier | in bytes, of the Software Identifier field. | + | Length | | + | | | + | Software | A string containing the Software Identifier | + | Identifier | value from a Software Inventory Evidence Record. | + | | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4. This string MUST NOT be null | + | | terminated. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Locator Length | in bytes, of the Software Locator field. | + | | | + | Software | A string containing the Software Locator value. | + | Locator | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4, and then encoded as a URI | + | | [RFC3986]. This string MUST NOT be null | + | | terminated. | + | | | + | Record Length | A 4-byte unsigned integer indicating the length, | + | | in bytes, of the Record field. | + | | | + | Record | A Software Inventory Evidence Record expressed | + | | as a string. The record MUST be converted and | + | | normalized to Network Unicode format, as | + | | described in Section 5.4. This string MUST NOT | + | | be null terminated. | + +----------------+--------------------------------------------------+ + + Table 5: Software Inventory Attribute Fields + + + +Schmidt, et al. Standards Track [Page 66] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The Software Inventory attribute contains some number of Software + Inventory Evidence Records along with the core response attribute + fields. Given that the size of records can vary considerably, the + length of this attribute is highly variable and, if transmitting a + complete inventory, can be extremely large. To avoid unnecessarily + overburdening the network, enterprises might wish to constrain the + use of Software Inventory attributes to targeted requests. + + When copying a Software Inventory Evidence Record into the Record + field, the record MUST be converted and normalized to use Network + Unicode format prior to its inclusion in the Record field. + +5.10. Software Events + + A SWIMA-PC sends this attribute to a SWIMA-PV to convey a list of + events that include Software Inventory Evidence Records. A SWIMA-PV + MUST NOT send this attribute. The SWIMA-PC sends this attribute + either (1) in fulfillment of an existing subscription where the + establishing request has a Result Type of 0 and the Earliest EID is + non-zero or (2) in direct response to a SWIMA Request attribute where + the Result Type is 0 and the Earliest EID is non-zero. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Event Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID Copy / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID Epoch | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Last Consulted EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Event Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 14: Software Events Attribute + + + + + + + + + + +Schmidt, et al. Standards Track [Page 67] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- -+ + | Timestamp | + +- -+ + | | + +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Identifier | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data Model Type PEN |Data Model Type| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Id Num | Action | Software Identifier Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Locator Length |Software Locator (variable len)| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Record (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 15: Software Events Attribute SUB-BLOCK + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 68] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +----------------+--------------------------------------------------+ + | Field | Description | + +----------------+--------------------------------------------------+ + | Flags: Bit 0 - | In the case that this attribute is sent in | + | Subscription | fulfillment of a subscription, this bit MUST be | + | Fulfillment | set (1). In the case that this attribute is a | + | | direct response to a SWIMA Request, this bit | + | | MUST be unset (0). | + | | | + | Flags: Bits | Reserved for future use. This field MUST be set | + | 1-7 - Reserved | to zero on transmission and ignored upon | + | | reception. | + | | | + | Event Count | The number of events being reported in this | + | | attribute. This field is a 3-byte unsigned | + | | integer. The EID, Timestamp, Record Identifier, | + | | Data Model Type PEN, Data Model Type, Source | + | | Identification Number, Action, Software | + | | Identifier Length, Software Identifier, Software | + | | Locator Length, Software Locator, Record Length, | + | | and Record fields are repeated, in order, the | + | | number of times indicated in this field. This | + | | field value MAY be 0, in which case there are no | + | | instances of these fields. | + | | | + | Request ID | In the case where this attribute is in direct | + | Copy / | response to a SWIMA Request attribute from a | + | Subscription | SWIMA-PV, this field MUST contain an exact copy | + | ID | of the Request ID field from that SWIMA Request. | + | | In the case where this attribute is sent in | + | | fulfillment of an active subscription, this | + | | field MUST contain the Subscription ID of the | + | | subscription being fulfilled by this attribute. | + | | | + | EID Epoch | The EID Epoch of the Last EID value. This field | + | | is a 4-byte unsigned integer. | + | | | + | Last EID | The EID of the last event recorded by the | + | | SWIMA-PC, or 0 if the SWIMA-PC has no recorded | + | | events. This field contains the EID of the | + | | SWIMA-PC's last recorded change event (which | + | | might or might not be included as an event | + | | record in this attribute). | + | | | + + + + + + + +Schmidt, et al. Standards Track [Page 69] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Last Consulted | The EID of the last event record that was | + | EID | consulted when generating the event record list | + | | included in this attribute. This is different | + | | from the Last EID field value if and only if | + | | this attribute is conveying a partial list of | + | | event records. See Section 3.7.5 for more on | + | | partial lists of event records. | + | | | + | EID | The EID of the event in this event record. | + | | | + | Timestamp | The timestamp associated with the event in this | + | | event record. This timestamp is the SWIMA-PC's | + | | best understanding of when the given event | + | | occurred. Note that this timestamp might be an | + | | estimate. The Timestamp date and time MUST be | + | | represented as an ASCII string that is expressed | + | | in Coordinated Universal Time (UTC) and is | + | | compliant with RFC 3339 [RFC3339], with the | + | | additional restrictions that the 'T' delimiter | + | | and the 'Z' suffix MUST be capitalized and | + | | fractional seconds (time-secfrac) MUST NOT be | + | | included. This field conforms to the date-time | + | | ABNF production from Section 5.6 of RFC 3339, | + | | with the above restrictions. Leap seconds are | + | | permitted, and SWIMA-PVs MUST support them. The | + | | Timestamp string MUST NOT be null terminated or | + | | padded in any way. The length of this field is | + | | always 20 octets. | + | | | + | Record | A 4-byte unsigned integer containing the Record | + | Identifier | Identifier value from a Software Inventory | + | | Evidence Record. | + | | | + | Data Model | A 3-byte unsigned integer containing the PEN of | + | Type PEN | the organization that assigned the meaning of | + | | the Data Model Type value. | + | | | + | Data Model | A 1-byte unsigned integer containing an | + | Type | identifier number that identifies the data model | + | | of the reported record. | + | | | + | Source | The Source Identifier number associated with the | + | Identification | source for the software installation inventory | + | Number | instance that this event record reported. | + | | | + + + + + + +Schmidt, et al. Standards Track [Page 70] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Action | The type of event that is recorded in this event | + | | record. Possible values are as follows: 1 = | + | | CREATION - the addition of a record to the | + | | endpoint's Software Inventory Evidence | + | | Collection; 2 = DELETION - the removal of a | + | | record from the endpoint's Software Inventory | + | | Evidence Collection; 3 = ALTERATION - an | + | | alteration that was made to a record within the | + | | endpoint's Software Inventory Evidence | + | | Collection. All other values are reserved for | + | | future use and MUST NOT be used when sending | + | | attributes. In the case where a SWIMA-PV | + | | receives an event record that uses an action | + | | value other than the ones defined here, it MUST | + | | ignore that event record but SHOULD process | + | | other event records in this attribute as normal. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Identifier | in bytes, of the Software Identifier field. | + | Length | | + | | | + | Software | A string containing the Software Identifier | + | Identifier | value from a Software Inventory Evidence Record. | + | | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4. This string MUST NOT be null | + | | terminated. | + | | | + | Software | A 2-byte unsigned integer indicating the length, | + | Locator Length | in bytes, of the Software Locator field. | + | | | + | Software | A string containing the Software Locator value. | + | Locator | This field value MUST first be normalized to | + | | Network Unicode format, as described in | + | | Section 5.4, and then encoded as a URI | + | | [RFC3986]. This string MUST NOT be null | + | | terminated. | + | | | + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 71] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + | Record Length | A 4-byte unsigned integer indicating the length, | + | | in bytes, of the Record field. | + | | | + | Record | A Software Inventory Evidence Record expressed | + | | as a string. The record MUST be converted and | + | | normalized to Network Unicode format, as | + | | described in Section 5.4. This string MUST NOT | + | | be null terminated. | + +----------------+--------------------------------------------------+ + + Table 6: Software Events Attribute Fields + + The fields of this attribute are used in the same way as the + corresponding fields of the previous attributes. As with the + Software Inventory attribute, a Software Events attribute can be + quite large if many events have occurred following the event + indicated by a request's Earliest EID. As such, it is recommended + that the SWIMA Request attributes only request that full records be + sent (Result Type set to zero) in a targeted request, thus + constraining the response just to records that match a given set of + Software Identifiers. + + As with the Software Identifier Events attribute, this attribute MUST + only contain event records with EIDs coming from the current EID + Epoch of the SWIMA-PC. + + As with the Software Inventory attribute, the SWIMA-PC MUST perform + conversion and normalization of the record. + +5.11. Subscription Status Request + + A SWIMA-PV sends this attribute to a SWIMA-PC to request a list of + active subscriptions for which the requesting SWIMA-PV is the + subscriber. A SWIMA-PC MUST NOT send this attribute. + + This attribute has no fields. + + A SWIMA-PC MUST respond to this attribute by sending a Subscription + Status Response attribute (or a PA-TNC Error attribute if it is + unable to correctly provide a response). + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 72] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.12. Subscription Status Response + + A SWIMA-PC sends this attribute to a SWIMA-PV to report the list of + active subscriptions for which the receiving SWIMA-PV is the + subscriber. A SWIMA-PV MUST NOT send this attribute. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Status Flags | Subscription Record Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-BLOCK (Repeated "Subscription Record Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 16: Subscription Status Response Attribute + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flags | Software Identifier Count | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Request ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Earliest EID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | SUB-SUB-BLOCK (Repeated "Software Identifier Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 17: Subscription Status Response Attribute SUB-BLOCK + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Software Identifier Length | Software Identifier (var len) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 18: Subscription Status Response Attribute SUB-SUB-BLOCK + + + + + + + + + + +Schmidt, et al. Standards Track [Page 73] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +--------------+----------------------------------------------------+ + | Field | Description | + +--------------+----------------------------------------------------+ + | Status | Reserved for future use. This field MUST be set | + | Flags: Bits | to zero on transmission and ignored upon | + | 0-7 - | reception. | + | Reserved | | + | | | + | Subscription | The number of subscription records that follow. | + | Record Count | This field is a 3-byte unsigned integer. The | + | | Flags, Software Identifier Count, Request ID, and | + | | Earliest EID fields, and zero or more instances of | + | | Software Identifier Length and Software | + | | Identifier, are repeated, in order, the number of | + | | times indicated in this field. (The Software | + | | Identifier Length and Software Identifier fields | + | | within each of these sets of fields are repeated a | + | | number of times equal to the preceding Software | + | | Identifier Count value.) The Subscription Record | + | | Count field value MAY be 0, in which case there | + | | are no instances of these fields. | + | | | + | Flags, | For each active subscription, these fields contain | + | Software | an exact copy of the fields with the corresponding | + | Identifier | name provided in the subscription's establishing | + | Count, | request. | + | Request ID, | | + | Earliest | | + | EID, | | + | Software | | + | Identifier | | + | Length, and | | + | Software | | + | Identifier | | + +--------------+----------------------------------------------------+ + + Table 7: Subscription Status Response Fields + + A Subscription Status Response contains zero or more subscription + records. Specifically, it MUST contain one subscription record for + each active subscription associated with the party that sent the + Subscription Status Request to which this attribute is a response. + As described in Section 3.8.2, the SWIMA-PC MUST use the requester's + Connection ID and its Posture Validator Identifier to determine which + subscriptions are associated with the requester. + + + + + + +Schmidt, et al. Standards Track [Page 74] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + A SWIMA-PC MUST send a Subscription Status Response attribute in + response to a Subscription Status Request attribute, except in cases + where the SWIMA-PC experiences an error condition that prevents it + from correctly populating the Subscription Status Response attribute + (in which case it MUST respond with a PA-TNC Error attribute + appropriate to the type of error experienced). If there are no + active subscriptions associated with the requesting party, the + Subscription Status Response attribute will consist only of its + Status Flags field and a Subscription Record Count field with a value + of 0, and no additional fields. + + Each subscription record included in a Subscription Status Response + attribute duplicates the fields of the SWIMA Request attribute that + was the establishing request of a subscription. Note that the + Request ID field in the record captures the Subscription ID + associated with the given subscription record (since the Subscription + ID is the same as the Request ID of the establishing request). Note + also that if the establishing request is targeted, then its Record + Count field will be non-zero and, within that subscription record, + the Software Identifier Length and Software Identifier fields are + repeated, in order, the number of times indicated in the Record Count + field. As such, each subscription record can be different sizes. If + the establishing request is not targeted (Record Count field is 0), + the subscription record has no Software Identifier Length or Software + Identifier fields. + + When a SWIMA-PV compares the information received in a Subscription + Status Response to its own records of active subscriptions, it should + be aware that the SWIMA-PC might be unable to distinguish this + SWIMA-PV from other SWIMA-PVs on the same NEA Server. As a result, + it is possible that the SWIMA-PC will report more subscription + records than the SWIMA-PV recognizes. For this reason, SWIMA-PVs + SHOULD NOT automatically assume that extra subscriptions reported in + a Subscription Status Response indicate a problem. + +5.13. Source Metadata Request + + A SWIMA-PV sends this attribute to a SWIMA-PC to request metadata + about sources that the SWIMA-PC is using to collect software + inventory information. A SWIMA-PC MUST NOT send this attribute. + + This attribute has no fields. + + A SWIMA-PC MUST respond to this attribute by sending a Source + Metadata Response attribute (or a PA-TNC Error attribute if it is + unable to correctly provide a response). + + + + + +Schmidt, et al. Standards Track [Page 75] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.14. Source Metadata Response + + A SWIMA-PC sends this attribute to a SWIMA-PV to provide descriptive + metadata about the sources of software inventory information used by + the SWIMA-PC. A SWIMA-PV MUST NOT send this attribute. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Reserved | Source Count | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | SUB-BLOCK (Repeated "Source Count" times) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 19: Source Metadata Response Attribute + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Source Id Num | Metadata Length | Metadata (var)| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 20: Source Metadata Response Attribute SUB-BLOCK + + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 76] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +----------------+--------------------------------------------------+ + | Field | Description | + +----------------+--------------------------------------------------+ + | Reserved | Reserved for future use. This field MUST be set | + | | to zero on transmission and ignored upon | + | | reception. | + | | | + | Source Count | The number of source records that follow. The | + | | Source Identification Number, Metadata Length, | + | | and Metadata fields are repeated, in order, the | + | | number of times indicated by this field. This | + | | field MAY be 0, in which case no fields follow | + | | (but this would only be done to indicate that | + | | the SWIMA-PC has no active sources; this would | + | | not be a typical situation). | + | | | + | Source | The Source Identifier number associated with the | + | Identification | described source for any communications with the | + | Number | recipient SWIMA-PV. | + | | | + | Metadata | A 2-byte unsigned integer indicating the length, | + | Length | in bytes, of the Metadata field. | + | | | + | Metadata | A string containing descriptive metadata about | + | | the indicated data source. This string MUST NOT | + | | be null terminated. | + +----------------+--------------------------------------------------+ + + Table 8: Source Metadata Response Fields + + A Source Metadata Response attribute contains zero or more records, + each describing one of the data sources the SWIMA-PC uses to collect + software inventory information. It SHOULD contain one metadata + record for each source that the SWIMA-PC uses. (There might be + reasons not to inform certain SWIMA-PVs of the presence of certain + data sources.) The attribute MUST contain a metadata record for each + source that has been identified in inventory or event messages to the + given SWIMA-PV. + + A SWIMA-PC MUST send a Source Metadata Response attribute in response + to a Source Metadata Request attribute, except in cases where the + SWIMA-PC experiences an error condition that prevents it from + correctly populating the Source Metadata Response attribute (in which + case it MUST respond with a PA-TNC Error attribute appropriate to the + type of error experienced). + + + + + + +Schmidt, et al. Standards Track [Page 77] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The Source Count field indicates how many source metadata records are + included in the attribute. Each included record consists of a Source + Identification Number field, a Metadata Length field, and a Metadata + field. + + The Source Identification Number field in the Source Metadata + Response attribute corresponds to the Source Identification Number + field in inventory and event messages. In the case where (1) the + Source Identification Number value in this attribute matches a Source + Identification Number field in an inventory or event record and + (2) both the Source Metadata Response and the inventory or event + record were sent to the same SWIMA-PV, the source described in the + Metadata field MUST be the same source that provided the inventory or + event record associated with this Source Identifier. Recall that a + SWIMA-PC MAY use different Source Identification Number associations + with different SWIMA-PVs. As such, the association between a Source + Identification Number and the conveyed metadata is also only + meaningful for communications between the sending SWIMA-PC and + receiving SWIMA-PV. When sending to a given SWIMA-PV, the SWIMA-PC + MUST use the recipient SWIMA-PV's Source Identification Number + associations. + + The Metadata Length field indicates the length, in bytes, of the + Metadata field. The Metadata field contains information about the + indicated data source. This specification does not dictate a format + for the contents of the Metadata field. This field MAY include + machine-readable information. For broadest utility, the Metadata + field SHOULD include human-readable, descriptive information about + the data source. + +5.15. PA-TNC Error as Used by SWIMA + + The PA-TNC Error attribute is defined in the PA-TNC specification + [RFC5792], and its use here conforms to that specification. A PA-TNC + Error can be sent due to any error in the PA-TNC exchange and might + also be sent in response to error conditions specific to the SWIMA + exchange. The latter case utilizes error codes defined below. + + A PA-TNC Error MUST be sent by a SWIMA-PC in response to a SWIMA + Request in the case where the SWIMA-PC encounters a fatal error + (i.e., an error that prevents further processing of an exchange) + relating to the attribute exchange. A SWIMA-PV MUST NOT send this + attribute. In the case where the SWIMA-PV experiences a fatal error, + it MUST handle the error without sending a PA-TNC Error attribute. + The SWIMA-PV MAY take other actions in response to the error, such as + logging the cause of the error or even taking actions to isolate the + endpoint. + + + + +Schmidt, et al. Standards Track [Page 78] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + A PA-TNC Error attribute is sent instead of a SWIMA Response + attribute when certain issues prevent the reliable creation of a + SWIMA Response. As such, a SWIMA-PC MUST NOT send both a PA-TNC + Error attribute and a SWIMA Response attribute in response to a + single SWIMA Request attribute. + + Table 9 lists the error code values for the PA-TNC Error attribute + that are specific to the SWIMA exchange. Error codes are shown in + both hexadecimal and decimal format. In all of these cases, the + Error Code Vendor ID field MUST be set to 0x000000, corresponding to + the IETF SMI PEN. The error information structures for each error + code are described in the following subsections. + + Note that a message with a SWIMA attribute might also result in an + error condition covered by the IETF Standard PA-TNC Error Codes + defined in Section 4.2.8 of [RFC5792]. For example, a SWIMA + attribute might have an invalid parameter, leading to an error code + of "Invalid Parameter". In this case, the SWIMA-PC MUST use the + appropriate PA-TNC Error Code value as defined in Section 4.2.8 of + [RFC5792]. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 79] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +----------------+--------------------------------------------------+ + | Error Code | Description | + | Value | | + +----------------+--------------------------------------------------+ + | 0x00000004 (4) | SWIMA_ERROR. This indicates a fatal error | + | | (i.e., an error that precludes the creation of a | + | | suitable response attribute) other than the | + | | errors described below but still specific to the | + | | processing of SWIMA attributes. The Description | + | | field SHOULD contain additional diagnostic | + | | information. | + | | | + | 0x00000005 (5) | SWIMA_SUBSCRIPTION_DENIED_ERROR. This indicates | + | | that the SWIMA-PC denied the SWIMA-PV's request | + | | to establish a subscription. The Description | + | | field SHOULD contain additional diagnostic | + | | information. | + | | | + | 0x00000006 (6) | SWIMA_RESPONSE_TOO_LARGE_ERROR. This indicates | + | | that the SWIMA-PC's response to the SWIMA-PV's | + | | request was too large to be serviced. The error | + | | information structure indicates the largest | + | | possible size of a response supported by the | + | | SWIMA-PC (see Section 5.15.2). The Description | + | | field SHOULD contain additional diagnostic | + | | information. | + | | | + | 0x00000007 (7) | SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR. This | + | | indicates that the SWIMA-PC experienced an error | + | | while fulfilling a given subscription. The | + | | error information includes the Subscription ID | + | | of the relevant subscription, as well as a | + | | sub-error that describes the nature of the error | + | | the SWIMA-PC experienced. The SWIMA-PC and | + | | SWIMA-PV MUST treat the identified subscription | + | | as cancelled. | + | | | + | 0x00000008 (8) | SWIMA_SUBSCRIPTION_ID_REUSE_ERROR. This | + | | indicates that the SWIMA-PC received a SWIMA | + | | Request from a given SWIMA-PV where the Request | + | | ID of that SWIMA Request is currently used as | + | | the Subscription ID of an active subscription | + | | with that SWIMA-PV. This error does not cancel | + | | the identified subscription. | + +----------------+--------------------------------------------------+ + + Table 9: PA-TNC Error Codes for SWIMA + + + + +Schmidt, et al. Standards Track [Page 80] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The following subsections describe the structures present in the + error information fields. Note that all error structures include a + variable-length field but do not include any fields indicating the + length of those fields. A length field is unnecessary because all + other fields in the PA-TNC Error attribute are of fixed length, and + thus the length of the variable-length field can be found by + subtracting the size of these fixed-length fields from the PA-TNC + Attribute Length field in the PA-TNC Attribute Header. + +5.15.1. SWIMA_ERROR, SWIMA_SUBSCRIPTION_DENIED_ERROR, and + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR Information + + The SWIMA_ERROR error code indicates that the sender (the SWIMA-PC) + has encountered an error that is related to the processing of a SWIMA + Request attribute but that is not covered by SWIMA error codes that + are more specific. The SWIMA_SUBSCRIPTION_DENIED_ERROR is used when + the SWIMA-PV sends a request to establish a subscription or clear all + subscriptions from the given SWIMA-PV but the SWIMA-PC is unable or + unwilling to comply with this request. The + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR is used when the SWIMA-PC receives + a SWIMA Request whose Request ID duplicates a Subscription ID of an + active subscription with the request's sender. All of these error + codes use the following error information structure. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Copy of Request ID / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Description (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 21: SWIMA_ERROR, SWIMA_SUBSCRIPTION_DENIED_ERROR, and + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR Information + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 81] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +--------------+----------------------------------------------------+ + | Field | Description | + +--------------+----------------------------------------------------+ + | Copy of | In the case that this error condition is generated | + | Request ID / | in direct response to a SWIMA Request attribute, | + | Subscription | this field MUST contain an exact copy of the | + | ID | Request ID field in the SWIMA Request attribute | + | | that caused this error. In the case that the | + | | attribute in question is generated in fulfillment | + | | of an active subscription, this field MUST contain | + | | the Subscription ID of the subscription for which | + | | the attribute was generated. (This is only | + | | possible if the error code is SWIMA_ERROR, as the | + | | other errors are not generated by subscription | + | | fulfillment.) Note that in the case of failed | + | | subscription fulfillment, the indicated error | + | | appears as a sub-error for a | + | | SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR, as described | + | | in Section 5.15.3. | + | | | + | Description | A UTF-8 [RFC3629] string describing the condition | + | | that caused this error. This field MAY be zero- | + | | length. However, senders SHOULD include some kind | + | | of description in all PA-TNC Error attributes with | + | | these error codes. This field MUST NOT be null | + | | terminated. | + +--------------+----------------------------------------------------+ + + Table 10: SWIMA_ERROR, SWIMA_SUBSCRIPTION_DENIED_ERROR, and + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR Information Fields + + This error information structure is used with SWIMA_ERROR, + SWIMA_SUBSCRIPTION_DENIED_ERROR, and + SWIMA_SUBSCRIPTION_ID_REUSE_ERROR status codes to identify the SWIMA + Request attribute that precipitated the error condition and to + describe the error. The Description field contains text describing + the error. The SWIMA-PC MAY encode machine-interpretable information + in this field but SHOULD also include a human-readable description of + the error, since the receiving SWIMA-PV might not recognize the + SWIMA-PC's encoded information. + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 82] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.15.2. SWIMA_RESPONSE_TOO_LARGE_ERROR Information + + The SWIMA_RESPONSE_TOO_LARGE_ERROR error code indicates that a + SWIMA-PC's response to a SWIMA-PV's SWIMA Request attribute was too + large to send. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Copy of Request ID / Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Maximum Allowed Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Description (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 22: SWIMA_RESPONSE_TOO_LARGE_ERROR Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 83] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +--------------+----------------------------------------------------+ + | Field | Description | + +--------------+----------------------------------------------------+ + | Copy of | In the case that the attribute in question is | + | Request ID / | generated in direct response to a SWIMA Request, | + | Subscription | this field MUST contain an exact copy of the | + | ID | Request ID field in the SWIMA Request attribute | + | | that caused this error. In the case that the | + | | attribute in question is generated in fulfillment | + | | of an active subscription, this field MUST contain | + | | the Subscription ID of the subscription for which | + | | the attribute was generated. Note that in the | + | | latter case, the SWIMA_RESPONSE_TOO_LARGE_ERROR | + | | appears as a sub-error for a | + | | SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR, as described | + | | in Section 5.15.3. | + | | | + | Maximum | This field MUST contain an unsigned integer | + | Allowed Size | indicating the largest permissible size, in bytes, | + | | of the SWIMA attribute that the SWIMA-PC is | + | | currently willing to send in response to a SWIMA | + | | Request attribute. | + | | | + | Description | A UTF-8 [RFC3629] string describing the condition | + | | that caused this error. This field MAY be zero- | + | | length. However, senders SHOULD include some kind | + | | of description in all PA-TNC Error attributes with | + | | this error code. This field MUST NOT be null | + | | terminated. | + +--------------+----------------------------------------------------+ + + Table 11: SWIMA_RESPONSE_TOO_LARGE_ERROR Information Fields + + This error structure is used with the SWIMA_RESPONSE_TOO_LARGE_ERROR + status code to identify the SWIMA Request attribute that precipitated + the error condition and to describe the error. The Maximum Allowed + Size field indicates the largest attribute the SWIMA-PC is willing to + send in response to a SWIMA Request under the current circumstances. + Note that under other circumstances, the SWIMA-PC might be willing to + return larger or smaller responses than indicated (such as if the + endpoint connects to the NEA Server using a different network + protocol). The other fields in this error information structure have + the same meanings as corresponding fields in the SWIMA_ERROR and + SWIMA_SUBSCRIPTION_DENIED_ERROR information structures. + + + + + + + +Schmidt, et al. Standards Track [Page 84] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +5.15.3. SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR Information + + The SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR error code indicates that + the SWIMA-PC encountered an error while fulfilling a subscription. + The bytes after the first 4 octets duplicate a PA-TNC Error attribute + (as described in Section 4.2.8 of PA-TNC [RFC5792]) that is used to + identify the nature of the encountered error. + + 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Subscription ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Reserved | Sub-error Code Vendor ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sub-error Code | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sub-error Information (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 23: SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR Information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 85] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + +--------------+----------------------------------------------------+ + | Field | Description | + +--------------+----------------------------------------------------+ + | Subscription | This field MUST contain the Subscription ID of the | + | ID | subscription whose fulfillment caused this error. | + | | | + | Reserved | This field MUST contain the value of the Reserved | + | | field of a PA-TNC Error attribute that describes | + | | the error condition encountered during | + | | subscription processing. | + | | | + | Sub-error | This field MUST contain the value of the Error | + | Code Vendor | Code Vendor ID field of a PA-TNC Error attribute | + | ID | that describes the error condition encountered | + | | during subscription processing. | + | | | + | Sub-error | This field MUST contain the value of the Error | + | Code | Code field of a PA-TNC Error attribute that | + | | describes the error condition encountered during | + | | subscription processing. | + | | | + | Sub-error | This field MUST contain the value of the Error | + | Information | Information field of a PA-TNC Error attribute that | + | | describes the error condition encountered during | + | | subscription processing. | + +--------------+----------------------------------------------------+ + + Table 12: SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR Information Fields + + This error structure is used with the + SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR status code. The first 4 octets + of this error structure contain the Subscription ID of the + subscription that was being fulfilled when the error occurred. The + remaining fields of this error structure duplicate the fields of a + PA-TNC Error attribute, referred to as the "sub-error". The error + code of the sub-error corresponds to the code of the error that the + SWIMA-PC encountered while fulfilling the given subscription. The + sub-error MUST NOT have an error code of + SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR. + + The SWIMA-PC sending a PA-TNC Error attribute with this error code, + and the SWIMA-PV receiving it, MUST treat the subscription identified + by the Subscription ID field as cancelled. All other subscriptions + are unaffected. + + + + + + + +Schmidt, et al. Standards Track [Page 86] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +6. Supported Data Models + + SWIMA supports an extensible list of data models for representing and + transmitting software inventory information. This list of data + models appears in the "Software Data Model Types" registry (see + Section 10.5). This document provides guidance for an initial set of + data models. Other documents might provide guidance on the use of + new data models by SWIMA and will be referenced by extensions to the + "Software Data Model Types" registry. + +6.1. ISO 2015 SWID Tags Using XML + + The International Organization for Standardization and the + International Electrotechnical Commission (ISO/IEC) published the + specification governing SWID tag construction and use + (ISO/IEC 19770-2:2009) in 2009 [SWID09], with a revised version of + the specification (ISO/IEC 19770-2:2015) published in 2015 [SWID15]. + Since that time, a growing number of vendors have integrated SWID + tags into their software products. SWID tags significantly simplify + the task of identifying pieces of software: instead of relying on + discovery processes that look for clues as to software presence, such + as the presence of particular files or registry keys, vendors can use + a readily available list of SWID tags that provides simple and + immediate evidence as to the presence of the given piece of software. + + SWIMA has no reliance on the presence or management of SWID tags on + an endpoint as described in the ISO 2015 SWID tag specification. + However, as presented in the ISO 2015 SWID tag specification, the + data model for describing software provides a robust and + comprehensive way of describing software and is adopted here as a + means of representing and transmitting software information. It + should be emphasized that the use of the ISO SWID tag data model + makes no assumption as to whether (1) the source of the recorded + information was, in fact, an ISO SWID tag harvested from the endpoint + or (2) the information was created using some other source and + normalized to the SWID format. + +6.1.1. Guidance on Normalizing Source Data to ISO 2015 SWID Tags + Using XML + + Any record associated with this Software Data Model Type MUST conform + to [SWID15]. + + If generating a new ISO 2015 SWID tag, the software generating the + tag MUST use a Tag Creator RegID that is associated with the + generating software, unless this is impossible, in which case it MUST + use the "http://invalid.unavailable" Tag Creator RegID value. (This + conforms to conventions for an unknown tag creator in the ISO 2015 + + + +Schmidt, et al. Standards Track [Page 87] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + SWID tag specification.) Do not use a RegID associated with any + other party. In particular, it is incorrect to use a Tag Creator + RegID associated with the software being described by the tag, the + enterprise that is using the software, or any other entity except + that of the party that built the tool that is generating the SWID + tag. This reflects the requirement that the Tag Creator RegID + identify the party that created the tag. Moreover, any generated + tags SHOULD conform to guidance for tag creators as provided in + NISTIR 8060 [NIST8060], which provides additional recommendations to + increase interoperable use of SWID tags. + +6.1.2. Guidance on Creation of Software Identifiers from ISO 2015 + SWID Tags + + A Software Identifier generated from an ISO 2015 SWID tag is + expressed as a concatenation of the value of the Tag Creator RegID + field and the Unique ID field. Specifically, (1) it MUST be of the + form TAG_CREATOR_REGID "_" "_" UNIQUE_ID and (2) it consists of the + Tag Creator RegID and the Unique ID from the tag connected with a + double underscore (_), without any other connecting character or + whitespace. + +6.2. ISO 2009 SWID Tags Using XML + + As noted above, ISO's SWID tag specification provides a useful data + model for representation of software information. As of the writing + of this specification, while the ISO 2015 specification is considered + more comprehensive and addresses some issues with the ISO 2009 + specification, 2009-format SWID tags remain far more common in + deployments. For this reason, ISO 2009 SWID tags are included in the + "Software Data Model Types" registry. + +6.2.1. Guidance on Normalizing Source Data to ISO 2009 SWID Tags + Using XML + + Any record associated with this Software Data Model Type MUST conform + to [SWID09]. Any such tag SHOULD use a UTF-8 encoding [RFC3629] but + MUST NOT alter the existing encoding if doing so would invalidate + digital signatures included in the tag. + + If generating a new ISO 2009 SWID tag, the software generating the + tag MUST use a Tag Creator RegID that is associated with the + generating software, unless this is impossible, in which case it MUST + use "unknown", which indicates that the tag creator is unknown. + (This conforms to conventions for an unknown tag creator in the + ISO 2009 SWID tag specification.) Do not use a RegID associated with + any other party. In particular, it is incorrect to use a Tag Creator + RegID associated with the software being described by the tag, the + + + +Schmidt, et al. Standards Track [Page 88] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + enterprise that is using the software, or any other entity except + that of the party that built the tool that is generating the SWID + tag. This reflects the requirement that the Tag Creator RegID + identify the party that created the tag. + +6.2.2. Guidance on Creation of Software Identifiers from ISO 2009 + SWID Tags + + A Software Identifier generated from an ISO 2009 SWID tag is + expressed as a concatenation of the value of the Tag Creator RegID + field and the Unique ID field. Specifically, (1) it MUST be of the + form TAG_CREATOR_REGID "_" "_" UNIQUE_ID and (2) it consists of the + Tag Creator RegID and the Unique ID from the tag connected with a + double underscore (_), without any other connecting character or + whitespace. + +7. Relationship to Other Specifications + + This specification is expected to participate in a standard NEA + architecture. As such, it is expected to be used in conjunction with + the other protocols used in a NEA exchange. In particular, SWIMA + attributes are conveyed over PB-TNC [RFC5793], which is in turn + conveyed over some variant of PT (either PT-TLS [RFC6876] or PT-EAP + [RFC7171]). These protocols have an especially important role, as + they are responsible for ensuring that attributes defined under this + specification are delivered reliably, securely, and to the + appropriate party. + + It is important to note that the Product Information, Numeric + Version, and String Version attributes defined in the PA-TNC + specification [RFC5792] are also meant to convey information about + installed applications and the versions thereof. As such, there is + some conceptual overlap between those attributes and the intent of + this specification. However, PA-TNC was designed to respond to very + specific queries about specific classes of products, while SWIMA is + able to convey a broader query, resulting in a more comprehensive set + of information regarding an endpoint's installed software. As such, + this specification provides important capabilities not present in the + PA-TNC specification. + + The NEA architecture is intended to support a broad range of + activities and, as such, might be employed by other specifications. + For example, requirement T-001 in the SACM Requirements document + [RFC8248] notes that NEA can support data collection from endpoints + within the broader SACM architecture. (Other parts of the NEA + architecture, which SWIMA uses, meet the other SACM data transport + requirements.) In the SACM architecture, a SWIMA-PV corresponds to a + "SACM Collector" and a SWIMA-PC corresponds to a "SACM Internal + + + +Schmidt, et al. Standards Track [Page 89] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Collector". In the SACM architecture, SWIMA can support activities + relating to software inventory collection. Specifically, SWIMA + supports the SACM "Endpoint Posture Attribute Value Collection" use + case (Section 2.1.3 in [RFC7632]) by describing a collection + mechanism that enables event-driven, scheduled, and ad hoc data + collection of software inventory information. SWIMA's flexibility + with regard to the format of inventory data records means that it is + compatible with virtually any data format that implements SACM's + "Define, Publish, Query, and Retrieve Security Automation Data" use + case (Section 2.1.1 in [RFC7632]). This is just one example of how + SWIMA can support broader security solution standards. Note that + while SWIMA can support these SACM use cases, SWIMA has no + dependencies on the SACM architecture or any other context in which + NEA might reasonably be applied. + +8. Security Considerations + + This section discusses some of the security threats facing SWIMA-PCs + and SWIMA-PVs. This section primarily notes potential issues for + implementers to consider, although it does contain a handful of + normative requirements to address certain security issues. The + issues identified below focus on capabilities specific to this + document. Implementers are advised to consult other relevant NEA + specifications, particularly [RFC5209] (the NEA architecture) and + [RFC5792] (PA-TNC), for security issues that are applicable to such + components in general. + +8.1. Evidentiary Value of Software Inventory Evidence Records + + The degree to which an endpoint's Software Inventory Evidence + Collection accurately reflects the endpoint's actual software load + and any changes made to this software load is dependent on the + accuracy of the tools used to populate and manage the Software + Inventory Evidence Records in this collection. While the SWIMA-PC is + required to detect changes to an endpoint's Software Inventory + Evidence Collection in near real time, some tools might not be + designed to update records in the Software Inventory Evidence + Collection in real time. This can result in a collection that is out + of sync with actual system state. Moreover, tools might inaccurately + characterize software or fail to properly record its removal. + Finally, it is likely that there will be software on the endpoint + that is not tracked by any source and thus is not reflected in the + Software Inventory Evidence Collection. Tools that implement SWIMA + ought to be aware of these potential issues and minimize them, but + completely eliminating such issues is likely impossible. Users of + collected Software Inventory Evidence Records need to understand that + the information provided by SWIMA cannot be treated as completely + accurate. Nonetheless, having endpoints report this information can + + + +Schmidt, et al. Standards Track [Page 90] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + still provide useful insights into the state of the endpoint's + software load and can alert administrators and policy tools of + situations that require remediation. + +8.2. Sensitivity of Collected Records + + Collected software records can be sensitive in nature. This can + include both security sensitivities and privacy sensitivities. + Privacy sensitivities are discussed more in Section 9. With regard + to security, inventory records represent a wealth of information + about the endpoint in question, and for an adversary who does not + already have access to the endpoint a collection of the endpoint's + inventory records might provide many details that are useful for + mounting an attack. A list of the inventory records associated with + an endpoint reveals a list of software installed on the endpoint. + This list can be very detailed, noting specific versions and even + patch levels; an adversary can use this information to identify + vulnerable software and design efficacious attacks. + + The following information might also be gleaned from a collection of + software inventory records: + + o An inventory record might include information about where the + product was installed on a given endpoint. This can reveal + details about the file organization of that endpoint that an + attacker can utilize. + + o An inventory record might include information about how the + software was provided to the endpoint, who in an organization + signs off on the package release, and who packaged the product for + installation. This information might be used as a starting point + for the development of supply chain attacks. + + o Events affecting inventory records are reported with timestamps + indicating when each given event occurred. This can give the + attacker an indication of how quickly an organization distributes + patches and updates, helping the attacker determine how long an + attack window might remain open. + + Any consolidated software inventory is a potential risk, because such + an inventory can provide an adversary an insight into the + enterprise's configuration and management process. It is recommended + that a centralized software inventory record collection be protected + against unauthorized access. Mechanisms to accomplish this can + include encrypting the data at rest, ensuring that access to the data + is limited only to authorized individuals and processes, and other + basic security precautions. + + + + +Schmidt, et al. Standards Track [Page 91] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +8.3. Integrity of Endpoint Records + + SWIMA-PCs maintain records of detected changes to the endpoint's + Software Inventory Evidence Collection. These records are used to + respond to a SWIMA-PV's request for change events. The SWIMA-PV + might use a list of reported events to update its understanding of + the endpoint's Software Inventory Evidence Collection without needing + to receive a full inventory report from the SWIMA-PC. For this + reason, preserving the integrity of the SWIMA-PC's record of events + is extremely important. If an attacker modifies the SWIMA-PC's + record of changes to the endpoint's Software Inventory Evidence + Collection, this might cause the SWIMA-PV's understanding of the + endpoint's Software Inventory Evidence Collection to differ from its + actual state. The results of such an attack might include leading + the SWIMA-PV to believe that (1) absent software was present or, + conversely, that present software was absent or (2) patches have been + installed even if this is not the case. Such an attack could also + cause the SWIMA-PV to be unaware of other changes to Software + Inventory Evidence Records. As such, the SWIMA-PC MUST take steps to + protect the integrity of its event records. + + In addition, records of established SWIMA-PV subscriptions also + require protection against manipulation or corruption. If an + attacker is able to modify or delete records of a SWIMA-PV's + established subscription, the SWIMA-PC might fail to correctly + fulfill this subscription. The SWIMA-PV would not be aware that its + subscription was not being correctly fulfilled unless it received + additional information that indicated a discrepancy. For example, + the SWIMA-PV might collect a full inventory and realize from this + information that certain events had not been correctly reported in + accordance with an established subscription. For this reason, the + SWIMA-PC MUST protect the integrity of subscription records. + +8.4. SWIMA-PC Access Permissions + + A SWIMA-PC requires sufficient permissions to collect Software + Inventory Evidence Records from all of its supported sources, as well + as sufficient permissions to interact with the endpoint's Posture + Broker Client. With regard to the former, this might require + permissions to read the contents of directories throughout the + filesystem. Depending on the operating environment and other + activities undertaken by a SWIMA-PC (or software that incorporates a + SWIMA-PC as one of its capabilities), additional permissions might be + required by the SWIMA-PC software. The SWIMA-PC SHOULD NOT be + granted permissions beyond what it needs to fulfill its duties. + + + + + + +Schmidt, et al. Standards Track [Page 92] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +8.5. Sanitization of Record Fields + + Not all sources of software inventory evidence are necessarily + tightly controlled. For example, consider a source that gathers + .swid files from the endpoint's filesystem. Any party could create a + new .swid file that could be collected and turned into a Software + Inventory Evidence Record. As a result, it is important that the + contents of source information not be automatically trusted. In + particular, tools that read source information and the Software + Inventory Evidence Records derived therefrom, including SWIMA-PCs, + need to be careful to sanitize input to prevent buffer overflow + attacks, encoding attacks, and other weaknesses that might be + exploited by an adversary who can control the contents of a record. + +8.6. PA-TNC Security Threats + + In addition to the aforementioned considerations, the SWIMA protocol + is subject to the same security threats as other PA-TNC transactions; + see Section 5.2 of PA-TNC [RFC5792]. These include, but are not + limited to, attribute theft, message fabrication, attribute + modification, attribute replay, attribute insertion, and denial of + service. Implementers are advised to consult the PA-TNC + specification to better understand these security issues. + +9. Privacy Considerations + + As noted in Section 8.2, if an adversary can gain an understanding of + the software installed on an endpoint, they can utilize this to + launch attacks and maintain footholds on this endpoint. For this + reason, the NEA Server needs to ensure that adequate safeguards are + in place to prevent exposure of collected inventory records. For + similar reasons, it is advisable that an endpoint only send records + to a NEA Server that is authorized to receive this information and + that can be trusted to safeguard this information after collection. + + In addition, software inventory information can lead to insights + about the endpoint's primary user if that user is able to install + software. (Note that users might be "able" to install their own + software even if they are not "allowed" to do so.) This is + especially true on endpoints that support "apps", as individual apps + can be closely tied to specific groups or activities. This could + conceivably allow inferences about things such as a user's hobbies; + the banks and other financial institutions that they use; and + information about the user's race, sex, or sexual orientation. + + + + + + + +Schmidt, et al. Standards Track [Page 93] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + Organizations that collect software inventory information from + endpoints ought to make sure the endpoints' users are aware of this + collection. In addition, organizations should be aware that a + software inventory associated with an individual, such as the + inventory of the individual's primary endpoint, could expose + sensitive personal information. For this reason, privacy safeguards + are necessary for collected inventory information. Such safeguards + would require not only protection of the inventory's confidentiality + but also appropriate access controls so that only those trained in + relevant privacy requirements are able to view the data. + +10. IANA Considerations + + This section extends multiple existing IANA registries. + Specifically, it extends the "PA-TNC Attribute Types" and "PA-TNC + Error Codes" registries defined in the PA-TNC specification [RFC5792] + and the "PA Subtypes" registry defined in the PB-TNC specification + [RFC5793] and extended in PA-TNC. This specification only adds + values to these registries and does not alter how these registries + work or are maintained. Consult the appropriate specifications for + details on the operations and maintenance of these registries. + + This section also defines a new IANA registry for "Software Data + Model Types". The structure and requirements for this registry are + provided, as well as guidelines for reviewers adjudicating the + addition of new entries to this registry. + +10.1. Guidance for the Designated Experts + + For the "Software Data Model Types" registry defined by this + specification, new values are added to the registry using the + "Specification Required" process defined in RFC 8126 [RFC8126]. + + This section provides guidance to designated experts so that they may + make decisions using a philosophy appropriate for this registry. + + Designated experts should focus on the following requirements. All + values in this IANA registry MUST be documented in a specification + that is permanently and publicly available. Values MUST also be + useful, not harmful to the Internet, and defined in a manner that is + clear and likely to ensure interoperability. + + Designated experts should encourage vendors to avoid defining similar + but incompatible values and instead agree on a single value allocated + via IETF standards. However, it is beneficial to document existing + practice. + + + + + +Schmidt, et al. Standards Track [Page 94] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + There are several ways to ensure that a specification is permanently + and publicly available. It may be published as an RFC. + Alternatively, it may be published in another manner that makes it + freely available to anyone. However, in this latter case, the vendor + MUST supply a copy to IANA and authorize IANA to archive this copy + and make it freely available to all, if at some point the document + becomes no longer freely available to all through other channels. + + Sections 10.2, 10.3, and 10.4 define a new PA Subtype, new PA-TNC + Attribute Types, and new PA-TNC Error Codes, respectively. + Section 10.5 provides guidance to IANA in creating and managing the + new "Software Data Model Types" registry defined by this + specification. + +10.2. PA Subtypes + + The following is an extension to the list of PA Subtypes provided in + Section 7.2 of [RFC5792] and defined in the "PA Subtypes" registry in + Section 6.3 of [RFC5793]. See <https://www.iana.org/assignments/ + pb-tnc-parameters/>. + + +-----+---------+------------------+------------------------+ + | PEN | Integer | Name | Defining Specification | + +-----+---------+------------------+------------------------+ + | 0 | 9 | SWIMA Attributes | RFC 8412 | + +-----+---------+------------------+------------------------+ + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 95] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +10.3. PA-TNC Attribute Types + + Section 5.2 of this specification defines several new PA-TNC + attributes. The following values have been added to the "PA-TNC + Attribute Types" registry defined in the PA-TNC specification. Note + that Table 1 in Section 5.2 lists these attributes in both + hexadecimal and decimal format. The decimal values given in that + table are identical to those provided here. Note also that Table 1 + includes an entry for the PA-TNC Error attribute, but the IANA + information associated with the PA-TNC Error attribute is already + defined in the PA-TNC specification and is not reproduced here. + + +-----+---------+----------------------------+----------------------+ + | PEN | Integer | Name | Defining | + | | | | Specification | + +-----+---------+----------------------------+----------------------+ + | 0 | 13 | SWIMA Request | RFC 8412 | + | | | | | + | 0 | 14 | Software Identifier | RFC 8412 | + | | | Inventory | | + | | | | | + | 0 | 15 | Software Identifier Events | RFC 8412 | + | | | | | + | 0 | 16 | Software Inventory | RFC 8412 | + | | | | | + | 0 | 17 | Software Events | RFC 8412 | + | | | | | + | 0 | 18 | Subscription Status | RFC 8412 | + | | | Request | | + | | | | | + | 0 | 19 | Subscription Status | RFC 8412 | + | | | Response | | + | | | | | + | 0 | 20 | Source Metadata Request | RFC 8412 | + | | | | | + | 0 | 21 | Source Metadata Response | RFC 8412 | + +-----+---------+----------------------------+----------------------+ + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 96] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +10.4. PA-TNC Error Codes + + Section 5.15 of this specification defines several new PA-TNC Error + Codes. The following values have been added to the "PA-TNC Error + Codes" registry defined in the PA-TNC specification. Note that + Table 9 in Section 5.15 lists these codes in both hexadecimal and + decimal format. The decimal values given in that table are identical + to those provided here. + ++-----+---------+--------------------------------------+---------------+ +| PEN | Integer | Name | Defining | +| | | | Specification | ++-----+---------+--------------------------------------+---------------+ +| 0 | 4 | SWIMA_ERROR | RFC 8412 | +| | | | | +| 0 | 5 | SWIMA_SUBSCRIPTION_DENIED_ERROR | RFC 8412 | +| | | | | +| 0 | 6 | SWIMA_RESPONSE_TOO_LARGE_ERROR | RFC 8412 | +| | | | | +| 0 | 7 | SWIMA_SUBSCRIPTION_FULFILLMENT_ERROR | RFC 8412 | +| | | | | +| 0 | 8 | SWIMA_SUBSCRIPTION_ID_REUSE_ERROR | RFC 8412 | ++-----+---------+--------------------------------------+---------------+ + +10.5. Software Data Model Types + + For the "Software Data Model Types" registry + (<https://www.iana.org/assignments/pa-tnc-parameters/ + #software-data-model-types>, each entry should include a + human-readable name, an SMI PEN, a decimal integer value between 0 + and 2^8-1 (inclusive), and a reference to the specification where the + use of this data model is defined. This referenced specification + needs to provide both a description of the format used by the data + model and the procedures by which Software Identifiers are derived + from a record expressed using this data model. Note that a + specification that just defines the data model structure and its use + is generally not sufficient, as it would likely lack the procedures + for constructing a Software Identifier. This is why the table below + uses the SWIMA standard for ISO SWID tags as the reference for the + use of ISO SWID tags and does not reference the ISO SWID tag + specification. + + + + + + + + + + +Schmidt, et al. Standards Track [Page 97] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + The following entries for this registry are defined in this document. + They are the initial entries in the "Software Data Model Types" + registry. Additional entries to this registry are added following + the "Specification Required" policy defined in [RFC8126], following + the guidelines in Section 10.1. + + +-----+---------+-----------------------------+---------------------+ + | PEN | Integer | Name | Defining | + | | | | Specification | + +-----+---------+-----------------------------+---------------------+ + | 0 | 0 | ISO 2015 SWID tags using | RFC 8412 | + | | | XML | | + | | | | | + | 0 | 1 | ISO 2009 SWID tags using | RFC 8412 | + | | | XML | | + | | | | | + | 0 | 192-255 | Reserved for local | N/A | + | | | enterprise use | | + +-----+---------+-----------------------------+---------------------+ + +11. References + +11.1. Normative References + + [NIST8060] + Waltermire, D., Cheikes, B., Feldman, L., and G. Witte, + "Guidelines for the Creation of Interoperable Software + Identification (SWID) Tags", DOI 10.6028/NIST.IR.8060, + April 2016, <https://nvlpubs.nist.gov/nistpubs/ir/2016/ + NIST.IR.8060.pdf>. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: + Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, + <https://www.rfc-editor.org/info/rfc3339>. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format of + ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, + November 2003, <https://www.rfc-editor.org/info/rfc3629>. + + [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform + Resource Identifier (URI): Generic Syntax", STD 66, + RFC 3986, DOI 10.17487/RFC3986, January 2005, + <https://www.rfc-editor.org/info/rfc3986>. + + + +Schmidt, et al. Standards Track [Page 98] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network + Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, + <https://www.rfc-editor.org/info/rfc5198>. + + [RFC5792] Sangster, P. and K. Narayan, "PA-TNC: A Posture Attribute + (PA) Protocol Compatible with Trusted Network Connect + (TNC)", RFC 5792, DOI 10.17487/RFC5792, March 2010, + <https://www.rfc-editor.org/info/rfc5792>. + + [RFC8089] Kerwin, M., "The "file" URI Scheme", RFC 8089, + DOI 10.17487/RFC8089, February 2017, + <https://www.rfc-editor.org/info/rfc8089>. + + [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for + Writing an IANA Considerations Section in RFCs", BCP 26, + RFC 8126, DOI 10.17487/RFC8126, June 2017, + <https://www.rfc-editor.org/info/rfc8126>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in + RFC 2119 Key Words", BCP 14, RFC 8174, + DOI 10.17487/RFC8174, May 2017, + <https://www.rfc-editor.org/info/rfc8174>. + + [SWID09] The International Organization for Standardization/ + International Electrotechnical Commission, "Information + technology - Software asset management - Part 2: Software + identification tag", ISO/IEC 19770-2:2009, November 2009, + <https://www.iso.org/standard/53670.html>. + + [SWID15] The International Organization for Standardization/ + International Electrotechnical Commission, "Information + technology - Software asset management - Part 2: Software + identification tag", ISO/IEC 19770-2:2015, October 2015, + <https://www.iso.org/standard/65666.html>. + +11.2. Informative References + + [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J. + Tardo, "Network Endpoint Assessment (NEA): Overview and + Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008, + <https://www.rfc-editor.org/info/rfc5209>. + + [RFC5793] Sahita, R., Hanna, S., Hurst, R., and K. Narayan, "PB-TNC: + A Posture Broker (PB) Protocol Compatible with Trusted + Network Connect (TNC)", RFC 5793, DOI 10.17487/RFC5793, + March 2010, <https://www.rfc-editor.org/info/rfc5793>. + + + + + +Schmidt, et al. Standards Track [Page 99] + +RFC 8412 SWIMA for PA-TNC July 2018 + + + [RFC6876] Sangster, P., Cam-Winget, N., and J. Salowey, "A Posture + Transport Protocol over TLS (PT-TLS)", RFC 6876, + DOI 10.17487/RFC6876, February 2013, + <https://www.rfc-editor.org/info/rfc6876>. + + [RFC7171] Cam-Winget, N. and P. Sangster, "PT-EAP: Posture Transport + (PT) Protocol for Extensible Authentication Protocol (EAP) + Tunnel Methods", RFC 7171, DOI 10.17487/RFC7171, May 2014, + <https://www.rfc-editor.org/info/rfc7171>. + + [RFC7632] Waltermire, D. and D. Harrington, "Endpoint Security + Posture Assessment: Enterprise Use Cases", RFC 7632, + DOI 10.17487/RFC7632, September 2015, + <https://www.rfc-editor.org/info/rfc7632>. + + [RFC8248] Cam-Winget, N. and L. Lorenzin, "Security Automation and + Continuous Monitoring (SACM) Requirements", RFC 8248, + DOI 10.17487/RFC8248, September 2017, + <https://www.rfc-editor.org/info/rfc8248>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schmidt, et al. Standards Track [Page 100] + +RFC 8412 SWIMA for PA-TNC July 2018 + + +Authors' Addresses + + Charles Schmidt + The MITRE Corporation + 202 Burlington Road + Bedford, MA 01730 + United States of America + + Email: cmschmidt@mitre.org + + + Daniel Haynes + The MITRE Corporation + 202 Burlington Road + Bedford, MA 01730 + United States of America + + Email: dhaynes@mitre.org + + + Chris Coffin + The MITRE Corporation + 202 Burlington Road + Bedford, MA 01730 + United States of America + + Email: ccoffin@mitre.org + + David Waltermire + National Institute of Standards and Technology + 100 Bureau Drive + Gaithersburg, Maryland + United States of America + + Email: david.waltermire@nist.gov + + + Jessica Fitzgerald-McKay + United States National Security Agency + 9800 Savage Road + Ft. Meade, Maryland + United States of America + + Email: jmfitz2@radium.ncsc.mil + + + + + + + +Schmidt, et al. Standards Track [Page 101] + |