Internet DRAFT - draft-haynes-sacm-oval-processing-model
draft-haynes-sacm-oval-processing-model
Security Automation and Continuous Monitoring M. Cokus
Internet-Draft D. Haynes
Intended status: Informational D. Rothenberg
Expires: March 11, 2017 The MITRE Corporation
J. Gonzalez
Department of Homeland Security
September 7, 2016
OVAL(R) Processing Model
draft-haynes-sacm-oval-processing-model-01
Abstract
This document defines Version 5.11.1 of the OVAL processing model
which describes, in detail, how the major components of the OVAL
Language Data Model are used to produce OVAL Definitions, OVAL System
Characteristics, and OVAL Results.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 11, 2017.
Copyright Notice
Copyright (c) 2016 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
(http://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
Cokus, et al. Expires March 11, 2017 [Page 1]
Internet-Draft OVAL Processing Model September 2016
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4
2. Producing OVAL Definitions . . . . . . . . . . . . . . . . . 4
2.1. Reuse of Definition, Test, Object, State, and Variable . 5
2.1.1. Tracking Change . . . . . . . . . . . . . . . . . . . 5
2.1.2. Metadata . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2.1. Authoritative References . . . . . . . . . . . . 5
2.1.2.2. Platforms and Products . . . . . . . . . . . . . 5
2.1.3. Content Integrity and Authenticity . . . . . . . . . 5
3. Producing OVAL System Characteristics . . . . . . . . . . . . 6
3.1. System Information . . . . . . . . . . . . . . . . . . . 6
3.2. Collected Objects . . . . . . . . . . . . . . . . . . . . 6
3.2.1. flag Usage . . . . . . . . . . . . . . . . . . . . . 6
3.2.2. variable_instance property . . . . . . . . . . . . . 7
3.2.3. Item References . . . . . . . . . . . . . . . . . . . 8
3.2.4. Variable Values . . . . . . . . . . . . . . . . . . . 8
3.3. Conveying System Data without Objects . . . . . . . . . . 8
3.4. Recording System Data and OVAL Items . . . . . . . . . . 8
3.4.1. Item IDs . . . . . . . . . . . . . . . . . . . . . . 8
3.4.2. Unique Items . . . . . . . . . . . . . . . . . . . . 8
3.4.3. Partial Matches . . . . . . . . . . . . . . . . . . . 9
3.4.4. Item Status . . . . . . . . . . . . . . . . . . . . . 9
3.4.5. Item Entities . . . . . . . . . . . . . . . . . . . . 10
3.4.5.1. Determining which Entities to Include . . . . . . 10
3.4.5.2. Status . . . . . . . . . . . . . . . . . . . . . 10
3.4.5.3. Datatype . . . . . . . . . . . . . . . . . . . . 11
3.4.5.4. Value . . . . . . . . . . . . . . . . . . . . . . 11
3.4.6. Content Integrity and Authenticity . . . . . . . . . 12
4. Producing OVAL Results . . . . . . . . . . . . . . . . . . . 12
4.1. Definition Evaluation . . . . . . . . . . . . . . . . . . 12
4.1.1. Evaluating a Deprecated OVAL Definition . . . . . . . 12
4.1.2. Criteria Evaluation . . . . . . . . . . . . . . . . . 12
4.1.2.1. applicablity_check . . . . . . . . . . . . . . . 13
4.1.3. Criterion Evaluation . . . . . . . . . . . . . . . . 13
4.1.3.1. applicability_check . . . . . . . . . . . . . . . 13
4.1.4. Extend Definition Evaluation . . . . . . . . . . . . 13
4.1.4.1. applicability_check . . . . . . . . . . . . . . . 13
4.1.5. Negate Evaluation . . . . . . . . . . . . . . . . . . 14
4.1.6. Variable Instance . . . . . . . . . . . . . . . . . . 14
4.2. Test Evaluation . . . . . . . . . . . . . . . . . . . . . 14
4.2.1. Existence Check Evaluation . . . . . . . . . . . . . 15
4.2.2. Check Evaluation . . . . . . . . . . . . . . . . . . 17
4.2.3. State Operator Evaluation . . . . . . . . . . . . . . 17
Cokus, et al. Expires March 11, 2017 [Page 2]
Internet-Draft OVAL Processing Model September 2016
4.2.4. Determining the Final OVAL Test Evaluation Result . . 17
4.2.4.1. Final OVAL Test Evaluation Result without a
Collected Objects Section . . . . . . . . . . . . 18
4.2.4.2. Final OVAL Test Evaluation Result with a
Collected Objects Section . . . . . . . . . . . . 18
4.2.5. Variable Instance . . . . . . . . . . . . . . . . . . 19
4.3. OVAL Object Evaluation . . . . . . . . . . . . . . . . . 20
4.3.1. Matching an OVAL Object to an OVAL Item . . . . . . . 20
4.3.2. Matching an OVAL Object Entity to an OVAL Item Entity 20
4.3.3. OVAL Object Entity Evaluation . . . . . . . . . . . . 20
4.3.3.1. Datatype and Operation Evaluation . . . . . . . . 20
4.3.3.2. nil Object Entities . . . . . . . . . . . . . . . 21
4.3.3.3. Referencing an OVAL Variable . . . . . . . . . . 21
4.3.3.4. Collected Object Flag Evaluation . . . . . . . . 22
4.3.4. Set Evaluation . . . . . . . . . . . . . . . . . . . 23
4.3.4.1. Set Operator . . . . . . . . . . . . . . . . . . 23
4.3.4.2. Filter . . . . . . . . . . . . . . . . . . . . . 25
4.3.4.3. object_reference . . . . . . . . . . . . . . . . 25
4.3.5. OVAL Filter Evaluation . . . . . . . . . . . . . . . 25
4.3.5.1. Applying Multiple Filters . . . . . . . . . . . . 26
4.3.6. OVAL Object Filter . . . . . . . . . . . . . . . . . 26
4.4. OVAL State Evaluation . . . . . . . . . . . . . . . . . . 26
4.4.1. OVAL State Entity Evaluation . . . . . . . . . . . . 26
4.4.1.1. Datatype and Operation Evaluation . . . . . . . . 26
4.4.1.2. var_check Evaluation . . . . . . . . . . . . . . 27
4.4.1.3. entity_check Evaluation . . . . . . . . . . . . . 27
4.4.1.4. Determining the Final Result of an OVAL State
Entity Evaluation . . . . . . . . . . . . . . . . 27
4.4.2. Operator Evaluation . . . . . . . . . . . . . . . . . 27
4.5. OVAL Variable Evaluation . . . . . . . . . . . . . . . . 28
4.5.1. Constant Variable . . . . . . . . . . . . . . . . . . 28
4.5.1.1. Determining the Flag Value . . . . . . . . . . . 28
4.5.2. External Variable . . . . . . . . . . . . . . . . . . 29
4.5.2.1. Validating External Variable Values . . . . . . . 29
4.5.2.2. Determining the Flag Value . . . . . . . . . . . 30
4.5.3. Local Variable . . . . . . . . . . . . . . . . . . . 31
4.5.3.1. OVAL Function Evaluation . . . . . . . . . . . . 32
4.5.3.2. OVAL Components . . . . . . . . . . . . . . . . . 34
4.5.3.3. Masking Data . . . . . . . . . . . . . . . . . . 56
4.5.3.4. Entity Casting . . . . . . . . . . . . . . . . . 56
5. Intellectual Property Considerations . . . . . . . . . . . . 57
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 57
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 58
8. Security Considerations . . . . . . . . . . . . . . . . . . . 58
9. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.1. -00 to -01 . . . . . . . . . . . . . . . . . . . . . . . 58
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 58
10.1. Normative References . . . . . . . . . . . . . . . . . . 58
Cokus, et al. Expires March 11, 2017 [Page 3]
Internet-Draft OVAL Processing Model September 2016
10.2. Informative References . . . . . . . . . . . . . . . . . 59
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59
1. Introduction
The Open Vulnerability and Assessment Language (OVAL) [OVAL-WEBSITE]
is an international, information security community effort to
standardize how to assess and report upon the machine state of
systems. For over ten years, OVAL has been developed in
collaboration with any and all interested parties to promote open and
publicly available security content and to standardize the
representation of this information across the entire spectrum of
security tools and services.
OVAL provides an established framework for making assertions about an
system's state by standardizing the three main steps of the
assessment process: representing the current machine state; analyzing
the system for the presence of the specified machine state; and
representing the results of the assessment which facilitates
collaboration and information sharing among the information security
community and interoperability among tools.
This draft is part of the OVAL contribution to the IETF SACM WG that
standardizes how to produce OVAL Definitions, OVAL System
Characteristics, and OVAL Results. It is intended to serve as a
starting point for how SACM can carry out the assessment of a system
in a standardized way.
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
2. Producing OVAL Definitions
Producing OVAL Definitions is the process by which information from
some source external to OVAL is consumed by a person, tool, or
service and then transformed into an OVAL Definition. Often this
information comes from a security advisory, configuration checklist,
or other data feed. Other times this information must be created
through detailed system investigation and research of known issues.
In either case, low level system state information is encoded in the
form of an assertion about a system state.
Cokus, et al. Expires March 11, 2017 [Page 4]
Internet-Draft OVAL Processing Model September 2016
2.1. Reuse of Definition, Test, Object, State, and Variable
The OVAL Language enables content reuse through the use of globally
unique IDs. When producing OVAL Definitions, OVAL Tests, OVAL
Objects, OVAL States, and OVAL Variables, existing content SHOULD be
reused when possible.
2.1.1. Tracking Change
The version property provides the ability to track changes to OVAL
Definitions, OVAL Tests, OVAL Objects, OVAL States, and OVAL
Variables. Proper usage of the version property is critical for
content sharing and reuse. When updating an OVAL Definition, OVAL
Test, OVAL Object, OVAL State, or OVAL Variable the version property
MUST be incremented for each revision.
2.1.2. Metadata
Each OVAL Definition, as defined by the oval-def:DefinitionType,
includes a metadata property. The contents of the metadata property
MUST NOT impact OVAL Definition evaluation. All information that is
encoded in the metadata property SHOULD also be encoded in the OVAL
Definition's criteria.
2.1.2.1. Authoritative References
The reference property of an OVAL Definition's metadata property
SHOULD provide an authoritative citation for the specific system
state being described by the OVAL Definition. OVAL Definitions with
a class property value of 'vulnerability' SHOULD include a reference
to the CVE Name for the vulnerability when one exists. OVAL
Definitions with a class property value of 'compliance' SHOULD
include a reference to the CCE Name for the configuration item when
one exists. OVAL Definitions with a class property value of
'inventory' SHOULD include a reference to the CPE for the relevant
operating system or application when a CPE Name exists.
2.1.2.2. Platforms and Products
The platform and product properties of an OVAL Definition's metadata
property SHOULD provide a listing of platforms and products to which
the OVAL Definition is known to apply.
2.1.3. Content Integrity and Authenticity
Content expressed in the OVAL Definitions Model MAY be digitally
signed in order to preserve content integrity and authenticity. The
Cokus, et al. Expires March 11, 2017 [Page 5]
Internet-Draft OVAL Processing Model September 2016
OVAL Definitions Model defines six locations for including a digital
signature. Any of these locations MAY be used.
3. Producing OVAL System Characteristics
Producing OVAL System Characteristics is the process by which
detailed system state information is collected and represented in a
standard format. This information may be collected through direct
interaction with an end system by using system APIs to query the
state of the system, or by gathering information from some other
source of system state information, like a configuration management
database.
3.1. System Information
The oval-sc:system_info property of the OVAL System Characteristics
model MUST accurately represent the system from which the data was
collected. When the system data was collected from a source other
than directly from the system being described, the oval-
sc:system_info type MUST represent the original system from which the
data was collected.
3.2. Collected Objects
When a set of OVAL Objects is used to guide the collection of system
data, the OVAL Objects that were used MUST be recorded as objects in
the oval-sc:collected_objects property of the OVAL System
Characteristics model. This section describes the process of
creating an oval-sc:object in the collection of oval-
sc:collected_objects.
3.2.1. flag Usage
Each object listed in the oval-sc:collected_objects MUST specify the
outcome of the data collection effort by setting the flag property to
the appropriate value. The valid flag values are defined in the
oval-sc:FlagEnumeration. The correct usage of the flag enumeration
values in the context of the flag property is specified in the
following table.
Cokus, et al. Expires March 11, 2017 [Page 6]
Internet-Draft OVAL Processing Model September 2016
+------------+------------------------------------------------------+
| Value | Result |
+------------+------------------------------------------------------+
| error | This value MUST be used when an error that prevents |
| | the collection of the OVAL Items for the OVAL |
| | Object. The object property SHOULD include one or |
| | more messages describing the error condition. |
| | |
| complete | This value MUST be used when the collection process |
| | for the OVAL Object was successful and accurately |
| | captured the complete set of matching OVAL Items. |
| | |
| incomplete | This value MUST be used when the collection process |
| | for the OVAL Object was successful but the complete |
| | set of matching OVAL Items is not represented by the |
| | set of references. The object property SHOULD |
| | include one or more messages explaining the |
| | incomplete flag value. |
| | |
| does not | This value MUST be used when no matching OVAL Items |
| exist | were found. |
| | |
| not | This value MUST be used when no attempt was made to |
| collected | collect the OVAL Object. The object property MAY |
| | include one or more messages explaining the not |
| | collected flag value. |
| | |
| not | This value MUST be used the specified OVAL Object is |
| applicable | not applicable to the system under test. The object |
| | property MAY include one or more messages explaining |
| | the not applicable flag value. |
+------------+------------------------------------------------------+
Table 1: flag Usage for Collected Objects
3.2.2. variable_instance property
When an OVAL Object makes use of an OVAL Variable, either directly or
indirectly, each collection of values assigned to the OVAL Variable
MUST be differentiated by incrementing the variable_instance property
once for each assigned collection of values for the OVAL Variable.
When more than one collection of values is assigned to an OVAL
Variable, a given OVAL Object will appear as a oval-
sc:collected_object once for each assigned value.
Cokus, et al. Expires March 11, 2017 [Page 7]
Internet-Draft OVAL Processing Model September 2016
3.2.3. Item References
Each OVAL Item that is collected as a result of collecting a given
OVAL Object MUST be referenced by the reference property of the
object. A given OVAL Item MAY be referenced by one or more objects.
This situation will occur when two distinct OVAL Objects identify
overlapping sets of OVAL Items.
When the flag property has a value of 'not collected' or 'not
applicable' the object MUST NOT include any OVAL Item references.
3.2.4. Variable Values
Each OVAL Variable and its value used when collecting OVAL Items for
an OVAL Object MUST be recorded in the variable_value property of the
object.
3.3. Conveying System Data without Objects
OVAL Objects are commonly used to guide the collection of OVAL Items.
However, system state information may be collected without the use of
OVAL Objects. OVAL Items MAY be collected by searching system data
stores, API calls, algorithms, or other proprietary processes. When
this is done, the OVAL System Characteristics will not contain a
collected_objects section, however, it will contain a system_data
section with all of the OVAL Items collected.
3.4. Recording System Data and OVAL Items
The system_data property holds a collection of OVAL Items. This
section describes the process of building an OVAL Item and the
constraints that apply to OVAL Items.
3.4.1. Item IDs
Each OVAL Item contains a unique identifier which distinguishes it
from other OVAL Items that are represented in the collection of
system_data. Item IDs MUST be unique within an OVAL System
Characteristics Model.
3.4.2. Unique Items
OVAL Items are differentiated by examining each OVAL Item's name and
each of the OVAL Item's entity names and values. Each OVAL Item MUST
represent a unique system data artifact. No two OVAL Items within an
OVAL System Characteristics Model can be the same.
Cokus, et al. Expires March 11, 2017 [Page 8]
Internet-Draft OVAL Processing Model September 2016
3.4.3. Partial Matches
A partial match is when an OVAL Item, containing some information, is
reported in the OVAL System Characteristics rather than simply not
reporting the OVAL Item. Partial matches are useful for debugging
purposes when an OVAL Item does not exist on the system or is not
collected due to limitations in the OVAL Capable Product. Please
note that the use of partial matches is optional.
3.4.4. Item Status
The valid status values, for an OVAL Item, are defined in the oval-
sc:StatusEnumeration. The correct usage of the status enumeration
values in the context of the status property is specified in the
following table.
+-----------+-------------------------------------------------------+
| Value | Result |
+-----------+-------------------------------------------------------+
| error | This value MUST be used when there is an error that |
| | prevents the collection of an OVAL Item or any of its |
| | entities. The OVAL Item SHOULD include one or more |
| | messages describing the error condition. |
| | |
| exists | This value MUST be used when an OVAL Item is |
| | successfully collected. |
| | |
| does not | This value MUST be used when the OVAL Item is not |
| exist | found on the system being examined. The use of this |
| | value is optional and is only used to report a |
| | partial match. If a partial match is not being |
| | reported, the OVAL Item MUST NOT be reported in the |
| | OVAL System Characteristics. The OVAL Item MAY |
| | include one or more messages describing this status |
| | value. |
| | |
| not | This value MUST be used when no attempt is made |
| collected | collect the OVAL Item. The use of this value is |
| | optional and is only used to report a partial match. |
| | If a partial match is not being reported, the OVAL |
| | Item MUST NOT be reported in the OVAL System |
| | Characteristics. The OVAL Item SHOULD include one or |
| | more messages describing this status value. |
+-----------+-------------------------------------------------------+
Table 2: Item Status
Cokus, et al. Expires March 11, 2017 [Page 9]
Internet-Draft OVAL Processing Model September 2016
3.4.5. Item Entities
OVAL Item Entities must be added to the OVAL Item such that it aligns
with the constraints specified in the appropriate OVAL Component
Model and the requirements in this section.
3.4.5.1. Determining which Entities to Include
OVAL Component Models define concrete OVAL Items and their entities.
All entities within an OVAL Item are optional. When creating an OVAL
Item any number of item entities MAY be included. However,
sufficient OVAL Item entities MUST be included to ensure that the
OVAL Item describes only a single system configuration item.
Many OVAL Items include entities that have dependencies upon other
entities within the same OVAL Item. When dependencies exist between
OVAL Item entities, if an entity is included then all entities that
it depends upon MUST also be included in the OVAL Item. When using
OVAL Objects to guide the collection of system data, the entities
included in the OVAL Object SHOULD be included in the OVAL Items that
it identifies.
When collecting system data an OVAL State MAY be used to determine
which entities to include within and OVAL Item. This sort of
processing can be an optimization made when collecting data. For
example, if the OVAL State makes an assertion about a single entity
it may not be necessary to include all other OVAL Item entities.
3.4.5.2. Status
The OVAL Item Entity status conveys the outcome of attempting to
collect one property of a piece of system state information. The
valid OVAL Item Entity status values are defined in the oval-
sc:StatusEnumeration. The status of an OVAL Item Entity can be
independent of other OVAL Item Entities and SHOULD NOT be propagated
up to the containing OVAL Item. The following table indicates when
to use each status value.
Cokus, et al. Expires March 11, 2017 [Page 10]
Internet-Draft OVAL Processing Model September 2016
+-----------+-------------------------------------------------------+
| Value | Result |
+-----------+-------------------------------------------------------+
| error | This value MUST be used when there is an error that |
| | prevents the collection of the OVAL Item Entity. |
| | |
| exists | This value MUST be used when the OVAL Item Entity |
| | exists on the system and is collected. |
| | |
| does not | This value MUST be used when the OVAL Item Entity |
| exist | does not exist on the system. |
| | |
| not | This value MUST be used when no attempt is made to |
| collected | collect the OVAL Item Entity. |
+-----------+-------------------------------------------------------+
Table 3: Item Entity Status
3.4.5.3. Datatype
The datatype of the OVAL Item Entity describes how the value of the
OVAL Item Entity should be interpreted. The valid datatype values
for an OVAL Item Entity are listed in the oval:DatatypeEnumeration
and restricted as needed in OVAL Component Models. When assigning a
datatype to an OVAL Item Entity, there are two cases to consider:
1. The datatype is fixed to a specific datatype value. In this
case, the OVAL Item Entity MUST always use the specified datatype
value.
2. The datatype can be one of several datatype values. In this
case, the datatype value that most appropriately describes the
value of the OVAL Item Entity SHOULD be used. If an OVAL Item
Entity value is not present, the datatype value must be set to
the default datatype value specified in corresponding OVAL
Component Model.
3.4.5.4. Value
The final aspect of an OVAL Item Entity is its value. An OVAL Item
Entity may contain simple character data or complex structured data
as specified in the corresponding OVAL Component Model. All OVAL
Item Entity values must conform to the constraints defined in the
oval-sc:DatatypeEnumeration.
Cokus, et al. Expires March 11, 2017 [Page 11]
Internet-Draft OVAL Processing Model September 2016
3.4.6. Content Integrity and Authenticity
Content expressed in the OVAL System Characteristics Model MAY be
digitally signed in order to preserve content integrity and
authenticity.
4. Producing OVAL Results
Producing OVAL Results is the process by which detailed system state
information is evaluated against the expected state of a system and
represented in a standardized format. This standardized format
conveys the results of the evaluation which can indicate the presence
of a vulnerability, compliance to a policy, installation of software,
or even the presence of malware artifacts. Additionally, the results
can be consumed by other tools where they can be interpreted and used
to inform remediation of discovered issues.
4.1. Definition Evaluation
OVAL Definition Evaluation is the process examining the
characteristics of a system and applying one or more logical
statements about those characteristics to determine an overall result
for the system state that the OVAL Definition describes. Each OVAL
Definition has zero or one logical criteria components, which are
combined using logical operators, such as 'AND' and 'OR'. The
overall result of evaluating an OVAL Definition is determined by
evaluating its criteria component. This process is described in
detail in the following section.
4.1.1. Evaluating a Deprecated OVAL Definition
When evaluating a deprecated OVAL Definition, that does not have a
criteria construct, the OVAL Definition MUST evaluate to 'not
evaluated'. If a deprecated OVAL Definition contains a criteria
construct, the OVAL Definition SHOULD evaluate as if it were not
deprecated. However, the OVAL Definition MAY evaluate to 'not
evaluted'.
4.1.2. Criteria Evaluation
A criteria component of an OVAL Definition combines one or more
logical statements in order to determine a result value. A criteria
can be made up of other criteria, criterion, or extend_definitions,
along with an operator property that specifies how to logically
combine the specified logical statements. For more information on
how to combine the individual results of the logical statements
specified within a criteria, see Section 4.5.3.2.4.2. The result
value of the criteria is determined by first evaluating the operator
Cokus, et al. Expires March 11, 2017 [Page 12]
Internet-Draft OVAL Processing Model September 2016
property to combine the logical statements and then evaluating the
negate property. See Section 4.1.5 for additional information on how
to negate the result of the criteria.
4.1.2.1. applicablity_check
If a value for the applicability_check property is specified on the
criteria construct, in an OVAL Definition, the applicability_check
property and value MUST be replicated on the criteria construct in
the OVAL Results.
4.1.3. Criterion Evaluation
The result of a criterion construct is the result of the OVAL Test
that it references, after the negate property has been applied. See
Section 4.1.5 for additional information on how to negate the result
of an OVAL Test.
The variable_instance property of the criterion is carried over from
the variable_instance value of the referenced OVAL Test.
4.1.3.1. applicability_check
If a value for the applicability_check property is specified on the
criterion construct, in an OVAL Definition, the applicability_check
property and value MUST be replicated on the criterion construct in
the OVAL Results.
4.1.4. Extend Definition Evaluation
The result of an extend_definition construct is the result of the
OVAL Definition, that it references, after the negate property has
been applied. See Section 4.1.5 for additional information on how to
negate the result of an OVAL Definition.
The variable_instance property of the extend_definition is carried
over from the variable_instance value of the referenced OVAL
Definition.
4.1.4.1. applicability_check
If a value for the applicability_check property is specified on the
extend_definition construct, in an OVAL Definition, the
applicability_check property and value MUST be replicated on the
extend_definition construct in the OVAL Results.
Cokus, et al. Expires March 11, 2017 [Page 13]
Internet-Draft OVAL Processing Model September 2016
4.1.5. Negate Evaluation
When the negate property is 'true', the final result of a construct
MUST be the logical complement of its result value. That is, for any
construct that evaluates to 'true', the final result would become
'false', and vice versa. The negate property does not apply to non-
Boolean result values. If a non-Boolean result value is encountered,
the final result MUST be the non-Boolean result value. If the negate
property is set to 'false', the final result of a construct will be
its original result value.
4.1.6. Variable Instance
The value of the variable_instance property is derived from the
variable_instance values of the OVAL Definitions and OVAL Tests that
are referenced within the OVAL Definition's criteria. When an OVAL
Definition references another OVAL Definition or an OVAL Test that
makes use of an OVAL Variable, each collection of values assigned to
the OVAL Variable MUST be differentiated by incrementing the
variable_instance property. The variable_instance value is
incremented once for each assigned collection of values for the OVAL
Variable. When more than one collection of values is assigned to an
OVAL Variable, an OVAL Definition will appear in the definitions
section once for each assigned collection of values.
4.2. Test Evaluation
An OVAL Test is the standardized representation of an assertion about
the state of a system. An OVAL Test contains references to an OVAL
Object that specifies which system data to collect and zero or more
OVAL States that specify the expected state of the collected system
data. OVAL Test Evaluation is the process of comparing the collected
set of system data, as OVAL Items, to zero or more OVAL States.
The result of the OVAL Test Evaluation is then determined by
combining the results of the following three test evaluation
parameters:
1. Existence Check Evaluation - The process of determining whether
or not the number of OVAL Items, that match the specified OVAL
Object, satisfy the requirements specified by the check_existence
property.
2. Check Evaluation - The process of determining whether or not the
number of collected OVAL Items, specified by the check property,
match the specified OVAL States.
Cokus, et al. Expires March 11, 2017 [Page 14]
Internet-Draft OVAL Processing Model September 2016
3. State Operator Evaluation - The process of combining the
individual results, from the comparison of an OVAL Item to the
specified OVAL States, according to the state_operator property.
4.2.1. Existence Check Evaluation
Existence Check Evaluation is the process of determining whether or
not the number of OVAL Items, that match the specified OVAL Object,
satisfy the requirements specified by the check_existence property.
The check_existence property specifies how many OVAL Items that match
the specified OVAL Object must exist on the system in order for the
OVAL Test to evaluate to 'true'. To determine if the check_existence
property is satisfied, the status of each OVAL Item collected by the
OVAL Object must be examined.
The following tables describe how each ExistenceEnumeration value
affects the result of the Existence Check Evaluation. The far left
column identifies the ExistenceEnumeration value in question, and the
middle column specifies the different combinations of individual OVAL
Item status values that may be found (EX = exist; DE = does not
exist; ER = error; NC = not collected). The last column specifies
the final result of the Existence Check Evaluation according to the
combination of individual OVAL Item status values.
|| item status value count ||
|| || existence piece is
|| EX | DE | ER | NC ||
||---------------------------||------------------
|| 1+ | 0 | 0 | 0 || True
|| 0 | 0 | 0 | 0 || False
|| 0+ | 1+ | 0+ | 0+ || False
|| 0+ | 0 | 1+ | 0+ || Error
|| 0+ | 0 | 0 | 1+ || Unknown
|| -- | -- | -- | -- || Not Evaluated
|| -- | -- | -- | -- || Not Applicable
||---------------------------||------------------
Figure 1: Existence Check Evaluation for 'all exist'
Cokus, et al. Expires March 11, 2017 [Page 15]
Internet-Draft OVAL Processing Model September 2016
|| item status value count ||
|| || existence piece is
|| EX | DE | ER | NC ||
||---------------------------||------------------
|| 0+ | 0+ | 0 | 0+ || True
|| 1+ | 0+ | 1+ | 0+ || True
|| -- | -- | -- | -- || False
|| 0 | 0+ | 1+ | 0+ || Error
|| -- | -- | -- | -- || Unknown
|| -- | -- | -- | -- || Not Evaluated
|| -- | -- | -- | -- || Not Applicable
||---------------------------||------------------
Figure 2: Existence Check Evaluation for 'any exist'
|| item status value count ||
|| || existence piece is
|| EX | DE | ER | NC ||
||---------------------------||------------------
|| 1+ | 0+ | 0+ | 0+ || True
|| 0 | 1+ | 0 | 0 || False
|| 0 | 0+ | 1+ | 0+ || Error
|| 0 | 0+ | 0 | 1+ || Unknown
|| -- | -- | -- | -- || Not Evaluated
|| -- | -- | -- | -- || Not Applicable
||---------------------------||------------------
Figure 3: Existence Check Evaluation for 'at least one exists'
|| item status value count ||
|| existence piece is
|| EX | DE | ER | NC ||
||---------------------------||------------------
|| 0 | 0+ | 0 | 0 || True
|| 1+ | 0+ | 0+ | 0+ || False
|| 0 | 0+ | 1+ | 0+ || Error
|| 0 | 0+ | 0 | 1+ || Unknown
|| -- | -- | -- | -- || Not Evaluated
|| -- | -- | -- | -- || Not Applicable
||---------------------------||------------------
Figure 4: Existence Check Evaluation for 'none exist'
Cokus, et al. Expires March 11, 2017 [Page 16]
Internet-Draft OVAL Processing Model September 2016
|| item status value count ||
|| || existence piece is
|| EX | DE | ER | NC ||
||---------------------------||------------------
|| 1 | 0+ | 0 | 0 || True
|| 2+ | 0+ | 0+ | 0+ || False
|| 0 | 0+ | 0 | 0 || False
|| 0,1 | 0+ | 1+ | 0+ || Error
|| 0,1 | 0+ | 0 | 1+ || Unknown
|| -- | -- | -- | -- || Not Evaluated
|| -- | -- | -- | -- || Not Applicable
||---------------------------||------------------
Figure 5: Existence Check Evaluation for 'only one exists'
4.2.2. Check Evaluation
Check Evaluation is the process of determining whether or not the
number of collected OVAL Items, specified by the check property,
match the specified OVAL States. The check property specifies how
many of the collected OVAL Items must match the specified OVAL States
in order for the OVAL Test to evaluate to 'true'. For additional
information on how to determine if the check property is satisfied,
see Section 4.5.3.2.4.1.
4.2.3. State Operator Evaluation
State Operator Evaluation is the process of combining the individual
results, from the comparison of an OVAL Item to the specified OVAL
States, according to the state_operator property, to produce a result
for the OVAL Test. For additional information on how to determine
the final result using the state_operator property, see
Section 4.5.3.2.4.2.
4.2.4. Determining the Final OVAL Test Evaluation Result
While the final result of the OVAL Test Evaluation is the combination
of the results from the three evaluations (Existence Check
Evaluation, Check Evaluation, and State Operator Evaluation), how the
result is calculated will vary depending upon if the optional
collected object section is present in the OVAL System
Characteristics. However, in either case, if the result of the
Existence Check Evaluation is 'false', the Check and State Operator
Evaluations can be ignored and the final result of the OVAL Test will
be 'false'.
Cokus, et al. Expires March 11, 2017 [Page 17]
Internet-Draft OVAL Processing Model September 2016
4.2.4.1. Final OVAL Test Evaluation Result without a Collected Objects
Section
When the Collected Objects section is not present in the OVAL System
Characteristics, all OVAL Items present in the OVAL System
Characteristics must be examined. Each OVAL Item MUST be examined to
determine which match the OVAL Object according to Section 4.3.1 and
Section 4.3.2. Once the set of matching OVAL Items is determined,
they can undergo the three different evaluations that make up OVAL
Test Evaluation.
4.2.4.2. Final OVAL Test Evaluation Result with a Collected Objects
Section
When the Collected Objects section is present in the OVAL System
Characteristics the flag value of an OVAL Object, in the Collected
Objects section, must be examined before the Existence Check
Evaluation is performed.
If the OVAL Object, referenced by an OVAL Test, cannot be found in
the Collected Objects section, the final result of the OVAL Test MUST
be 'unknown'.
Otherwise, if the OVAL Object, referenced by an OVAL Test, is found,
the following guidelines must be followed when determining the final
result of an OVAL Test.
o If the flag value is 'error', the final result of the OVAL Test
MUST be 'error'.
o If the flag value is 'not collected', the final result of the OVAL
Test MUST be 'unknown'.
o If the flag value is 'not applicable', the final result of the
OVAL Test MUST be 'not applicable'.
o If the flag value is 'does not exist', the final result is
determined solely by performing the Check Existence Evaluation.
o If the flag value is 'complete', the final result is determined by
first performing the Check Existence Evaluation followed by the
Check Evaluation and State Operator Evaluation.
o If the flag value is 'incomplete', the final result is determined
as follows:
* If the check_existence property has a value of 'none_exist' and
one or more OVAL Items, referenced by the OVAL Object, have a
Cokus, et al. Expires March 11, 2017 [Page 18]
Internet-Draft OVAL Processing Model September 2016
status of 'exists', the final result of the OVAL Test MUST be
'false'.
* If the check_existence property has a value of 'only one
exists' and more than one OVAL Item, referenced by the OVAL
Object, has a status of 'exists', the final result of the OVAL
Test MUST be 'false'.
* If the result of the Existence Check Evaluation is true, the
following special cases during the Check Evaluation MUST be
considered:
+ If the Check Evaluation evaluates to 'false', the final
result of the OVAL Test MUST be 'false'.
+ If the check property has a value of 'at least one
satisfies' and the check evaluation evaluates to 'true', the
final result of the OVAL Test MUST be 'true'.
* Otherwise, the final result of the OVAL Test MUST be 'unknown'.
+----------------+-------------------------------------------------+
| Value | Result |
+----------------+-------------------------------------------------+
| error | error |
| | |
| complete | Depends on check_existence and check attributes |
| | |
| incomplete | Depends on check_existence and check attributes |
| | |
| does not exist | depends on check_existence and check attributes |
| | |
| not collected | unknown |
| | |
| not applicable | not applicable |
+----------------+-------------------------------------------------+
Table 4: Mapping between oval-sc:FlagEnumeration Value and Test
Result
4.2.5. Variable Instance
When an OVAL Test makes use of an OVAL Variable, either directly or
indirectly, OVAL Test is evaluated once for each collection of values
assigned to the OVAL Variable. Each evaluation result for the OVAL
Tests MUST be differentiated by incrementing the variable_instance
property once for each assigned collection of values for the OVAL
Variable. When more than one collection of values is assigned to an
Cokus, et al. Expires March 11, 2017 [Page 19]
Internet-Draft OVAL Processing Model September 2016
OVAL Variable, an OVAL Test will appear in the tests section once for
each assigned collection of values.
4.3. OVAL Object Evaluation
At the highest level, OVAL Object Evaluation is the process of
collecting OVAL Items based on the constraints specified by the OVAL
Object Entities and OVAL Behaviors, if present, in an OVAL Object.
An OVAL Object contains the minimal number of OVAL Object Entities
needed to uniquely identify the system state information that makes
up the corresponding OVAL Item. The methodology used to collect the
system state information for the OVAL Items is strictly an
implementation detail. Regardless of the chosen methodology, the
same OVAL Items MUST be collected on a system for a given OVAL Object
except when the flag for the collected OVAL Object has a value of
'incomplete'.
4.3.1. Matching an OVAL Object to an OVAL Item
An OVAL Item matches an OVAL Object only if every OVAL Object Entity,
as guided by any OVAL Behaviors, matches the corresponding OVAL Item
Entity in the OVAL Item under consideration.
4.3.2. Matching an OVAL Object Entity to an OVAL Item Entity
An OVAL Object Entity matches an OVAL Item Entity only if the value
of the OVAL Item Entity matches the value of the OVAL Object Entity
in the context of the specified datatype and operation. See
Section Section 4.5.3.2.4.3 for additional information regarding the
allowable datatypes, operations, and how they should be interpreted.
4.3.3. OVAL Object Entity Evaluation
OVAL Object Entity Evaluation is the process of searching for system
state information that matches the values of an OVAL Object Entity in
the context of the specified datatype and operation. This process is
further defined below.
4.3.3.1. Datatype and Operation Evaluation
The datatype and operation property associated with an OVAL Object
Entity specifies what system state information should be collected
from the system in the form of an OVAL Item. When comparing a value
specified in the OVAL Object Entity against system state information,
the operation must be performed in the context of the specified
datatype; the same operation for two different datatypes could yield
different results. See Section 4.5.3.2.4.3 for additional
Cokus, et al. Expires March 11, 2017 [Page 20]
Internet-Draft OVAL Processing Model September 2016
information on how to apply an operation in the context of a
particular datatype.
4.3.3.2. nil Object Entities
For many OVAL Object Entities, there are situations in which the OVAL
Object Entity does not need to be considered in the evaluation of the
OVAL Object. When the nil property is set to 'true', it indicates
that the OVAL Object Entity must not be considered during OVAL Object
Evaluation and must not be collected. For more information about a
particular OVAL Object Entity and how the nil property affects it,
see the appropriate OVAL Component Model.
4.3.3.3. Referencing an OVAL Variable
An OVAL Variable may be referenced from an Object Entity in order to
specify multiple values or to use a value that was collected from
some other source. When the var_ref property is specified, the
var_check property SHOULD also be specified. See
Section 4.5.3.2.4.3.1.1 for more information on how to evaluate an
OVAL Object Entity that references a variable.
In addition to the OVAL Item Entity value matching the values
specified in the OVAL Variable according to the var_check property,
the flag associated with the OVAL Variable must also be considered.
The OVAL Variable flag indicates the outcome of the collection of
values for the OVAL Variable. It is important to consider this
outcome because it may affect the ability of an OVAL Object Entity to
successfully match the corresponding OVAL Item Entity. Additionally,
this flag will also impact the collected object flag.
The following table describes what flags are valid given the flag
value of the OVAL Variable referenced by an OVAL Object Entity.
Cokus, et al. Expires March 11, 2017 [Page 21]
Internet-Draft OVAL Processing Model September 2016
+---------------+---------------------------------------------------+
| OVAL Variable | Valid OVAL Object Flags |
| Flag | |
+---------------+---------------------------------------------------+
| error | error |
| | |
| complete | error, complete, incomplete, does not exist, not |
| | collected, not applicable |
| | |
| incomplete | error, incomplete, does not exist, not collected, |
| | not applicable |
| | |
| does not | does not exist |
| exist | |
| | |
| not collected | does not exist |
| | |
| not | does not exist |
| applicable | |
+---------------+---------------------------------------------------+
Table 5: Valid Flag Values Given the Referenced OVAL Variable Flag
For additional information on when each flag value MUST be used, see
Section 3.2.1.
4.3.3.4. Collected Object Flag Evaluation
However, when there are multiple OVAL Object Entities in an OVAL
Object the flag values for each OVAL Object Entity must be considered
when determining which flag values are appropriate. The following
table describes how multiple flag values influence the collected
object flag of the OVAL Object referencing the variable (ER = error;
CO = complete; IN = incomplete; DE = does not exist; NC = not
collected; NA = not applicable;).
Cokus, et al. Expires March 11, 2017 [Page 22]
Internet-Draft OVAL Processing Model September 2016
|| OVAL Component Flag Count ||
Resulting || ||
Flag || ER | CO | IN | DE | NC | NA ||
---------------||------------------------------------------
error || 1+ | 0+ | 0+ | 0+ | 0+ | 0+ ||
complete || 0 | 1+ | 0 | 0 | 0 | 0 ||
incomplete || 0 | 0+ | 1+ | 0 | 0 | 0 ||
does not exist || 0 | 0+ | 0+ | 1+ | 0 | 0 ||
not collected || 0 | 0+ | 0+ | 0+ | 1+ | 0 ||
not applicable || 0 | 0+ | 0+ | 0+ | 0+ | 1+ ||
---------------||-----------------------------------------||
Figure 6: Collected Object Flag Evaluation
4.3.4. Set Evaluation
The set construct provides the ability to combine the collected OVAL
Items of one or two OVAL Objects using the set operators defined in
the SetOperatorEnumeration. See Section 4.3.4.1 for more information
about the allowed set operators.
The processing of a set MUST be done in the following manner:
1. Identify the OVAL Objects that are part of the set by examining
the object_references associated with the set. Each
object_reference will refer to an OVAL Object that describes a
unique set of collected OVAL Items.
2. For every defined filter Section 4.3.4.2, apply the associated
filter to each OVAL Item.
3. Apply the set operator to all OVAL Items remaining in the set.
4. The resulting OVAL Items will be the unique set of OVAL Items
referenced by the OVAL Object that contains the set.
4.3.4.1. Set Operator
Set operations are used to combine multiple sets of different OVAL
Items, as identified by the object_reference and limited by any
filter, into a single unique set of OVAL Items. The different
operators that guide process are in the SetOperatorEnumeration. For
each operator, if only a single object_reference has been supplied
then the resulting set is simply the complete set of OVAL Items
identified by the referenced OVAL Object after any included filters
have been applied.
Cokus, et al. Expires March 11, 2017 [Page 23]
Internet-Draft OVAL Processing Model September 2016
The tables below explain how different flags are combined for each
set_operator to return a new flag. These tables are needed when
computing the flag for collected objects that represent object sets
in an OVAL Definition. The top row identifies the flag associated
with the first set or object reference. The left column identifies
the flag associated with the second set or object reference. The
matrix inside the table represents the resulting flag when the given
set_operator is applied. (E=error, C=complete, I=incomplete,
DNE=does not exist, NC=not collected, NA=not applicable)
|| ||
set_operator is || Object 1 Flag ||
COMPLEMENT || ||
|| E | C | I | DNE | NC | NA ||
-----------------||-----------------------------------||
E || E | E | E | DNE | E | E ||
Object C || E | C | I | DNE | NC | E ||
2 I || E | E | E | DNE | NC | E ||
Flag DNE || E | C | I | DNE | NC | E ||
NC || E | NC | NC | DNE | NC | E ||
NA || E | E | E | E | E | E ||
-----------------||-----------------------------------||
Figure 7: set_operator = COMPLEMENT
|| ||
set_operator is || Object 1 Flag ||
INTERSECTION || ||
|| E | C | I | DNE | NC | NA ||
----------------||-----------------------------------||
E || E | E | E | DNE | E | E ||
Object C || E | C | I | DNE | NC | C ||
2 I || E | I | I | DNE | NC | I ||
Flag DNE || DNE | DNE | DNE | DNE | DNE | DNE ||
NC || E | NC | NC | DNE | NC | NC ||
NA || E | C | I | DNE | NC | NA ||
----------------||-----------------------------------||
Figure 8: set_operator = INTERSECTION
Cokus, et al. Expires March 11, 2017 [Page 24]
Internet-Draft OVAL Processing Model September 2016
|| ||
set_operator is || Object 1 Flag ||
UNION || ||
|| E | C | I | DNE | NC | NA ||
----------------||-----------------------------------||
E || E | E | E | E | E | E ||
Object C || E | C | I | C | I | C ||
2 I || E | I | I | I | I | I ||
Flag DNE || E | C | I | DNE | I | DNE ||
NC || E | I | I | I | NC | NC ||
NA || E | C | I | DNE | NC | NA ||
----------------||-----------------------------------||
Figure 9: set_operator = UNION
4.3.4.2. Filter
The filter construct provides a way to control the OVAL Items that
are included a set. See Section 4.3.5 for additional information.
4.3.4.3. object_reference
When evaluating an object_reference, an error MUST be reported it the
OVAL Object identifier is invalid, the referenced OVAL Object does
not exist, or the referenced OVAL Object does not align with the OVAL
Object that is referring to it.
4.3.5. OVAL Filter Evaluation
An OVAL Filter is a mechanism that provides the capability to either
include or exclude OVAL Items based on their system state
information. This is done through the referencing of an OVAL State
that specifies the requirements for a matching OVAL Item and the
action property that states whether or not the matching OVAL Items
will be included or excluded.
When evaluating an OVAL Filter, an error MUST be reported if the OVAL
State identifier is not legal, the referenced OVAL State does not
exist, or the referenced OVAL State does not align with the OVAL
Object where it is used.
The action property specifies whether or not the matching OVAL Items
will be included or excluded. The action property enumeration values
are defined in Section the ArithmeticEnumeration in [I-D.draft-
haynes-sacm-oval-definitions-model].
Cokus, et al. Expires March 11, 2017 [Page 25]
Internet-Draft OVAL Processing Model September 2016
4.3.5.1. Applying Multiple Filters
When multiple OVAL Filters are specified, they MUST be evaluated
sequentially from first to last to the collection of OVAL Items under
consideration.
4.3.6. OVAL Object Filter
When applying a filter to OVAL Objects, every collected OVAL Item is
compared to the OVAL State referenced by the OVAL Filter. If the
collected OVAL Items match the OVAL State they are included or
excluded based on the action property. The final set of collected
OVAL Items is the set of collected OVAL Items after each OVAL Filter
is evaluated. See Section 4.3.5.
4.4. OVAL State Evaluation
The OVAL State is the standardized representation for expressing an
expected machine state. In the OVAL State each OVAL State Entity
expresses the expected value(s) for a single piece of configuration
information. OVAL State Evaluation is the process of comparing a
specified OVAL State against a collected OVAL Item on the system.
OVAL State Evaluation can be broken up into two distinct parts:
1. State Entity Evaluation - The process of determining whether or
not an OVAL Item Entity, in a collected OVAL Item, matches the
corresponding OVAL State Entity specified in an OVAL State.
2. State Operator Evaluation - The process of combining the
individual results, from the comparison of an OVAL Item Entity
against the specified OVAL State Entity, according to the
operator property.
4.4.1. OVAL State Entity Evaluation
OVAL State Entity Evaluation is the process of comparing a specified
OVAL State Entity against the corresponding collected OVAL Item
Entities. This comparison must be done in the context of the
datatype and operation, whether or not an OVAL Variable is
referenced, and whether or not there are multiple occurrences of the
corresponding OVAL Item Entity in the collected OVAL Item.
4.4.1.1. Datatype and Operation Evaluation
The datatype and operation property associated with an OVAL State
Entity specifies how the collected OVAL Item Entity compares to the
value(s) specified in the OVAL State Entity. When comparing a value
specified in the OVAL State Entity against a collected OVAL Item
Cokus, et al. Expires March 11, 2017 [Page 26]
Internet-Draft OVAL Processing Model September 2016
Entity, the operation must be performed in the context of the
specified datatype. See Section 4.5.3.2.4.3.1 for additional
information on how an operation is applied in the context of a
particular datatype.
4.4.1.2. var_check Evaluation
An OVAL Variable can be referenced from an OVAL State Entity to
specify multiple values that the corresponding OVAL Item Entities
will be compared against or to utilize a value that was collected
from some other source. For information on how to evaluate an OVAL
State Entity that references an OVAL Variable, see
Section 4.5.3.2.4.3.1.1.
4.4.1.3. entity_check Evaluation
An OVAL Item may contain multiple occurrences of an OVAL Item Entity
to represent that the OVAL Item has multiple values for that
particular OVAL Item Entity. The entity_check property specifies how
many occurrences of an OVAL Item Entity MUST match the OVAL State
Entity, as defined in Section 4.4.1, in order to evaluate to 'true'.
The valid values for the entity_check property are defined by the
CheckEnumeration. See Section 4.5.3.2.4.1 for more information about
how to apply the property.
4.4.1.4. Determining the Final Result of an OVAL State Entity
Evaluation
The final result of an OVAL State Entity Evaluation is determined by
first comparing the value specified in the OVAL State Entity with
each occurrence of a corresponding OVAL Item Entity, in an OVAL Item,
in the context of the specified datatype and operation as defined in
Section 4.4.1.1. The results of the comparisons are evaluated
against the specified entity_check property according to
Section 4.5.3.2.4.1. This will be the final result of the OVAL State
Entity Evaluation unless an OVAL Variable was also referenced.
If an OVAL Variable was referenced, the above procedure must be
performed for each value in the OVAL Variable. The final result must
then be computed by examining the var_check property and the
individual results for each OVAL Variable value comparison. See
Section 4.5.3.2.4.3.1.1.
4.4.2. Operator Evaluation
Once the OVAL State Entity Evaluation is complete for every OVAL
State Entity, the individual results from each evaluation MUST be
combined according to the operator property specified on the OVAL
Cokus, et al. Expires March 11, 2017 [Page 27]
Internet-Draft OVAL Processing Model September 2016
State. The combined result will be the final result of the OVAL
State Evaluation. See Section 4.5.3.2.4.2 for more information on
applying the operator to the individual results of the evaluations.
4.5. OVAL Variable Evaluation
OVAL Variable Evaluation is the process of retrieving a collection of
values from sources both local and external to OVAL Definitions as
well as manipulating those values through the evaluation of OVAL
Functions. OVAL Variables can be used in OVAL Definitions to specify
multiple values, manipulate values, retrieve values at execution
time, and create generic and reusable content.
4.5.1. Constant Variable
A constant_variable is a locally defined collection of one or more
values that are specified prior to evaluation time.
4.5.1.1. Determining the Flag Value
A constant_variable is only capable of having a flag value of
'error', 'complete', or 'not collected'. The flag values of 'does
not exist' and 'incomplete' are not used for the evaluation of a
constant_variable because a constant variable is required to contain
at least one value. The flag value of 'not applicable' is not used
because the constant_variable construct is platform independent. The
following table outlines when a constant variable will evaluate to
each of the flag values.
Cokus, et al. Expires March 11, 2017 [Page 28]
Internet-Draft OVAL Processing Model September 2016
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when one or more values |
| | do not conform to the specified datatype as defined |
| | in the oval:DatatypeEnumeration. |
| | |
| complete | This flag value must be used when all values conform |
| | to the specified datatype and the collection of |
| | constant variables is supported in the OVAL-capable |
| | product. |
| | |
| incomplete | - |
| | |
| does not | - |
| exist | |
| | |
| not | This flag value must be used when the tool does not |
| collected | support the collection of constant_variables. |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 6: When a constant_variable Evaluates to a Specific oval-
sc:FlagEnumeration Value
4.5.2. External Variable
An external_variable is a locally declared, externally defined,
collection of one or more values. The values referenced by an
external_variable are collected from the external source at run-time.
4.5.2.1. Validating External Variable Values
The OVAL Language provides the PossibleValueType and
PossibleRestriction constructs as a mechanism to validate input
coming from sources external to the OVAL Definitions.
4.5.2.1.1. Possible Restriction
The possible_restriction construct specifies one or more restrictions
on the values of an external variable. When more than one
restriction is used the individual results of each comparison between
the restriction and the external variable value must be combined
using the selected operator attribute. The default operation
performed is 'AND'. See Section 4.5.3.2.4.2 for more information on
how to combine the individual results. The final result, after
Cokus, et al. Expires March 11, 2017 [Page 29]
Internet-Draft OVAL Processing Model September 2016
combining the individual results, will be the result of the
possible_restriction construct.
4.5.2.1.1.1. Restriction
Each restriction allows for the specification of an operation and a
value that will be compared to a supplied value for the
external_variable. The result of this comparison will be used in the
computation of the final result of the possible_restriction
construct. See Section 4.5.2.1.3 for additional information on how
to determine the result of the comparison between the specified value
and the external variable value using the specified operation in the
context of the datatype specified on the external_variable.
4.5.2.1.2. Possible Value
The possible_value construct specifies a permitted external variable
value. The specified value and the external variable value must be
compared as string values using the equals operation. See
Section 4.5.2.1.3 for additional information on how to determine the
result of the comparison. The result of this comparison will be used
in determining the final result of validating an external variable
value.
4.5.2.1.3. Determining the Final Result of Validating an External
Variable Value
The final result of validating an external_variable value is
determined by combining every possible_restriction and possible_value
constructs using the logical 'OR' operator. That is, each value in
the external_variable will be evaluated against the combination of
possible_restriction and possible_value constructs and the results of
this evaluation will be combined using the 'OR' operator. See
Section 4.5.3.2.4.2 for more information on how to combine the
individual results using the 'OR' operator.
4.5.2.2. Determining the Flag Value
An external variable is only capable of returning a flag value of
'error', 'complete', or 'not collected'. The following table
outlines when an external variable will evaluate to each of the flag
values. The flag values 'does not exist' and 'incomplete' are not
used because an external_variable is required to contain at least one
value. The flag value of 'not applicable' is not used because the
external_variable construct is platform independent.
Cokus, et al. Expires March 11, 2017 [Page 30]
Internet-Draft OVAL Processing Model September 2016
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when one or more values |
| | do not conform to the specified datatype as defined |
| | in the oval:DatatypeEnumeration. This flag value |
| | must be used when there was an error collecting the |
| | values from the external source. This flag value |
| | must be used when there is a value, collected from |
| | the external source, that does not conform to the |
| | restrictions specified by the possible_value and |
| | possible_restriction constructs or if there is an |
| | error processing the possible_value and |
| | possible_restriction constructs. This flag value |
| | must be used when the final result of validating the |
| | external variable values is not 'true'. This flag |
| | must be used when the external source for the |
| | variable cannot be found. |
| | |
| complete | This flag value must be used when the final result |
| | of validating every external variable value is |
| | 'true' and conforms to the specified datatype. |
| | |
| incomplete | - |
| | |
| does not | - |
| exist | |
| | |
| not | This flag value must be used when the tool does not |
| collected | support the collection of constant_variables. |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 7: When a external_variable Evaluates to a Specific oval-
sc:FlagEnumeration Value
4.5.3. Local Variable
A local_variable is a locally defined collection of one or more
values that may be composed of values from other sources collected at
evaluation time.
Cokus, et al. Expires March 11, 2017 [Page 31]
Internet-Draft OVAL Processing Model September 2016
4.5.3.1. OVAL Function Evaluation
An OVAL Function is a construct, in the OVAL Language, that takes one
or more collections of values and manipulates them in some defined
way. The result of evaluating an OVAL Function will be zero or more
values.
4.5.3.1.1. Nested Functions
Due to the recursive nature of the ComponentGroup construct, OVAL
Functions can be nested within one another. In this case, a depth-
first approach is taken to processing OVAL Functions. As a result,
the inner most OVAL Functions are evaluated first, and then the
resulting values are used as input to the outer OVAL Function and so
on.
4.5.3.1.2. Evaluating OVAL Functions with Sub-components with Multiple
Values
When one or more of the specified sub-components resolve to multiple
values, the function will be applied to the Cartesian product of the
values, in the sub-components, and will result in a collection of
values.
4.5.3.1.3. Casting the Input of OVAL Functions
OVAL Functions are designed to work on values with specific
datatypes. If an input value is encountered that does not align with
required datatypes an attempt must be made to cast the input value(s)
to the required datatype before evaluating the OVAL Function. If the
input value cannot be cast to the required datatype the flag value,
of the OVAL Function, MUST be set to 'error'.
4.5.3.1.4. Determining the Flag Value
When determining the flag value of an OVAL Function, the combined
flag value of the sub-components must be computed in order to
determine if the evaluation of the OVAL Function should continue.
The following tables outline how to combine the sub-component flag
values.
Cokus, et al. Expires March 11, 2017 [Page 32]
Internet-Draft OVAL Processing Model September 2016
+----------+-----------------------------------------------------+
| Notation | Description |
+----------+-----------------------------------------------------+
| x | x individual OVAL Component flag values are... |
| | |
| x,y | x or y individual OVAL Component flag values are... |
+----------+-----------------------------------------------------+
Table 8: Flag Value Table Notation
|| num of components with flag ||
|| || resulting flag is
|| E | C | I | DNE | NC | NA ||
||-----------------------------------||------------------
|| 1+ | 0+ | 0+ | 0+ | 0+ | 0+ || Error
|| 0 | 1+ | 0 | 0 | 0 | 0 || Complete
|| 0 | 0+ | 1+ | 0 | 0 | 0 || Incomplete
|| 0 | 0+ | 0+ | 1+ | 0 | 0 || Does Not Exist
|| 0 | 0+ | 0+ | 0+ | 1+ | 0 || Not Collected
|| 0 | 0+ | 0+ | 0+ | 0+ | 1+ || Not Applicable
||-----------------------------------||------------------
Figure 10: Determining the Flag Value for an OVAL Function
Once the flag values of the sub-components have been combined the
evaluation of an OVAL Function must only continue if the flag value
is 'complete'. All other flag values mean that the evaluation of the
OVAL Function stops and the flag of the OVAL Function MUST be
'error'. The following table outlines how to determine the flag
value of an OVAL Function.
Cokus, et al. Expires March 11, 2017 [Page 33]
Internet-Draft OVAL Processing Model September 2016
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used if the combined sub- |
| | component flag is a value other than 'complete'.This |
| | flag value must be used if an error occurred during |
| | the computation of an OVAL Function. This flag value |
| | must be used if an attempt to cast an input value to |
| | a required datatype failed. |
| | |
| complete | This flag value must be used if the combined sub- |
| | component flag is complete and the evaluation of the |
| | OVAL Function completes successfully. |
| | |
| incomplete | - |
| | |
| does not | - |
| exist | |
| | |
| not | - |
| collected | |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 9: When a OVAL Function Evaluates to a Specific oval-
sc:FlagEnumeration Value
4.5.3.2. OVAL Components
A component is a reference to another part of the content that allows
further evaluation or manipulation of the value or values specified
by the referral.
4.5.3.2.1. Literal Component
A literal_component is a component that allows the specification of a
literal value. The value can be of any supported datatype as
specified in the oval:DatatypeEnumeration. The default datatype is
'string'.
4.5.3.2.1.1. Determining the Flag Value
A literal_component is only capable of evaluating to a flag value of
'error' or 'complete'. The flag values 'does not exist' and
'incomplete' are not used because an external_variable is required to
contain at least one value. The flag value of 'not applicable' is
Cokus, et al. Expires March 11, 2017 [Page 34]
Internet-Draft OVAL Processing Model September 2016
not used because the literal_component construct is platform
independent. The following table outlines when a literal_component
will evaluate to each of the flag values.
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when the value does not |
| | conform to the specified datatype as defined in the |
| | oval:DatatypeEnumeration. |
| | |
| complete | This flag value must be used when the value conforms |
| | to the specified datatype as defined in the |
| | oval:DatatypeEnumeration. |
| | |
| incomplete | - |
| | |
| does not | - |
| exist | |
| | |
| not | - |
| collected | |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 10: When a Literal Component Evaluates to a Specific oval-
sc:FlagEnumeration Value
4.5.3.2.2. Object Component
An object component is a component that resolves to the value(s) of
OVAL Item Entities or OVAL Fields, in OVAL Items, that were collected
by an OVAL Object. The property, object_ref, must reference an
existing OVAL Object.
The value that is used by the object component must be specified
using the item_field property of the object component. This
indicates which entity should be used as the value for the component.
In the case that the OVAL Object collects multiple OVAL Items as part
of its evaluation, this can resolve to a collection of values. In
the case that an OVAL Item Entity has a datatype of 'record', the
record_field property can be used to indicate which field to use for
the component.
Cokus, et al. Expires March 11, 2017 [Page 35]
Internet-Draft OVAL Processing Model September 2016
4.5.3.2.2.1. Determining the Flag Value
An object_component is only capable of evaluating to a flag value of
'error', 'complete', 'incomplete', or 'not collected'. The flag
values 'does not exist' and 'incomplete' are not used because an
object_component is required to contain at least one value. The
following table outlines when an object_component will evaluate to
each of the flag values.
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when the value does not |
| | conform to the specified datatype as defined in the |
| | oval:DatatypeEnumeration. This flag value must be |
| | used if the OVAL Object does not return any OVAL |
| | Items. This flag value must be used if an entity is |
| | not found with a name that matches the value of the |
| | item_field property. This flag value must be used if |
| | a field is not found with a name that matches the |
| | value of the record_field property. |
| | |
| complete | This flag value must be used when every value |
| | conforms to the specified datatype as defined in the |
| | oval:DatatypeEnumeration and when the flag of the |
| | referenced OVAL Object is 'complete'. |
| | |
| incomplete | This flag value must be used when every value |
| | conforms to the specified datatype as defined in the |
| | oval:DatatypeEnumeration and when the flag of the |
| | referenced OVAL Object is 'incomplete'. |
| | |
| does not | - |
| exist | |
| | |
| not | This flag value must be used when the OVAL-capable |
| collected | product does not support the collection of |
| | object_components. |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 11: When a Object Component Evaluates to a Specific oval-
sc:FlagEnumeration Value
Cokus, et al. Expires March 11, 2017 [Page 36]
Internet-Draft OVAL Processing Model September 2016
4.5.3.2.3. Variable Component
An variable component is a component that resolves to the value(s) of
the referenced OVAL Variable. The property, var_ref, must reference
an existing OVAL Variable.
4.5.3.2.3.1. Variable Component Flag Value
A variable_component is only capable of evaluating to a flag value of
'error', 'complete', 'incomplete', or 'not collected'. The following
table outlines when a variable_component will evaluate to each of the
flag values.
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when the flag value of |
| | the referenced OVAL Variable is 'error'. This flag |
| | value must be used when the referenced OVAL Variable |
| | cannot be found. |
| | |
| complete | This flag value must be used when the flag value of |
| | the referenced OVAL Variable is 'complete'. |
| | |
| incomplete | This flag value must be used when the flag value of |
| | the referenced OVAL Variable is 'incomplete'. |
| | |
| does not | This flag value must be used when the flag value of |
| exist | the referenced OVAL Variable is 'does not exist'. |
| | |
| not | This flag value must be used when the OVAL-capable |
| collected | product does not support the collection of |
| | variable_components. |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 12: Determining the Flag Value
4.5.3.2.3.1.1. Determining the Flag Value
A local_variable can contain an OVAL Function or an OVAL Component.
As a result, the flag value must consider both the flag of the OVAL
Function or OVAL Component along with the additional conditions from
being an OVAL Variable. The following table describes when each flag
value must be used.
Cokus, et al. Expires March 11, 2017 [Page 37]
Internet-Draft OVAL Processing Model September 2016
+------------+------------------------------------------------------+
| Value | Description |
+------------+------------------------------------------------------+
| error | This flag value must be used when one or more values |
| | do not conform to the specified datatype as defined |
| | in the oval:DatatypeEnumeration. This flag value |
| | must be used when there was an error collecting the |
| | values from the external source. This flag value |
| | must be used when the specified datatype is |
| | 'record'. This flag value must be used when the flag |
| | value of the specified OVAL Function or OVAL |
| | Component is 'error'. |
| | |
| complete | This flag value must be used when the flag value of |
| | the specified OVAL Function or OVAL Component is |
| | 'complete' and every value conforms to the specified |
| | datatype. |
| | |
| incomplete | - |
| | |
| does not | This flag value must be used when the flag value of |
| exist | the referenced OVAL Variable is 'does not exist'. |
| | |
| not | This flag value must be used when there are no |
| collected | values. |
| | |
| not | - |
| applicable | |
+------------+------------------------------------------------------+
Table 13: When a Local Variable Component Evaluates to a Specific
oval-sc:FlagEnumeration Value
4.5.3.2.4. Common Evaluation Concepts
This section describes a set of evaluation concepts that apply to
several aspects of producing OVAL Content.
4.5.3.2.4.1. Check Enumeration Evaluation
Check Enumeration Evaluation is the process of determining whether or
not the number of individual results, produced from the comparison of
some set of values, satisfies the specified CheckEnumeration value.
The following tables describe how each CheckEnumeration value affects
the final result of an evaluation. The far left column identifies
the CheckEnumeration value in question. The middle column specifies
the different combinations of individual results that the
Cokus, et al. Expires March 11, 2017 [Page 38]
Internet-Draft OVAL Processing Model September 2016
CheckEnumeration value may bind together. The last column specifies
the final result according to each combination of individual results.
It is important to note that if an individual result is negated, then
a 'true' result is 'false' and a 'false' result is 'true', and all
other results stay as is.
|| num of individual results ||
check attr || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1+ | 0 | 0 | 0 | 0 | 0+ || True
|| 0+ | 1+ | 0+ | 0+ | 0+ | 0+ || False
ALL || 0+ | 0 | 1+ | 0+ | 0+ | 0+ || Error
|| 0+ | 0 | 0 | 1+ | 0+ | 0+ || Unknown
|| 0+ | 0 | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 11: Check Enumeration Evaluation for 'all'
|| num of individual results ||
check attr || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1+ | 0+ | 0+ | 0+ | 0+ | 0+ || True
|| 0 | 1+ | 0 | 0 | 0 | 0+ || False
AT || 0 | 0+ | 1+ | 0+ | 0+ | 0+ || Error
LEAST || 0 | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
ONE || 0 | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 12: Check Enumeration Evaluation for 'at least one'
|| num of individual results ||
check attr || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1 | 0+ | 0 | 0 | 0 | 0+ || True
|| 2+ | 0+ | 0+ | 0+ | 0+ | 0+ || ** False **
|| 0 | 1+ | 0 | 0 | 0 | 0+ || ** False **
ONLY ||0,1 | 0+ | 1+ | 0+ | 0+ | 0+ || Error
ONE ||0,1 | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
||0,1 | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 13: Check Enumeration Evaluation for 'only one'
Cokus, et al. Expires March 11, 2017 [Page 39]
Internet-Draft OVAL Processing Model September 2016
|| num of individual results ||
check attr || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 0 | 1+ | 0 | 0 | 0 | 0+ || True
|| 1+ | 0+ | 0+ | 0+ | 0+ | 0+ || False
NONE || 0 | 0+ | 1+ | 0+ | 0+ | 0+ || Error
SATISFY || 0 | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
|| 0 | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 14: Check Enumeration Evaluation for 'none satisfy'
4.5.3.2.4.2. Operator Enumeration Evaluation
Operator Enumeration Evaluation is the process of combining the
individual results of evaluations using logical operations. The
following table shows the notation used when describing the number of
individual results that evaluate to a particular result.
+----------+---------------------------------------------+
| Notation | Description |
+----------+---------------------------------------------+
| x | x individual results are... |
| | |
| x,y | x or y individual results are... |
| | |
| x+ | x or more individual results are... |
| | |
| Odd | an odd number of individual results are... |
| | |
| Even | an even number of individual results are... |
+----------+---------------------------------------------+
Table 14: Operator Value Table Notation
The following tables describe how each OperatorEnumeration value
affects the final result of an evaluation. The far left column
identifies the OperatorEnumeration value in question. The middle
column specifies the different combinations of individual results
that the OperatorEnumeration value may bind together. The last
column specifies the final result according to each combination of
individual results. It is important to note that if an individual
result is negated, then a 'true' result is 'false' and a 'false'
result is 'true', and all other results stay as is.
Cokus, et al. Expires March 11, 2017 [Page 40]
Internet-Draft OVAL Processing Model September 2016
|| num of individual results ||
operator is || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1+ | 0 | 0 | 0 | 0 | 0+ || True
|| 0+ | 1+ | 0+ | 0+ | 0+ | 0+ || False
AND || 0+ | 0 | 1+ | 0+ | 0+ | 0+ || Error
|| 0+ | 0 | 0 | 1+ | 0+ | 0+ || Unknown
|| 0+ | 0 | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 15: Operator Enumeration Evaluation for 'AND'
|| num of individual results ||
operator is || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1 | 0+ | 0 | 0 | 0 | 0+ || True
|| 2+ | 0+ | 0+ | 0+ | 0+ | 0+ || ** False **
|| 0 | 1+ | 0 | 0 | 0 | 0+ || ** False **
ONE ||0,1 | 0+ | 1+ | 0+ | 0+ | 0+ || Error
||0,1 | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
||0,1 | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 16: Operator Enumeration Evaluation for 'ONE'
|| num of individual results ||
operator is || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
|| 1+ | 0+ | 0+ | 0+ | 0+ | 0+ || True
|| 0 | 1+ | 0 | 0 | 0 | 0+ || False
OR || 0 | 0+ | 1+ | 0+ | 0+ | 0+ || Error
|| 0 | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
|| 0 | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 17: Operator Enumeration Evaluation for 'OR'
Cokus, et al. Expires March 11, 2017 [Page 41]
Internet-Draft OVAL Processing Model September 2016
|| num of individual results ||
operator is || || final result is
|| T | F | E | U | NE | NA ||
-------------||-----------------------------||------------------
||odd | 0+ | 0 | 0 | 0 | 0+ || True
||even| 0+ | 0 | 0 | 0 | 0+ || False
XOR || 0+ | 0+ | 1+ | 0+ | 0+ | 0+ || Error
|| 0+ | 0+ | 0 | 1+ | 0+ | 0+ || Unknown
|| 0+ | 0+ | 0 | 0 | 1+ | 0+ || Not Evaluated
|| 0 | 0 | 0 | 0 | 0 | 1+ || Not Applicable
-------------||-----------------------------||------------------
Figure 18: Operator Enumeration Evaluation for 'XOR'
4.5.3.2.4.3. OVAL Entity Evaluation
OVAL Entity Evaluation is the process of comparing the specified
value(s), from an OVAL Object or State Entity, against the
corresponding system state information in the context of the selected
datatype and operation.
4.5.3.2.4.3.1. Datatype and Operation Evaluation
The result of applying an operation in the context of a specified
datatype MUST evaluate to 'true' only if the values being compared
satisfy the conditions of the operation for the specified datatype.
If the values being compared do not satisfy the conditions of the
operation, the final result MUST be 'false'.
To ensure consistency in the comparison of the value(s) specified in
the OVAL Object and State Entities with the system state information,
the operations for each datatype must be defined. The following
table describes how each operation must be performed in the context
of a specific datatype.
+----------+-----------------------------------------------+
| Value | Description |
+----------+-----------------------------------------------+
| binary | Data of this type conforms to the W3C |
| | Recommendation for hex-encoded binary |
| | data [W3C-HEX-BIN]. |
| | |
| | equals: The collected binary value is |
| | equal to the specified binary value only |
| | if the collected binary value and the |
| | specified binary value are the same length |
| | and the collected binary value and the |
| | specified binary value contain the same |
Cokus, et al. Expires March 11, 2017 [Page 42]
Internet-Draft OVAL Processing Model September 2016
| | characters in the same positions. |
| | |
| | not equal: The collected binary value is |
| | not equal to the specified binary value |
| | only if the collected binary value is not |
| | the same length as the specified binary |
| | value or the collected binary value and |
| | specified binary value do not contain the |
| | same characters in the same positions. |
+----------+-----------------------------------------------+
| boolean | Data of this type conforms to the W3C |
| | Recommendation for boolean data [W3C-BOOLEAN] |
| | (f = false; t = true;). |
| | |
| | equals: |
| | +-------------------+-----------------+ |
| | | | Collected Value | |
| | | +-----------------+ |
| | | | f / 0 | t / 1 | |
| | +-----------+-------+-------+---------+ |
| | | Specified | f / 0 | t | f | |
| | | +---------------+---------+ |
| | | Value | t / 1 | f | t | |
| | +-----------+-------+-------+---------+ |
| | |
| | not equal: |
| | +-------------------+-----------------+ |
| | | | Collected Value | |
| | | +-----------------+ |
| | | | f / 0 | t / 1 | |
| | +-----------+-------+-------+---------+ |
| | | Specified | f / 0 | f | t | |
| | | +---------------+---------+ |
| | | Value | t / 1 | t | f | |
| | +-----------+-------+-------+---------+ |
| | |
+----------+-----------------------------------------------+
| debian_ | Data of this type conforms to the format |
| evr_ | EPOCH:UPSTREAM_VERSION-DEBIAN_REVISION and |
| string | comparisons involving this type MUST follow |
| | the algorithm described in Chapter 5 |
| | (Section 5.6.12) "Debian Policy Manual" |
| | [DEBIAN-POLICY-MANUAL]. One implementation of |
| | this is the cmpversions function which is |
| | located in dpkg's enquiry.c. |
| | |
| | equals: The collected debian_evr_string value |
| | c is equal to the specified debian_evr_string |
Cokus, et al. Expires March 11, 2017 [Page 43]
Internet-Draft OVAL Processing Model September 2016
| | value s only if the result of the algorithm |
| | described in the cmpversions function is 0. |
| | |
| | not equal: The collected debian_evr_string |
| | value c is not equal to the specified |
| | debian_evr_string value s only if the result |
| | of the algorithm described in the cmpversions |
| | function is -1 or 1. |
| | |
| | greater than: The collected debian_evr_string |
| | value c is greater than the specified |
| | debian_evr_string value s only if the result |
| | of the algorithm described in the cmpversions |
| | function is 1. |
| | |
| | greater than or equal: The collected |
| | debian_evr_string value c is greater than or |
| | equal to the specified debian_evr_string |
| | value s only if the result of the algorithm |
| | described in the cmpversions function is 1 |
| | or 0. |
| | |
| | less than: The collected debian_evr_string |
| | value c is less than the specified |
| | debian_evr_string value s only if the result |
| | of the algorithm described in the cmpversions |
| | function is -1. |
| | |
| | less than or equal: The collected |
| | debian_evr_string value c is less than or |
| | equal to the specified debian_evr_string |
| | value s only if the result of the algorithm |
| | described in the cmpversions function is -1 |
| | or 0. |
+----------+-----------------------------------------------+
| evr_ | Data of this type conforms to the format |
| string | EPOCH:VERSION-RELEASE and comparisons |
| | involving this type MUST follow the algorithm |
| | described in the rpmVersionCompare() function |
| | which is located in lib/psm.c of the RPM |
| | source code. |
| | |
| | equals: The collected evr_string value c is |
| | equal to the specified evr_string value s |
| | only if the result of the algorithm described |
| | in the rpmVersionCompare(c,s) function is 0. |
| | |
| | not equal: The collected evr_string value c |
Cokus, et al. Expires March 11, 2017 [Page 44]
Internet-Draft OVAL Processing Model September 2016
| | is not equal to the specified evr_string |
| | value s only if the result of the algorithm |
| | described in the rpmVersionCompare(c,s) |
| | function is -1 or 1. |
| | |
| | greater than: The collected evr_string value |
| | c is greater than the specified evr_string s |
| | value only if the result of the algorithm |
| | described in the rpmVersionCompare(c,s) |
| | function is 1. |
| | |
| | greater than or equal: The collected |
| | evr_string value c is greater than or equal |
| | to the specified evr_string value s only if |
| | the result of the algorithm described in the |
| | rpmVersionCompare(c,s) function is 1 or 0. |
| | |
| | less than: The collected evr_string value c |
| | is less than the specified evr_string value |
| | s only if the result of the algorithm |
| | described in the rpmVersionCompare(c,s) |
| | function is -1. |
| | |
| | less than or equal: The collected evr_string |
| | value c is less than or equal to the |
| | specified evr_string value s only if the |
| | result of the algorithm described in the |
| | rpmVersionCompare(c,s) function is -1 or 0. |
+----------+-----------------------------------------------+
| fileset_ | Data of this type conforms to the version |
| revision | string related to filesets in HP-UX. An |
| | example would be 'A.03.61.00'. Please note |
| | that this needs further community review and |
| | discussion. |
+----------+-----------------------------------------------+
| float | Data of this type conforms to the W3C |
| | Recommendation for float data [W3C-FLOAT]. |
| | |
| | equals: The collected float value is equal to |
| | the specified float value only if the |
| | collected float value and the specified float |
| | value are numerically equal. |
| | |
| | not equal: The collected float value is not |
| | equal to the specified float value only if |
| | the collected float value and the specified |
| | float value are not numerically equal. |
| | |
Cokus, et al. Expires March 11, 2017 [Page 45]
Internet-Draft OVAL Processing Model September 2016
| | greater than: The collected float value is |
| | greater than the specified float value only |
| | if the collected float value is numerically |
| | greater than the specified float value. |
| | |
| | greater than or equal: The collected float |
| | value is greater than or equal to the |
| | specified float value only if the collected |
| | float value is numerically greater than or |
| | equal to the specified float value. |
| | |
| | less than: The collected float value is less |
| | than the specified float value only if the |
| | collected float value is numerically less |
| | than the specified float value. |
| | |
| | less than or equal: The collected float value |
| | is less than or equal to the specified float |
| | value only if the collected float value is |
| | numerically less than or equal to the |
| | specified float value. |
+----------+-----------------------------------------------+
| ios_ | Data of this type conforms to Cisco IOS Train |
| version | strings. These are in essence version strings |
| | for IOS. Please refer to Cisco's IOS |
| | Reference Guide for information on how to |
| | compare different Trains as they follow a |
| | very specific pattern [CISCO-IOS]. |
| | |
| | Please note that this needs further community |
| | review and discussion. |
+----------+-----------------------------------------------+
| int | Data of this type conforms to the W3C |
| | Recommendation for integer data [W3C-INT]. |
| | |
| | equals: The collected integer value is equal |
| | to the specified integer value only if the |
| | collected integer value and the specified |
| | integer value are numerically equal. |
| | |
| | not equal: The collected integer value is |
| | not equal to the specified integer value only |
| | if the collected integer value and the |
| | specified integer value are not numerically |
| | equal. |
| | |
| | greater than: The collected integer value is |
| | greater than the specified integer value only |
Cokus, et al. Expires March 11, 2017 [Page 46]
Internet-Draft OVAL Processing Model September 2016
| | if the collected integer value is numerically |
| | greater than the specified integer value. |
| | |
| | greater than or equal: The collected integer |
| | value is greater than or equal to the |
| | specified integer value only if the collected |
| | integer value is numerically greater than or |
| | equal to the specified integer value. |
| | |
| | less than: The collected integer value is |
| | less than the specified integer value only if |
| | the collected integer value is numerically |
| | less than the specified integer value. |
| | |
| | less than or equal: The collected integer |
| | value is less than or equal to the specified |
| | integer value only if the collected integer |
| | value is numerically less than or equal to |
| | the specified integer value. |
| | |
| | bitwise and: The collected integer satisfies |
| | the bitwise and operation with the specified |
| | integer value only if the result of |
| | performing the bitwise and operation on the |
| | binary representation of the collected |
| | integer value and the binary representation |
| | of the specified integer value is the binary |
| | representation of the specified value. |
| | |
| | bitwise or: The collected integer satisfies |
| | the bitwise or operation with the specified |
| | integer value only if the result of |
| | performing the bitwise or operation on the |
| | binary representation of the collected |
| | integer value and the binary representation |
| | of the specified integer value is the binary |
| | representation of the specified value. |
+----------+-----------------------------------------------+
| ipv4_ | The ipv4_address [RFC791] datatype represents |
| address | IPv4 addresses and IPv4 address |
| | prefixes. Its value space consists of the set |
| | of ordered pairs of integers where the first |
| | element of each pair is in the range [0,2^32) |
| | (the representable range of a 32-bit unsigned |
| | int), and the second is in the range [0,32]. |
| | The first element is an address, and the |
| | second is a prefix length. |
| | |
Cokus, et al. Expires March 11, 2017 [Page 47]
Internet-Draft OVAL Processing Model September 2016
| | The lexical space is dotted-quad CIDR-like |
| | notation ('a.b.c.d' where 'a', 'b', 'c', and |
| | 'd' are integers from 0-255), optionally |
| | followed by a slash ('/') and either a prefix |
| | length (an integer from 0-32) or a netmask |
| | represented in the dotted-quad notation |
| | described previously. Examples of legal |
| | values are '192.0.2.0', '192.0.2.0/32', and |
| | '192.0.2.0/255.255.255.255'. Additionally, |
| | leading zeros are permitted such that |
| | '192.0.2.0' is equal to '192.000.002.000'. If |
| | a prefix length is not specified, it is |
| | implicitly equal to 32. |
| | |
| | All operations are defined in terms of the |
| | value space. Let A and B be ipv4_address |
| | values (i.e. ordered pairs from the value |
| | space). The following definitions assume that |
| | bits outside the prefix have been zeroed out. |
| | By zeroing the low order bits, they are |
| | effectively ignored for all operations. |
| | Implementations of the following operations |
| | MUST behave as if this has been done. |
| | |
| | Let P_addr mean the first element of ordered |
| | pair P and P_prefix mean the second element. |
| | |
| | equals: A equals B if and only if |
| | A_addr == B_addr and A_prefix == B_prefix. |
| | |
| | not equal: A is not equal to B if and only |
| | if they don't satisfy the criteria for |
| | operator "equals". |
| | |
| | greater than: A is greater than B if and |
| | only if A_prefix == B_prefix and |
| | A_addr > B_addr. If A_prefix != B_prefix, |
| | i.e. prefix lengths are not equal, an error |
| | MUST be reported. |
| | |
| | greater than or equal: A is greater than or |
| | equal to B if and only if |
| | A_prefix == B_prefix and they satisfy either |
| | the criteria for operators "equal" or |
| | "greater than". If A_prefix != B_prefix, i.e. |
| | prefix lengths are not equal, an error MUST |
| | be reported. |
| | |
Cokus, et al. Expires March 11, 2017 [Page 48]
Internet-Draft OVAL Processing Model September 2016
| | less than: A is less than B if and only if |
| | A_prefix == B_prefix and they don't satisfy |
| | the criteria for operator "greater than or |
| | equal". If A_prefix != B_prefix, i.e. prefix |
| | lengths are not equal, an error MUST be |
| | reported. |
| | |
| | less than or equal: A is less than or equal |
| | to B if and only if A_prefix == B_prefix and |
| | they don't satisfy the criteria for operator |
| | "greater than". If A_prefix != B_prefix, i.e. |
| | prefix lengths are not equal, an error MUST |
| | be reported. |
| | |
| | subset of: A is a subset of B if and only if |
| | every IPv4 address in subnet A is present in |
| | subnet B. In other words, |
| | A_prefix >= B_prefix and the high B_prefix |
| | bits of A_addr and B_addr are equal. |
| | |
| | superset of: A is a superset of B if and only |
| | if B is a subset of A. |
+----------+-----------------------------------------------+
| ipv6_ | The ipv6_address datatype represents IPv6 |
| address | addresses and IPv6 address prefixes. Its |
| | value space consists of the set of ordered |
| | pairs of integers where the first element of |
| | each pair is in the range [0,2^128) (the |
| | representable range of a 128-bit unsigned |
| | int), and the second is in the range [0,128]. |
| | The first element is an address, and the |
| | second is a prefix length. |
| | |
| | The lexical space is CIDR notation given in |
| | IETF specification [RFC4291] for textual |
| | representations of IPv6 addresses and IPv6 |
| | address prefixes (see sections 2.2 and 2.3). |
| | If a prefix-length is not specified, it is |
| | implicitly equal to 128. |
| | |
| | All operations are defined in terms of the |
| | value space. Let A and B be ipv6_address |
| | values (i.e. ordered pairs from the value |
| | space). The following definitions assume |
| | that bits outside the prefix have been zeroed |
| | out. By zeroing the low order bits, they are |
| | effectively ignored for all operations. |
| | Implementations of the following operations |
Cokus, et al. Expires March 11, 2017 [Page 49]
Internet-Draft OVAL Processing Model September 2016
| | MUST behave as if this has been done. Let |
| | P_addr mean the first element of ordered |
| | pair P and P_prefix mean the second element. |
| | |
| | equals: A equals B if and only if |
| | A_addr == B_addr and A_prefix == B_prefix. |
| | |
| | not equal: A is not equal to B if and only if |
| | they don't satisfy the criteria for operator |
| | "equals". |
| | |
| | greater than: A is greater than B if and only |
| | if A_prefix == B_prefix and A_addr > B_addr. |
| | If A_prefix != B_prefix, an error MUST be |
| | reported. |
| | |
| | greater than or equal: A is greater than or |
| | equal to B if and only if |
| | A_prefix == B_prefix and they satisfy either |
| | the criteria for operators "equal" or |
| | "greater than". If A_prefix != B_prefix, an |
| | error MUST be reported. |
| | |
| | less than: A is less than B if and only if |
| | A_prefix == B_prefix and they don't satisfy |
| | the criteria for operator "greater than or |
| | equal". If A_prefix != B_prefix, an error |
| | MUST be reported. |
| | |
| | less than or equal: A is less than or equal |
| | to B if and only if A_prefix == B_prefix and |
| | they don't satisfy the criteria for operator |
| | "greater than". If A_prefix != B_prefix, an |
| | error MUST be reported. |
| | |
| | subset of: A is a subset of B if and only if |
| | every IPv6 address in subnet A is present in |
| | subnet B. In other words, |
| | A_prefix >= B_prefix and the high B_prefix |
| | bits of A_addr and B_addr are equal. |
| | |
| | superset of: A is a superset of B if and only |
| | if B is a subset of A. |
+----------+-----------------------------------------------+
| string | Data of this type conforms to the W3C |
| | Recommendation for string data [W3C-STRING]. |
| | |
| | equals: The collected string value is equal |
Cokus, et al. Expires March 11, 2017 [Page 50]
Internet-Draft OVAL Processing Model September 2016
| | to the specified string value only if the |
| | collected string value and the specified |
| | string value are the same length and the |
| | collected string value and the specified |
| | string value contain the same characters in |
| | the same positions. |
| | |
| | not equal: The collected string value is not |
| | equal to the specified string value only if |
| | the collected string value is not the same |
| | length as the specified string value or |
| | the collected string value and specified |
| | string value do not contain the same |
| | characters in the same positions. |
| | |
| | case insensitive equals: The collected |
| | string value is equal to the specified string |
| | value only if the collected string value and |
| | the specified string value are the same |
| | length and the collected string value and the |
| | specified string value contain the same |
| | characters, regardless of case, in the same |
| | positions. |
| | |
| | case insensitive not equal: The collected |
| | string value is not equal to the specified |
| | string value only if the collected string |
| | value and the specified string value are not |
| | the same length or the collected string value |
| | and the specified string value do not contain |
| | the same characters, regardless of case, in |
| | the same positions. |
| | |
| | pattern match: The collected string value |
| | will match the specified string value only if |
| | the collected string value matches the |
| | specified string value when the specified |
| | string is interpreted as a Perl 5 Compatible |
| | Regular Expression (PCRE)[PERL5]. The |
| | support for PCRE in OVAL is documented in the |
| | [I-D.draft-cokus-sacm-oval-common-model.xml]. |
+----------+-----------------------------------------------+
| version | Data of this type represents a value that is |
| | a hierarchical list of non-negative integers |
| | separated by a single character delimiter. |
| | Any single non-integer character may be used |
| | as a delimiter and the delimiter may vary |
| | between the non-negative integers of a given |
Cokus, et al. Expires March 11, 2017 [Page 51]
Internet-Draft OVAL Processing Model September 2016
| | version value. The hierarchical list of |
| | non-negative integers must be compared |
| | sequentially from left to right. When the |
| | version values, under comparison, have |
| | different-length lists of non-negative |
| | integers, zeros must be appended to the end |
| | of the values such that the lengths of the |
| | lists of non-negative integers are equal. |
| | |
| | equals: The collected version value is equal |
| | to the specified version value only if every |
| | non-negative integer in the collected version |
| | value is numerically equal to the |
| | corresponding non-negative integer in the |
| | specified version value. |
| | |
| | not equal: The collected version value is not |
| | equal to the specified version value if any |
| | non-negative integer in the collected version |
| | value is not numerically equal to the |
| | corresponding non-negative integer in the |
| | specified version value. |
| | |
| | greater than: The collected version value c |
| | is greater than the specified version value s |
| | only if the following algorithm returns true: |
| | |
| | c = c1,c2,...,cn where , is any non-integer |
| | character |
| | |
| | s = s1,s2,...,sn where , is any non-integer |
| | character |
| | |
| | for i = 1 to n |
| | if ci > si |
| | return true |
| | if ci < si |
| | return false |
| | if ci == si |
| | if i != n |
| | continue |
| | else |
| | return false |
| | |
| | greater than or equal: The collected version |
| | value c is greater than or equal to the |
| | specified version value s only if the |
| | following algorithm returns true: |
Cokus, et al. Expires March 11, 2017 [Page 52]
Internet-Draft OVAL Processing Model September 2016
| | |
| | c = c1,c2,...,cn where , is any non-integer |
| | character |
| | |
| | s = s1,s2,...,sn where , is any non-integer |
| | character |
| | |
| | for i = 1 to n |
| | if ci > si |
| | return true |
| | if ci < si |
| | return false |
| | if ci == si |
| | if i != n |
| | continue |
| | else |
| | return true |
| | |
| | less than: The collected version value c is |
| | less than the specified version value s only |
| | if the following algorithm returns true: |
| | |
| | c = c1,c2,...,cn where , is any non-integer |
| | character |
| | |
| | s = s1,s2,...,sn where , is any non-integer |
| | character |
| | |
| | for i = 1 to n |
| | if ci < si |
| | return true |
| | if ci > si |
| | return false |
| | if ci == si |
| | if i != n |
| | continue |
| | else |
| | return false |
| | |
| | less than or equal: The collected version |
| | value c is less than or equal to the |
| | specified version value s only if the |
| | following algorithm returns true: |
| | |
| | c = c1,c2,...,cn where , is any non-integer |
| | character |
| | |
| | s = s1,s2,...,sn where , is any non-integer |
Cokus, et al. Expires March 11, 2017 [Page 53]
Internet-Draft OVAL Processing Model September 2016
| | character |
| | |
| | for i = 1 to n |
| | if ci < si |
| | return true |
| | if ci > si |
| | return false |
| | if ci == si |
| | if i != n |
| | continue |
| | else |
| | return true |
+----------+-----------------------------------------------+
| record | Data of this type describes an entity with |
| | structured set of named fields and values |
| | as its content. The record datatype is |
| | currently prohibited from being used on |
| | variables. |
| | |
| | equals: The collected record value is equal |
| | to the specified record value only if each |
| | specified OVAL Field has a corresponding |
| | collected OVAL Field with the same name |
| | property and that the collected OVAL Field |
| | value matches the specified OVAL Field |
| | value in the context of the datatype and |
| | operation as described above. |
+----------------------------------------------------------+
Figure 19: Evaluation with Respect to Datatype and Operation
4.5.3.2.4.3.1.1. Variable Check Evaluation
It is often necessary to reference a variable from an OVAL Object or
State Entity in order to specify multiple values or to use a value
that was collected at runtime. When an OVAL Variable is referenced
from an OVAL Object or State Entity using the var_ref property, the
system state information will be compared to the every OVAL Variable
value in the context of the specified datatype and operation. The
final result of these comparisons are dependent on the value of the
var_check property which specifies how many of the values, contained
in OVAL Variable, must match the system state information to evaluate
to a result of 'true'. The valid values for the var_check property
are the defined in the CheckEnumeration.
Cokus, et al. Expires March 11, 2017 [Page 54]
Internet-Draft OVAL Processing Model September 2016
+---------+---------------------------------------------------------+
| Value | Description |
+---------+---------------------------------------------------------+
| all | The OVAL Object or State Entity matches the system |
| | state information only if the value of the OVAL Item |
| | Entity matches all of the values in the referenced the |
| | OVAL Variable in the context of the datatype and |
| | operation specified in the OVAL Object or State Entity. |
| | |
| at | The OVAL Object or State Entity matches the system |
| least | state information only if the value of the OVAL Item |
| one | Entity matches one or more of the values in the |
| | referenced OVAL Variable in the context of the datatype |
| | and operation specified in the OVAL Object or State |
| | Entity. |
| | |
| none | The OVAL Object or State Entity matches the system |
| satisfy | state information only if the OVAL Item Entity matches |
| | zero of the values in the referenced OVAL Variable in |
| | the context of the specified datatype and operation. |
| | |
| does | - |
| not | |
| exist | |
| | |
| only | The OVAL Object or State Entity matches the system |
| one | state information only if the OVAL Item Entity matches |
| | one of the values in the referenced OVAL Variable in |
| | the context of the specified datatype and operation. |
+---------+---------------------------------------------------------+
Table 15: Variable Check Evaluation
4.5.3.2.4.3.1.1.1. Determining the Final Result of the Variable Check
Evaluation
For more detailed information on how to combine the individual
results of the comparisons between the OVAL object or State Entities
and the system state information to determine the final result of
applying the var_check property, see Section 4.5.3.2.4.1.
4.5.3.2.4.3.1.2. OVAL Entity Casting
In certain situations, it is possible that the datatype specified on
the OVAL Entity is different from the datatype of the system state
information. When this happens, it is required that an attempt is
made to cast the system state information to the datatype specified
by the OVAL Entity before the operation is applied. If the cast is
Cokus, et al. Expires March 11, 2017 [Page 55]
Internet-Draft OVAL Processing Model September 2016
unsuccessful, the final result of the OVAL Entity Evaluation MUST be
'error'. Otherwise, the final result is dependent on the outcome of
the Datatype and Operation Evaluation and the Variable Check
Evaluation if an OVAL Variable is referenced. The process of casting
a value of one datatype to a value of another datatype must conform
to Section 4.5.3.4.
4.5.3.3. Masking Data
When the mask property is set to 'true' on an OVAL Entity or an OVAL
Field, the value of that OVAL Entity or OVAL Field MUST NOT be
present in the OVAL Results. Additionally, the mask property MUST be
set to 'true' for any OVAL Entity or OVAL Field or corresponding OVAL
Item Entity or OVAL Field in the OVAL Results where the system state
information was omitted.
When the mask property is set to 'true' on an OVAL Entity with a
datatype of 'record', each OVAL Field MUST have its operation and
value or value omitted from the OVAL Results regardless of the OVAL
Field's mask property value.
It is possible for masking conflicts to occur where one entity has
mask set to 'true' and another entity has mask set to 'false'. Such
a conflict will occur when the mask attribute is set differently on
an OVAL Object and OVAL State or when more than one OVAL Objects
identify the same OVAL Item(s). When such a conflict occurs the
value MUST always be masked.
Values MUST NOT be masked in OVAL System Characteristics that are not
contained within OVAL Results.
4.5.3.4. Entity Casting
Casting is performed whenever the datatype of a value, used during
evaluation, differs from the specified datatype whether it be on an
OVAL Entity or an OVAL Function. In most scenarios, it will be
possible to attempt the cast of a value from one datatype to another.
4.5.3.4.1. Attempting to Cast a Value
When attempting to cast a value from one datatype to another, the
value under consideration must be parsed according to the specified
datatype. If the value is successfully parsed according to the
definition of the specified datatype in the oval:DatatypeEnumeration,
this constitutes a successful cast. If the value is not successfully
parsed according to the definition of the specified datatype, this
means that it is not possible to cast the value to the specified
Cokus, et al. Expires March 11, 2017 [Page 56]
Internet-Draft OVAL Processing Model September 2016
datatype and an error MUST be reported for the construct attempting
to perform the cast.
4.5.3.4.2. Prohibited Casting
In some scenarios, it is not possible to perform a cast from one
datatype to another due to the datatypes, under consideration, being
incompatible. When an attempt is made to cast two incompatible
datatypes, an error MUST be reported. The following outlines the
casts where the datatypes are incompatible:
o An attempt to cast a value of datatype 'record' to any datatype
other than 'record'.
o An attempt to cast a value of datatype 'ipv4_address' to any
datatype other than 'ipv4_address' or 'string'.
o An attempt to cast a value of datatype 'ipv6_address' to any
datatype other than 'ipv6_address' or 'string'.
o An attempt to cast a value with a datatype other than
'ipv4_address' or 'string' to 'ipv4_address'.
o An attempt to cast a value with a datatype other than
'ipv6_address' or 'string' to 'ipv6_address'.
5. Intellectual Property Considerations
Copyright (C) 2010 United States Government. All Rights Reserved.
DHS, on behalf of the United States, owns the registered OVAL
trademarks, identifying the OVAL STANDARDS SUITE and any component
part, as that suite has been provided to the IETF Trust. A "(R)"
will be used in conjunction with the first use of any OVAL trademark
in any document or publication in recognition of DHS's trademark
ownership.
6. Acknowledgements
The authors wish to thank DHS for sponsoring the OVAL effort over the
years which has made this work possible. The authors also wish to
thank the original authors of this document Jonathan Baker, Matthew
Hansbury, and Daniel Haynes of the MITRE Corporation as well as the
OVAL Community for its assistance in contributing and reviewing the
original document. The authors would also like to acknowledge Dave
Waltermire of NIST for his contribution to the development of the
original document.
Cokus, et al. Expires March 11, 2017 [Page 57]
Internet-Draft OVAL Processing Model September 2016
7. IANA Considerations
This memo includes no request to IANA.
8. Security Considerations
While OVAL is just a set of data models and does not directly
introduce security concerns, it does provide a mechanism by which to
represent endpoint posture assessment information. This information
could be extremely valuable to an attacker allowing them to learn
about very sensitive information including, but, not limited to:
security policies, systems on the network, criticality of systems,
software and hardware inventory, patch levels, user accounts and much
more. To address this concern, all endpoint posture assessment
information should be protected while in transit and at rest.
Furthermore, it should only be shared with parties that are
authorized to receive it.
Another possible security concern is due to the fact that content
expressed as OVAL has the ability to impact how a security tool
operates. For example, content may instruct a tool to collect
certain information off a system or may be used to drive follow-up
actions like remediation. As a result, it is important for security
tools to ensure that they are obtaining OVAL content from a trusted
source, that it has not been modified in transit, and that proper
validation is performed in order to ensure it does not contain
malicious data.
9. Change Log
9.1. -00 to -01
There are no textual changes associated with this revision. This
revision simply reflects a resubmission of the document so that it
remains in active status.
10. References
10.1. Normative References
[CISCO-IOS]
CISCO, "Cisco IOS Reference Manual", 2014,
<http://www.cisco.com/web/about/security/intelligence/
ios-ref.html>.
Cokus, et al. Expires March 11, 2017 [Page 58]
Internet-Draft OVAL Processing Model September 2016
[DEBIAN-POLICY-MANUAL]
Debian, "Debian Policy Manual", 2014,
<https://www.debian.org/doc/debian-policy/ch-
controlfields.html#s-f-Version>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, DOI 10.17487/RFC4291, February
2006, <http://www.rfc-editor.org/info/rfc4291>.
[RFC791] IETF, "Internet Protocol", 1981,
<https://tools.ietf.org/html/rfc791>.
[W3C-BOOLEAN]
W3C, "W3C Recommendation for Integer Data", 2004,
<http://www.w3.org/TR/xmlSchema-2/#boolean>.
[W3C-FLOAT]
W3C, "W3C Recommendation for Floating Point Data", 2004,
<http://www.w3.org/TR/xmlSchema-2/#float>.
[W3C-HEX-BIN]
W3C, "W3C Recommendation for Hex Binary Data", 2004,
<http://www.w3.org/TR/xmlschema-2/#hexBinary>.
[W3C-INT] W3C, "W3C Recommendation for Integer Data", 2004,
<http://www.w3.org/TR/xmlSchema-2/#integer>.
[W3C-STRING]
W3C, "W3C Recommendation for String Data", 2004,
<http://www.w3.org/TR/xmlSchema-2/#string>.
10.2. Informative References
[OVAL-WEBSITE]
The MITRE Corporation, "The Open Vulnerability and
Assessment Language", 2015,
<http://ovalproject.github.io/>.
Authors' Addresses
Cokus, et al. Expires March 11, 2017 [Page 59]
Internet-Draft OVAL Processing Model September 2016
Michael Cokus
The MITRE Corporation
903 Enterprise Parkway, Suite 200
Hampton, VA 23666
USA
Email: msc@mitre.org
Daniel Haynes
The MITRE Corporation
202 Burlington Road
Bedford, MA 01730
USA
Email: dhaynes@mitre.org
David Rothenberg
The MITRE Corporation
202 Burlington Road
Bedford, MA 01730
USA
Email: drothenberg@mitre.org
Juan Gonzalez
Department of Homeland Security
245 Murray Lane
Washington, DC 20548
USA
Email: juan.gonzalez@dhs.gov
Cokus, et al. Expires March 11, 2017 [Page 60]