You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/suggested-practices/index.md
+17-17Lines changed: 17 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ title: Suggested Practices
4
4
---
5
5
6
6
This page contains suggested practices for developing and consuming CybOX
7
-
content. There's a [similar page](https://stixproject.github.io/documentation/suggested-practices/) for STIX.
7
+
content. There's a [similar page](https://stixproject.github.io/documentation/suggested-practices/) for Structured Threat Information eXpression (STIX™).
8
8
9
9
Note that these are simply suggested practices. In many cases, operational or
10
10
technical concerns may prohibit you from implementing them or they may just not
@@ -104,7 +104,7 @@ When creating references, you will typically use the `idref` attribute:
In a VERY limited set of circumstances (e.g. when specifying Attachments or Links within the Email_Message Object) you will use the `object_reference` attribute rather than `idref`. The `object_reference` field, like the `idref` field, specifies a unique ID reference to an Object defined elsewhere. Unlike the general use of `idref` which references the full Object, the `object_reference` field allows for the re-use of the defined Properties of one Object within another, without allowing the embedding of the full Object in the location from which it is being referenced. Thus, this ID reference is intended to resolve to just the Properties of the Object that it points to. Situations where `object_reference` should be used rather than `idref` are explicitly documented within the object property schemas that utilize this approach.
107
+
In a VERY limited set of circumstances (e.g., when specifying Attachments or Links within the Email_Message Object), you will use the `object_reference` attribute rather than `idref`. The `object_reference` field, like the `idref` field, specifies a unique ID reference to an Object defined elsewhere. Unlike the general use of `idref` which references the full Object, the `object_reference` field allows for the re-use of the defined Properties of one Object within another, without allowing the embedding of the full Object in the location from which it is being referenced. Thus, this ID reference is intended to resolve to just the Properties of the Object that it points to. Situations where `object_reference` should be used rather than `idref` are explicitly documented within the object property schemas that utilize this approach.
@@ -127,11 +127,11 @@ or elements in the reference element.
127
127
## Using Vocabularies
128
128
Many places in CybOX use controlled vocabularies to represent data. When
129
129
possible, you should use the vocabularies included in the CybOX defaults. If
130
-
necessary you can use your own vocabulary or even use strings outside of any
130
+
necessary, you can use your own vocabulary or even use strings outside of any
131
131
vocabularies.
132
132
133
133
If you do this to add values that you think might be useful for other CybOX
134
-
users, you should let us know so we can consider adding it to the default
134
+
users, you should let us know by subscribing and submitting comments to the [CTI Users List](http://cyboxproject.github.io/community/#cti-users-list) or the [CTI TC Public Comment List](http://cyboxproject.github.io/community/#public-comment-list)so we can consider adding it to the default
135
135
vocabulary.
136
136
137
137
## Creating Timestamps
@@ -162,7 +162,7 @@ CybOX Objects schemas define sets of properties for common cyber objects.
162
162
163
163
To support practical use, CybOX provides an extensive set of Object property specifications by default.
164
164
165
-
This predefined set includes a broad range of object types across the cyber domain (network, host, files, memory, devices, etc.) as well as objects of varying levels of specificity/abstraction intended for differing use cases.
165
+
This predefined set includes a broad range of object types across the cyber domain (network, host, files, memory, devices, etc.), as well as objects of varying levels of specificity/abstraction intended for differing use cases.
166
166
167
167
The approach to [defining Objects](../creating-objects) (especially those across varying levels of specificity/abstraction) is intended to pursue architectural consistency and reuse by having more complex or specific variations on Objects leverage other more abstract existing Objects for sets of properties.
168
168
@@ -172,14 +172,14 @@ There are two primary variations of this:
172
172
* For example, **File -> Win File -> Win EXE File** where CybOX defines a basic [File Object] ({{site.stix_url}}/FileObj/FileObjectType) with general file properties applicable across platforms, a more specific [Win_File Object] ({{site.stix_url}}/WinFileObj/WindowsFileObjectType) that extends the general File Object and adds Windows-specific file properties, and an even more specific [Win_Executable_File Object] ({{site.stix_url}}/WinExecutableFileObj/WindowsExecutableFileObjectType) which extends the Win_File Object and adds properties for executable files under Windows.
173
173
* Objects that leverage other Objects to define more specific properties for differing and more specialized use cases.
174
174
* For example, the set of Objects specified that can contain an **IP Address**.
175
-
*[Address Object] ({{site.stix_url}}/AddressObj/AddressObjectType) enables the specification of a particular IP Address (or other type of address) value and its type (e.g. ipv4-addr) without any other context. This can be used when you desire to characterize an IP Address but not to assert any given context for where you might find it (e.g. it may appear in any of a wide variety of logs). This Object also provides consistent specification of address properties for its use on its own or by more specific Objects that need to characterize addresses within more specific contexts.
175
+
*[Address Object] ({{site.stix_url}}/AddressObj/AddressObjectType) enables the specification of a particular IP Address (or other type of address) value and its type (e.g., ipv4-addr) without any other context. This can be used when you desire to characterize an IP Address but not to assert any given context for where you might find it (e.g., it may appear in any of a wide variety of logs). This Object also provides consistent specification of address properties for its use on its own, or by more specific Objects that need to characterize addresses within more specific contexts.
176
176
*[Socket_Address Object] ({{site.stix_url}}/SocketAddressObj/SocketAddressObjectType) enables the specification of a particular IP Address (or Hostname) and Port pairing. This obviously lets you characterize a more specific context for an IP Address but still leverages the AddressObjectType for its IP Address structure yielding consistency across the two Objects.
177
177
*[Network_Connection Object] ({{site.stix_url}}/NetworkConnectionObj/NetworkConnectionObjectType) enables the specification of properties related to a network connection including Layer3, Layer4 and Layer7 details as well as details of the source socket and destination socket of the connection. This object leverages the SocketAddressType for its source and destination socket structures. This enables the characterization of very specific contextual details around an IP Address.
178
178
179
179
180
180
**It is suggested practice to always utilize the most specific CybOX Object possible for the context you are looking to convey and based on the properties you need to represent.**
181
181
182
-
* For example, if you know you are looking to describe a situation of network traffic to a particular IP Address, use the Network_Connection Object but if all you know is that an IP Address was seen or might be seen but you have no further context, use the Address Object. This also applies to the use of platform-agnostic Objects (e.g. File) and their derived platform-specifc Objects (e.g. Win_File). If you need to characterize properties from a more specific variation of an Object (e.g. the SID of a file), utilize that Object (e.g. Win_File) otherwise use the simplest version available that supports the properties you need to characterize.
182
+
* For example, if you know you are looking to describe a situation of network traffic to a particular IP Address, use the Network_Connection Object but if all you know is that an IP Address was seen or might be seen but you have no further context, use the Address Object. This also applies to the use of platform-agnostic Objects (e.g., File) and their derived platform-specifc Objects (e.g., Win_File). If you need to characterize properties from a more specific variation of an Object (e.g., the SID of a file), utilize that Object (e.g., Win_File) otherwise use the simplest version available that supports the properties you need to characterize.
183
183
184
184
**One clear exception to this is if conformance to a specific language Profile is required and that Profile restricts the set of available objects or directly specifies a particular Object to be used.**
185
185
@@ -196,21 +196,21 @@ To encourage consistency in the characterization of relationships between Object
196
196
197
197
**Desired Association (Network-centric Object relationships)**|**Source Object**|**Related Object**|**"Relationship" Vocabulary Value**
A network naming structure (e.g. Domain or Hostname) and an IP Address<br/> it resolves to | [Domain_Name Object](http://stixproject.github.io/data-model/1.1.1/DomainNameObj/DomainNameObjectType/) | [Address Object](http://stixproject.github.io/data-model/1.1.1/AddressObj/AddressObjectType/) | “**Resolved_To**”
199
+
A network naming structure (e.g., Domain or Hostname) and an IP Address it resolves to | [Domain_Name Object](http://stixproject.github.io/data-model/1.1.1/DomainNameObj/DomainNameObjectType/) | [Address Object](http://stixproject.github.io/data-model/1.1.1/AddressObj/AddressObjectType/) | “**Resolved_To**”
An IP Address and an Autonomous System | Address Object | [AS Object](http://stixproject.github.io/data-model/1.1.1/ASObj/ASObjectType/) | “**Contained_By**”
204
204
| AS Object | Address Object | “**Contains**”
205
-
A network naming structure (e.g. Domain or Hostname) and a Whois response | Domain_Name Object | [Whois Object](http://stixproject.github.io/data-model/1.1.1/WhoisObj/WhoisObjectType/) | “**Characterized_By**”
205
+
A network naming structure (e.g., Domain or Hostname) and a Whois response | Domain_Name Object | [Whois Object](http://stixproject.github.io/data-model/1.1.1/WhoisObj/WhoisObjectType/) | “**Characterized_By**”
A network naming structure (e.g. Domain or Hostname) and a DNS Query | Domain_Name Object | [DNS_Query Object](http://stixproject.github.io/data-model/1.1.1/DNSQueryObj/DNSQueryObjectType/) | “**Properties_Queried_By**”
209
+
A network naming structure (e.g., Domain or Hostname) and a DNS Query | Domain_Name Object | [DNS_Query Object](http://stixproject.github.io/data-model/1.1.1/DNSQueryObj/DNSQueryObjectType/) | “**Properties_Queried_By**”
A network naming structure (e.g. Domain or Hostname) and a DNS Record | Domain_Name Object | [DNS_Record Object](http://stixproject.github.io/data-model/1.1.1/DNSRecordObj/DNSRecordObjectType/) | “**Characterized_By**”
213
+
A network naming structure (e.g., Domain or Hostname) and a DNS Record | Domain_Name Object | [DNS_Record Object](http://stixproject.github.io/data-model/1.1.1/DNSRecordObj/DNSRecordObjectType/) | “**Characterized_By**”
An Email and a Link (URL) within the Email | Email_Message Object | [Link](http://stixproject.github.io/data-model/1.1.1/LinkObj/LinkObjectType/) | “**Contains**”
238
+
An Email and a Link (URL) within the email | Email_Message Object | [Link](http://stixproject.github.io/data-model/1.1.1/LinkObj/LinkObjectType/) | “**Contains**”
239
239
| Link Object | Email_Message Object | “**Contained_Within**”
240
240
A File and another File contained within it | File Object (outer) | FileObject (inner) | “**Contains**”
A File and the URL, Domain or Hostname from which it was downloaded | File Object | URI Object | “**Downloaded_From**”
244
+
A File and the URL, Domain, or Hostname from which it was downloaded | File Object | URI Object | “**Downloaded_From**”
245
245
| URI Object | File Object | “**Downloaded**”
246
246
| File Object | Domain Name Object | “**Downloaded_From**”
247
247
| Domain Name Object | File Object | “**Downloaded**”
@@ -252,7 +252,7 @@ A File and the URL, Domain or Hostname from which it was downloaded | File Obje
252
252
253
253
### Capturing Custom Tool Properties
254
254
Sometimes, a tool will capture properties about a CybOX object that aren't in
255
-
the schema for that object type. In some cases this is because the schemas need
255
+
the schema for that object type. In some cases, this is because the schemas need
256
256
to be expanded to cover that property, but in other cases this is because the
257
257
tool is collecting derived information or other properties that are not
258
258
generally represented for that object type.
@@ -312,8 +312,8 @@ indistinguishable. Given the name `www.example.com`, does that string
312
312
represent a domain? A host? Both? In this case, there is most likely a host
313
313
that responds to web requests at an IP address which a DNS query for that name
314
314
would respond with. However, there are some valid domain names that do not
315
-
correspond to hosts (e.g. top-level domains such as "org" or "co.uk") There are
316
-
also host names (e.g. local names in a `hosts` file) which may not correspond
315
+
correspond to hosts (e.g., top-level domains such as "org" or "co.uk"). There are
316
+
also host names (e.g., local names in a `hosts` file) which may not correspond
317
317
to a name in any domain name system.
318
318
319
319
### General Principle
@@ -462,7 +462,7 @@ host to be involved (load balancer, etc.).
462
462
463
463
The CybOX team is investigating ways to make the use of these objects even more
464
464
clear in a future release. Suggestions and/or proposed changes are always
465
-
welcome!
465
+
welcome by subscribing and submitting comments to the [CTI Users List](http://cyboxproject.github.io/community/#cti-users-list) or the [CTI TC Public Comment List](http://cyboxproject.github.io/community/#public-comment-list)!
0 commit comments