Cybox v2.1.1 csprd01 Part01 Overview
Cybox v2.1.1 csprd01 Part01 Overview
STIX™, TAXII™, AND CybOX™ (STANDARD OR STANDARDS) AND THEIR COMPONENT PARTS
ARE PROVIDED “AS IS” WITHOUT ANY WARRANTY OF ANY KIND, EITHER EXPRESSED, IMPLIED,
OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT THESE STANDARDS
OR ANY OF THEIR COMPONENT PARTS WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED
cybox-v2.1.1-csprd01-part01-overview 20 June 2016
Standards Track Work Product Copyright © OASIS Open 2016. All Rights Reserved. Page 3 of 26
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM
FROM INFRINGEMENT, ANY WARRANTY THAT THE STANDARDS OR THEIR COMPONENT PARTS
WILL BE ERROR FREE, OR ANY WARRANTY THAT THE DOCUMENTATION, IF PROVIDED, WILL
CONFORM TO THE STANDARDS OR THEIR COMPONENT PARTS. IN NO EVENT SHALL THE
UNITED STATES GOVERNMENT OR ITS CONTRACTORS OR SUBCONTRACTORS BE LIABLE FOR
ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, INDIRECT, SPECIAL OR
CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, OR IN ANY WAY
CONNECTED WITH THESE STANDARDS OR THEIR COMPONENT PARTS OR ANY PROVIDED
DOCUMENTATION, WHETHER OR NOT BASED UPON WARRANTY, CONTRACT, TORT, OR
OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR PROPERTY OR
OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT OF THE
RESULTS OF, OR USE OF, THE STANDARDS, THEIR COMPONENT PARTS, AND ANY PROVIDED
DOCUMENTATION. THE UNITED STATES GOVERNMENT DISCLAIMS ALL WARRANTIES AND
LIABILITIES REGARDING THE STANDARDS OR THEIR COMPONENT PARTS ATTRIBUTABLE TO
ANY THIRD PARTY, IF PRESENT IN THE STANDARDS OR THEIR COMPONENT PARTS AND
DISTRIBUTES IT OR THEM “AS IS.”
This CybOX specification overview document serves as a unifying document for the full set of CybOX
specification documents. In Section , we discuss additional specification documents, in Section 1.2, we
provide document conventions, and in Section 1.3, we provide terminology. References are given in
Sections 1.4 and 1.5. In Section 2 we discusses the modularity of CybOX, and summarizes the
relationship of CybOX to other languages. In section 3, we discuss conventions common across all of the
data models. Conformance information is also provided in Section 4.
CybOX has a modular design comprising two fundamental data models and a collection of Object data
models. The fundamental data models – CybOX Core and CybOX Common – provide essential CybOX
structure and functionality. The CybOX Objects, defined in individual data models, are precise
characterizations of particular types of observable cyber entities (e.g., HTTP session, Windows registry
key, DNS query). Additionally, the full CybOX data model includes various extension data models and a
set of default controlled vocabularies.
Use of the CybOX Core and Common data models is required; however, use of the CybOX Object data
models is purely optional: users select and use only those Objects and corresponding data models that
are needed. Importing the entire CybOX suite of data models is not necessary.
1.2.1 Fonts
The following font and font style conventions are used in the document:
Capitalization is used for CybOX high level concepts, which are defined in CybOX™ Version
2.1.1 Part 1: Overview.
Note that all high level concepts have a corresponding UML object. For example, the Action high
level concept is associated with a UML class named, ActionType.
In UML diagrams, classes are often presented with their attributes elided, to avoid clutter. A class
presented with an empty section at the bottom of the icon indicates that there are no attributes other than
those that are visualized using associations.
Icon Description
1.3 Terminology
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 [RFC2119].
The grouping of Objects below is for expository purposes only. It does not suggest or imply the need to
use of any particular Object data model.
Host-based Artifacts
o File-related
Library
Windows Pipe
Pipe
Unix Pipe
Windows Filemapping
File
File
Image File
PDF File
Archive File
Windows File
Unix File
Windows Executable File
o Memory-related
Windows Critical Section
Semaphore
Windows Semaphore
Windows Waitable Timer
Mutex
Windows Mutex
Windows Hook
Windows Kernel Hook
Windows Memory Page Region
Windows Handle
Memory
Windows Mailslot
o Mobile
SMS Message
o Process-related
Process
Windows Thread
The Object data models are split into three major categories: Host-based artifacts, Network-based
artifacts, and the catch-all miscellaneous artifacts. Among the Host-based artifacts, there are many data
models that are extensions of others in order to define properties specific to the Windows or Unix
operating systems. Some of the Object data models are very simple (e.g. DNS_Cache), containing one
or two UML classes or data types; others are quite complex, encompassing many UML classes (e.g.,
PDF_File). Each individual Object data model has a main toplevel class, which is usually named after the
UML package name (e.g., the main class in the PDF File Object data model is PDFFileObjectType).
Objects have two main properties, Properties and Related_Objects. This is shown in Figure 2 -1.
Use of UML data types that extend from BaseObjectPropertyType enables a producer of content to
include much more detail about the value of an Object’s property (Figure 2 -4).
BaseObjectPropertyType data type extends from BaseObjectPropertyGroup, which is an
abstract data type that contains the auxiliary metadata properties associated with the main property value
being represented. For example, when using StringObjectPropertyType to describe the
File_Name property of a File Object, one might want to include that the observed encoding of the string
is “windows-1251”.
In addition, the BaseObjectPropertyType data type also inherits from PatternFieldGroup data
type. This data type incorporates pattern matching capabilities to all specializations of
BaseObjectPropertyType. An example of using properties from PatternFieldGroup would be to
use a StringObjectPropertyType to specify that the File Object’s File_Extension property
satisfied the condition: not equal to “exe”.
Please see CybOX™ Version 2.1.1 Part 4: Default Extensions for complete information on the CybOX
Default Extensions data model.
“A data type is a special kind of classifier, similar to a class. It differs from a class in
that instances of a data type are identified only by their value. All copies of an instance
of a data type and any instances of that data type with the same value are considered
to be equal instances. Instances of a data type that have attributes (i.e., is a structured
data type) are considered to be equal if the structure is the same and the values of the
corresponding attributes are equal. If a data type has attributes, then instances of that
data type will contain attribute values matching the attributes.”
Although four of the requisite primitive data types (Boolean, Integer, String, UnlimitedNatural)
are defined in UML, the need for a broader set in CybOX drove the decision to define a complete set of
basic data types in a separate, stand-alone UML package (the Basic Data Types data model). We
explicitly define the data types in the Basic Data Types data model in Sections 2.7.1 and 2.7.2.
Note, that the use of UML data types from the Basic Data Types data model (e.g., BasicString,
Boolean) is not the same as using UML data types defined as specializations of
BaseObjectPropertyType (e.g., StringObjectPropertyType,
HexBinaryObjectPropertyType, etc.). The latter data types permits the use of properties from
BaseObjectPropertyGroup and PatternFieldGroup, which allow for a much richer
characterization of cyber observables. Also, it’s worth noting that not all data types defined in the Basic
Data Types data model are used in CybOX.
The Boolean data type is defined with two possible literals: ‘true’
Boolean
and ‘false’.
Prefix cyboxCommon
The CybOX Common data model defines classes that are
Description
shared across the various CybOX data models.
Example cyboxCommon:ConfidenceType
Example cyboxVocabs:ActionTypeVocab
3.3 Identifiers
Optional identifiers (IDs) can be assigned to several CybOX constructs so that the constructs can be
unambiguously referenced. Technically, the decision to specify an ID on a given construct is optional
based on the specifics of the usage context. As a general rule, specifying IDs on particular instances of
constructs enables clear referencing, relating, and pivoting.
In CybOX v2.1.1, each CybOX ID is a fully qualified name, which consists of a producer namespace and
a unique identifier. The producer namespace is a short-hand prefix, which is separated from the unique
identifier by a colon (“:”):
[producer namespace]:[unique identifier]
This format provides high assurance that IDs will be both meaningful and unique. Meaning comes from
producer namespace, which denotes who is producing it, and uniqueness comes from the unique
identifier.
Please see CybOX™ Version 2.2.1 Part 4: Default Extensions for further information on all of the
externally-defined data models CybOX leverages by default (with the exception of CybOX, for which a
different reference is given in Section Error: Reference source not found).
[1] Conformant implementations must conform to all normative structural specifications of the UML model
or additional normative statements within this document that apply to the portions of CybOX they
implement (e.g., Implementers of the entire Observable class must conform to all normative structural
specifications of the UML model regarding the Observable class or additional normative statements
contained in the document that describes the Observable class).
[2] Conformant implementations are free to ignore normative structural specifications of the UML model
or additional normative statements within this document that do not apply to the portions of CybOX they
implement (e.g., Non-implementers of any particular properties of the Observable class are free to ignore
all normative structural specifications of the UML model regarding those properties of the Observable
class or additional normative statements contained in the document that describes the Observable class).
The conformance section of this document is intentionally broad and attempts to reiterate what already
exists in this document.
The authors would also like to thank the larger CybOX Community for its input and help in
reviewing this document.