-
Notifications
You must be signed in to change notification settings - Fork 21
Proposal Enable More Flexible Structuring of STIX Package Content
Status: Accepted
Comment Period Closes: 1/20/2014
Affects Backwards Compatibility: No
Relevant Issue: https://github.com/STIXProject/schemas/issues/56
This proposal concerns the ability to provide more flexibility in how STIX content can be grouped/packaged for varying contextual use cases. STIX 1.0.1 currently supports the ability to define a single <STIX_Package>
construct per file containing a set of set of characterizing metadata in the <STIX_Header>
construct and specific STIX core content (Observables
, Indicators
, Incidents
, TTPs
, Exploit_Targets
, Campaigns
, Threat_Actors
and Courses_of_Action
) either directly or via reference.
There has been discussion on and off in the community about expanding the grouping/packaging capability to support more flexibility including the ability to specify multiple Packages
within a STIX file, the ability to define hierarchies of Packages
, the ability to define “manifest”-style Packages
with metadata and all content being specified by reference, the ability to specify relationships between Packages, the ability to specify relationships from STIX core content instances to related Packages
, etc.
These discussions have resulted in the following set of desired objectives for STIX grouping/packaging capability:
- Support delivery of STIX content (this one is very fundamental)
- Support delivery of multiple different STIX
Packages
within the same document - Support description of each
Package
(Title
,Description
,Intent/Affinity
,Handling
,Information Source
) - Support for defining a
Package
enclosing otherPackages
(e.g. FooBar threat report for Jan 16, 2014 containing content on ThreatA, ThreatB and ThreatC) - Support for conveying a
Package
with description and full STIX core content specified inline (this is the basic STIX use case) - Support for conveying a “manifest”-style
Package
with a description and references to STIX core content defined elsewhere - Support for conveying a
Package
description without STIX core content (this provides the ability to characterize threat information contexts that may not currently exist in STIX form; e.g. a prose threat information report from a vendor) - Support for asserting relationships between
Packages
- Support for asserting relationships from STIX core content constructs to related
Packages
(implicit in this is the ability for a STIX core content instance (e.g.Indicator
) to be related to multiplePackages
)
Objectives #1, #3, #5, #6 and #7 above are all enabled in the current STIX 1.0.1 release.
As much as possible, a solution pursued at this time should strive to be simple and efficient as well as backward compatible for now. Refactoring or renaming that break backward compatibility can be discussed and pursued for STIX 2.0
Create a new RelatedPackagesType
that is a list of zero or more Related_Package
elements where each one is of a new RelatedPackageType
that extends stixCommon:GenericRelationshipType
and adds a simple Package
element of type STIXType
. Add a new Related_Packages
element of RelatedPackagesType
to STIXType
.
These new types would be added to the stix_core.xsd
schema file.
These changes enable objectives #2, #4 and #8 described above.
Add a new Related_Packages
element to IndicatorType
, IncidentType
, TTPType
, CourseOfActionType
, ExploitTargetType
, CampaignType
, and ThreatActorType
. That element would consistent of a list of zero or more Package_Reference
elements, each of type RelatedPackageRefType
. RelatedPackageRefType
would be a limited relationship similar to the newly proposed CampaignReferenceType
(https://github.com/STIXProject/schemas/wiki/Proposal:-Move-Indicator-Campaign-relationships-from-Campaign-construct-to-Indicator-construct).
It would extend stixCommon:GenericRelationshipType
and add a simple idref
attribute thus precluding the specification of a full related Package
inline but supporting the indirect referencing of a related Package
specified elsewhere.
Of course, at the Package_Reference
level you would also have the standard relationship metadata:
-
Confidence
element, to characterize the confidence in the relationship -
Information_Source
element, to characterize the information source of the relationship -
Relationship
element, to characterize the nature of the relationship
Essentially, you can think of this relationship as identical to standard STIX relationships except instead of allowing for the inline definition of a Package
or a reference to an externally defined Package
, it only allows a reference to an externally defined Package by id
.
These new types would be added to the stix_common.xsd
schema file such that it could be leveraged in several places throughout STIX.
These changes enable objectives #9 described above.
This proposed solution maintains simplicity without the addition of new Packages layers or separate Report constructs. It also maintains full backward compatibility.
There is no expected compatibility impact. Producers will have the option to use the newly added fields and consumers can choose to handle or not handle them as with any other field in STIX.
- Is there value in the ability to convey multiple Packages within a single file?
- Is there value in the ability to specify hierarchies of Packages (Packages within Packages)?
- Is there value in the ability to assert relationships between Packages?
- Is there value in the ability to assert relationships from STIX core content instances to a related Package?
- Is there value in the ability to assert relationships from STIX core content instances to multiple related Packages?
There was some discussion on this item but no concrete suggested changes. This issue will be implemented as described above in 1.1 and will be revisited in 2.0.