MILE Working Group | J. Field |
Internet-Draft | Pivotal |
Intended status: Informational | S. Banghart |
Expires: May 3, 2018 | NIST |
October 30, 2017 |
Definition of ROLIE CSIRT Extension
draft-banghart-mile-rolie-csirt-02
This document extends the Resource-Oriented Lightweight Information Exchange (ROLIE) core to add the information type categories and related requirements needed to support Computer Security Incident Response Team (CSIRT) use cases. The indicator and incident information types are defined as ROLIE extensions. Additional supporting requirements are also defined that describe the use of specific formats and link relations pertaining to the new information types.
This Internet-Draft is submitted to IETF 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 https://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 May 3, 2018.
Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
Threats to computer security are evolving ever more rapidly as time goes on. As software increases in complexity, the number of vulnerabilities in systems and networks can increase exponentially. Threat actors looking to exploit these vulnerabilities are making more frequent and more widely distributed attacks across a large variety of systems. The adoption of liberal information sharing amongst attackers allows a discovered vulnerability to be shared and used to attack a vulnerable system within a narrow window of time. As the skills and knowledge required to identify and combat these attacks become more and more specialized, even a well established and secure system may find itself unable to quickly respond to an incident. Effective identification of and response to a sophisticated attack requires open cooperation and collaboration between defending operators, software vendors, and end-users. To improve the timeliness of responses, automation must be used to acquire, contextualize, and put to use shared computer security information.
CSIRTS share two primary forms of information: incidents and indicators. Using these forms of information, analysts are able to perform a wide range of activities both proactive and reactive to ensure the security of their systems.
Incident information describes a cyber security incident. Such information may include attack characteristics, information about the attacker, and attack vector data. Sharing this information helps analysts within the sharing community to inoculate their systems against similar attacks, providing proactive protection.
Indicator information describes the symptoms or necessary pre-conditions of an attack. Everything from system vulnerabilities to unexpected network traffic can help analysts secure systems and prepare for an attack. Making this information available for sharing aids in the proactive defense of systems both within an operating unit but also for any CSIRTs that are part of a sharing consortium.
As a means to bring automation of content discovery and dissemination into the CSIRT domain, this specification provides an extension to the Resource-Oriented Lightweight Information Exchange (ROLIE) core [I-D.ietf-mile-rolie] designed to address CSIRT use cases. The primary purpose of this extension is to define two new information types: incident, and indicator, along with formats and link relations that support these information-types.
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].
Definitions for some of the common computer security-related terminology used in this document can be found in Section 2 of [RFC5070].
This document specifies the following requirements for use of the Atom Publishing Protocol.
This document defines the following requirements on HTTP request behavior:
The forward slash resource URL MUST be supported as defined in Section 5.5. Note that this is a stricter requirement than [I-D.ietf-mile-rolie].
When the content model for the Atom <content> element of an Atom Entry contains an <IODEF-Document>, then authorization MUST be adjudicated based upon the Atom <category> element(s), whose values have been mapped as per Section 8.1.1.
This document specifies the following additional requirements for the Atom Syndication Format.
A feed containing IODEF incident content MUST contain at least two additional <atom:category> elements. One category element MUST have the name attribute be equal to 'urn:ietf:params:rolie:category:csirt:iodef:purpose' and the other 'urn:ietf:params:rolie:category:csirt:iodef:restriction'. This metadata provides valuable metadata for searching and organization IODEF documents.
When the name attribute of this element is 'urn:ietf:params:rolie:category:csirt:iodef:purpose', the value attribute MUST be constrained as per section 3.2 of IODEF, e.g. traceback, mitigation, reporting, or other.
When the name attribute of this element is 'urn:ietf:params:rolie:category:csirt:iodef:restriction', the value attribute MUST be constrained as per section 3.2 of IODEF, e.g. public, need-to-know, private, default.
An entry containing an IODEF payload MUST contain a <rolie:property> element with the following requirements:
The "name" attribute is urn:ietf:params:rolie:property:csirt:id.
The "value" attribute SHOULD be established via the concatenation of the value of the name attribute from the IODEF <IncidentID> element and the corresponding value of the <IncidentID> element. This requirement ensures a simple and direct one-to-one relationship between an IODEF incident ID and a corresponding Feed entry ID and avoids the need for any system to maintain a persistent store of these identity mappings.
This document defines the following additional requirements for the content element, and the content linked to by the href attribute of the content element:
An IODEF document that is carried in an Atom Entry SHOULD NOT contain a <relatedActivity> element. Instead, the related activity SHOULD be available via a link rel=related.
An IODEF document that is carried in an Atom Entry SHOULD NOT contain a <history> element. Instead, the related history SHOULD be available via a atom:link rel="history".
The "incident" information type represents any information describing or pertaining to a computer security incident. This document uses the definition of incident provided by [RFC4949]. Provided below is a non-exhaustive list of information that may be considered to be an incident information type.
Note again that this list is not exhaustive, any information that in is the abstract realm of an incident should be classified under this information-type.
The "indicator" information type represents computer security indicators or any information surrounding them. This document uses the definition of indicator provided by [RFC4949]. Some examples of indicator information is provided below, but note that indicator is defined in an abstract sense, to be understood as a flexible and widely-applicable definition.
This list is intended to provide examples of the indicator information-type, not to define it.
This document does not contain any additional requirements for the rolie:format element; the formats that follow are provided as examples of formats that describe the incident and indicator information type. The formats are in no particular order, and are not requirements, nor suggestions by the authors.
The Incident Object Description Exchange Format (IODEF) is a format for representing computer security information commonly exchanged between Computer Security Incident Response Teams (CSIRTs) or other operational security teams.
IODEF conveys indicators, incident reports, response activities, and related meta-data in an XML serialization. This information is formally structured in order to support and encourage automated machine-to-machine security communication, as well as enhanced processing at the endpoint.
The full IODEF specification provides further high-level discussion and technical details.
The use of the IODEF format imposes additional requirements on the server.
STIX is a structured language for describing a wide range of security resources. STIX approaches the problem with a focus on flexibility, automation, readability, and extensibility.
The use of STIX as the content of an Entry does not impose any additional requirements on ROLIE implementations.
This document provides new registrations for valid rolie:property names. These properties provide optional exposure point for valuable information in the linked content document. Exposing this information in a rolie:property element means that clients do not need to download the linked document to determine if it contains the information they are looking for.
Provides an exposure point for an identifier from the indicator or incident document. This value SHOULD be a uniquely identifying value for the document linked to in this entry's atom:content element.
These sections define requirements for atom:link elements in Entries. Note that the requirements are determined by the information type that appears in either the Entry or in the parent Feed.
If the category of an Entry is the incident information type, then the following requirements MUST be followed for inclusion of atom:link elements.
Name | Description | Conformance |
---|---|---|
indicators | Provides a link to a collection of zero or more instances of cyber security indicators that are associated with the resource. | SHOULD |
evidence | Provides a link to a collection of zero or more resources that provides some proof of attribution for an incident. The evidence may or may not have any identified chain of custody. | SHOULD |
attacker | Provides a link to a collection of zero or more resources that provides a representation of the attacker. | SHOULD |
vector | Provides a link to a collection of zero or more resources that provides a representation of the method used by the attacker. | SHOULD |
If the category of an Entry is the indicator information type, then the following requirements MUST be followed for inclusion of atom:link elements.
Name | Description | Conformance |
---|---|---|
incidents | Provides a link to a collection of zero or more instances of incident representations associated with the resource. | SHOULD |
If the category of an Entry is either information-type, the following requirements MUST be followed for inclusion of atom:link elements.
Name | Description | Conformance |
---|---|---|
assessments | Provides a link to a collection of zero or more resources that represent the results of executing a benchmark. | MAY |
reports | Provides a link to a collection of zero or more resources that represent RID reports. | MAY |
traceRequests | Provides a link to a collection of zero or more resources that represent RID traceRequests. | MAY |
investigationRequests | Provides a link to a collection of zero or more resources that represent RID investigationRequests. | MAY |
This document defines additional extensions as follows:
This document registers two additional valid atom:category names: 'urn:ietf:params:rolie:category:csirt:iodef:purpose' and 'urn:ietf:params:rolie:category:csirt:iodef:restriction'. This IODEF content exposure provides valuable metadata for the searching and organization of IODEF documents.
When the name attribute of the category is 'urn:ietf:params:rolie:category:csirt:iodef:purpose', the value attribute MUST be constrained as per section 3.2 of IODEF, e.g. traceback, mitigation, reporting, or other.
When the name attribute of the category is 'urn:ietf:params:rolie:category:csirt:iodef:restriction', the value attribute MUST be constrained as per section 3.2 of IODEF, e.g. public, need-to-know, private, default.
It is frequently the case that an organization will need to triage their investigation and response activities based upon, e.g., the state of the current threat environment, or simply as a result of having limited resources.
In order to enable operators to effectively prioritize their response activity, it is RECOMMENDED that feed implementers provide Atom categories that correspond to the IODEF Expectation and Impact classes. The availability of these feed categories will enable clients to more easily retrieve and prioritize cyber security information that has already been identified as having a specific potential impact, or having a specific expectation.
Support for these categories may also enable efficiencies for organizations that already have established (or plan to establish) operational processes and workflows that are based on these IODEF classes.
IANA has added the following entries to the "ROLIE Security Resource Information Type Sub-Registry" registry located at <https://www.iana.org/assignments/rolie/category/information-type> .
The entry is as follows:
The entry is as follows:
IANA has added the following entries to the "ROLIE URN Parameters" registry located in <https://www.iana.org/assignments/rolie/>.
The entry is as follows:
The entry is as follows:
IANA has added the following entries to the "ROLIE URN Parameters" registry located in <https://www.iana.org/assignments/rolie/>.
The entry is as follows:
This document implies the use of ROLIE in high-security use cases, as such, added care should be taken to fortify and secure ROLIE repositories and clients using this extension. The guidance in the ROLIE core specification is strongly recommended, and implementers should consider adding additional security measures as they see fit.
When providing a private workspace for closed sharing, it is recommended that the ROLIE repository checks user authorization when the user sends a GET request to the service document. If the user is not authorized to send any requests to a given workspace or collection, that workspace or collection should be truncated from the service document in the response. In this way the existence of unauthorized content remains unknown to potential attackers, hopefully reducing attack surface.
[I-D.ietf-mile-rolie] | Field, J., Banghart, S. and D. Waltermire, "Resource-Oriented Lightweight Information Exchange", Internet-Draft draft-ietf-mile-rolie-10, September 2017. |
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997. |
[RFC4949] | Shirey, R., "Internet Security Glossary, Version 2", FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007. |
[RFC5070] | Danyliw, R., Meijer, J. and Y. Demchenko, "The Incident Object Description Exchange Format", RFC 5070, DOI 10.17487/RFC5070, December 2007. |
The following provide examples of some potential use cases of the CSIRT ROLIE extension, and provides a showcase for some of its benefits over traditional solutions.
The general non-normative examples provided in the core ROLIE document remain an excellent reference resource for typical ROLIE usage.
A key benefit of using the RESTful architectural style is the ability to enable the client to navigate to related resources through the use of hypermedia links. In the Atom Syndication Format, the type of the related resource identified in a <link> element is indicated via the "rel" attribute, where the value of this attribute identifies the kind of related resource available at the corresponding "href" attribute. Thus, in lieu of a well-known URI template the URI itself is effectively opaque to the client, and therefore the client must understand the semantic meaning of the "rel" attribute in order to successfully navigate. Broad interoperability may be based upon a sharing consortium defining a well-known set of Atom Link Relation types. These Link Relation types may either be registered with IANA, or held in a private registry.
Individual CSIRTs may always define their own link relation types in order to support specific use cases, however support for a core set of well-known link relation types is encouraged as this will maximize interoperability.
In addition, it may be beneficial to define use case profiles that correspond to specific groupings of supported link relationship types. In this way, a CSIRT may unambiguously specify the classes of use cases for which a client can expect to find support.
The following sections provide non-normative examples of link relation usage. Three distinct cyber security information sharing use case scenarios are described. In each use case, the unique benefits of adopting a resource-oriented approach to information sharing are illustrated. It is important to note that these use cases are intended to be a small representative set and is by no means meant to be an exhaustive list. The intent is to illustrate how the use of link relationship types will enable this resource-oriented approach to cyber security information sharing to successfully support the complete range of existing use cases, and also to motivate an initial list of well-defined link relationship types.
This section provides a non-normative example of an incident sharing use case.
In this use case, a member CSIRT shares incident information with another member CSIRT in the same consortium. The client CSIRT retrieves a feed of incidents, and is able to identify one particular entry of interest. The client then does an HTTP GET on that entry, and the representation of that resource contains link relationships for both the associated "indicators" and the incident "history", and so on. The client CSIRT recognizes that some of the indicator and history may be relevant within her local environment, and can respond proactively.
Example HTTP GET response for an incident entry:
<?xml version="1.0" encoding="UTF-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0"> <id>http://www.example.org/csirt/private/incidents/123456</id> <title>Sample Incident</title> <link href="http://www.example.org/csirt/private/incidents/123456" rel="self"/> <link href="http://www.example.org/csirt/private/incidents/123456" rel="alternate"/> <published>2012-08-04T18:13:51.0Z</published> <updated>2012-08-05T18:13:51.0Z</updated> <link href="http://www.example.org/csirt/private/incidents/123456" rel="edit"/> <!-- The links to indicators related to this incident, and the history of this incident, and so on.... --> <link href="http://www.example.org/csirt/private/incidents/123456 /relationships/indicators" rel="indicators"/> <link href="http://www.example.org/csirt/private/incidents/123456 /relationships/history" rel="history"/> <link href="http://www.example.org/csirt/private/incidents/123456 /relationships/campaign" rel="campaign"/> <!-- navigate up to the full collection. Might also be rel="collection" as per IANA registry --> <link href="http://www.example.org/csirt/private/incidents" rel="up"/> <rolie:format ns="urn:example:iodef"/> <content type="application/xml" src="example.org/123456/source"> <!-- Content provided here as example, the content tag is only a link to this file. --> <iodef:IODEF-Document lang="en" xmlns:iodef="urn:ietf:params:xml:ns:iodef-1.0"> <iodef:Incident purpose="traceback" restriction="need-to-know"> <iodef:IncidentID name="http://www.example.org/csirt/private/ incidents">123456</iodef:IncidentID> <!-- ...additional incident data.... --> </iodef:Incident> </iodef:IODEF-Document> </content> </entry>
As can be seen in the example response, the Atom <link> elements enable the client to navigate to the related indicator resources, and/or the history entries associated with this incident.
This section provides a non-normative example of a collaborative investigation use case.
In this use case, two member CSIRTs that belong to a closed sharing consortium are collaborating on an incident investigation. The initiating CSIRT performs an HTTP GET to retrieve the service document of the peer CSIRT, and determines the collection name to be used for creating a new investigation request. The initiating CSIRT then POSTs a new incident entry to the appropriate collection URL. The target CSIRT acknowledges the request by responding with an HTTP status code 201 Created.
Example HTTP GET response for the service document:
HTTP/1.1 200 OK Date: Fri, 24 Aug 2012 17:09:11 GMT Content-Length: 934 Content-Type: application/atomsvc+xml;charset="utf-8" <?xml version="1.0" encoding="UTF-8"?> <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom"> <workspace xml:lang="en-US" xmlns:xml="http://www.w3.org/XML/1998/namespace"> <atom:title type="text">RID Use Case Requests</atom:title> <collection href="http://www.example.org/csirt/RID/InvestigationRequests"> <atom:title type="text">Investigation Requests</atom:title> <accept>application/atom+xml; type=entry</accept> </collection> <collection href="http://www.example.org/csirt/RID/TraceRequests"> <atom:title type="text">Trace Requests</atom:title> <accept>application/atom+xml; type=entry</accept> </collection> <!-- ...and so on.... --> </workspace> </service>
As can be seen in the example response, the Atom <collection> elements enable the client to determine the appropriate collection URL to request an investigation or a trace.
The client CSIRT then POSTs a new entry to the appropriate feed collection. Note that the <content> element of the new entry may contain a RID message of type "InvestigationRequest" if desired, however this would NOT be required. The entry content itself need only be an IODEF document, with the choice of the target collection resource URL indicating the callers intent. A CSIRT would be free to use any URI template to accept investigationRequests.
POST /csirt/RID/InvestigationRequests HTTP/1.1 Host: www.example.org Content-Type: application/atom+xml;type=entry Content-Length: 852 <?xml version="1.0" encoding="UTF-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0"> <title>New Investigation Request</title> <id>http://www.example2.org/csirt/private/incidents/123456</id> <!-- id and updated not guranteed to be preserved --> <!-- may want to profile that behavior in this document --> <updated>2012-08-12T11:08:22Z</updated> <author><name>Name of peer CSIRT</name></author> <rolie:format ns="urn:example:iodef"/> <content type="application/xml"> <iodef:IODEF-Document lang="en" xmlns:iodef="urn:ietf:params:xml:ns:iodef-1.0"> <iodef:Incident purpose="traceback" restriction="need-to-know"> <iodef:IncidentID name="http://www.example2.org/csirt/ private/incidents">123</iodef:IncidentID> <!-- ...additional incident data.... --> </iodef:Incident> </iodef:IODEF-Document> </content> </entry>
The receiving CSIRT acknowledges the request with HTTP return code 201 Created.
HTTP/1.1 201 Created Date: Fri, 24 Aug 2012 19:17:11 GMT Content-Length: 906 Content-Type: application/atom+xml;type=entry Location: http://www.example.org/csirt/RID/InvestigationRequests/823 ETag: "8a9h9he4qphqh" <?xml version="1.0" encoding="UTF-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0"> <title>New Investigation Request</title> <id>http://www.example.org/csirt/RID/InvestigationRequests/823</id> <!-- id and updated not guranteed to be preserved --> <!-- may want to profile that behavior in this document --> <updated>2012-08-12T11:08:30Z</updated> <published>2012-08-12T11:08:30Z</published> <author><name>Name of peer CSIRT</name></author> <rolie:format ns="urn:example:iodef"/> <content type="application/xml"> <iodef:IODEF-Document lang="en" xmlns:iodef="urn:ietf:params:xml:ns:iodef-1.0"> <iodef:Incident purpose="traceback" restriction="need-to-know"> <iodef:IncidentID name="http://www.example.org/csirt/private /incidents">123</iodef:IncidentID> <!-- ...additional incident data.... --> </iodef:Incident> </iodef:IODEF-Document> </content> </entry>
Consistent with HTTP/1.1 RFC, the location header indicates the URL of the newly created InvestigationRequest. If for some reason the request were not authorized, the client would receive an HTTP status code 403 Unauthorized. In this case the HTTP response body may contain additional details, if an as appropriate.
This section provides a non-normative example of a cyber security data repository use case.
In this use case a client accesses a persistent repository of cyber security data via a RESTful usage model. Retrieving a feed collection is analogous to an SQL SELECT statement producing a result set. Retrieving an individual Atom Entry is analogous to a SQL SELECT statement based upon a primary key producing a unique record. The cyber security data contained in the repository may include different data types, including indicators, incidents, benchmarks, or any other related resources. In this use case, the repository is queried via HTTP GET, and the results that are returned to the client may optionally contain URL references to other cyber security resources that are known to be related. These related resources may also be persisted locally, or they may exist at another (remote) cyber data respository.
Example HTTP GET request to a persistent repository for any resources representing Distributed Denial of Service (DDOS) attacks:
GET /csirt/repository/ddos Host: www.example.org Accept: application/atom+xml
The corresponding HTTP response would be an XML document containing the DDOS feed.
Example HTTP GET response for a DDOS feed:
HTTP/1.1 200 OK Date: Fri, 24 Aug 2012 17:20:11 GMT Content-Length: nnnn Content-Type: application/atom+xml;type=feed;charset="utf-8" <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2005/Atom file:/C:/schemas/atom.xsd urn:ietf:params:xml:ns:iodef-1.0 file:/C:/schemas/iodef-1.0.xsd" xml:lang="en-US"> <generator version="1.0" xml:lang="en-US"> emc-csirt-iodef-feed-service</generator> <id>http://www.example.org/csirt/repository/ddos</id> <title type="text" xml:lang="en-US"> Atom formatted representation of a feed of known ddos resources. </title> <updated xml:lang="en-US">2012-05-04T18:13:51.0Z</updated> <author> <email>csirt@example.org</email> <name>EMC CSIRT</name> </author> <!-- By convention there is usually a self link for the feed --> <link href="http://www.example.org/csirt/repository/ddos" rel="self"/> <entry> <id>http://www.example.org/csirt/repository/ddos/123456</id> <title>Sample DDOS Incident</title> <link href="http://www.example.org/csirt/repository/ddos/123456" rel="self"/> <!-- by convention --> <link href="http://www.example.org/csirt/repository/ddos/123456" rel="alternate"/> <!-- required by Atom spec --> <link href="http://www.example.org/csirt/repository/ddos/987654" rel="related"/> <!-- link to a related DDOS resource in this repository --> <link href="http://www.cyber-agency.gov/repository/ indicators/1a2b3c" rel="related"/> <!-- link to a related DDOS resource in another repository --> <published>2012-08-04T18:13:51.0Z</published> <updated>2012-08-05T18:13:51.0Z</updated> <!-- The category is based upon IODEF purpose and restriction attributes --> <category term="traceback" scheme="purpose" label="trace back"/> <category term="need-to-know" scheme="restriction" label="need to know" /> <category term="ddos" scheme="ttp" label="tactics, techniques, and procedures"/> <summary>A short description of this DDOS attack, extracted from the IODEF Incident class, <description> element. </summary> <rolie:format ns="urn:example:iodef"/> <content href="http://www.example.org/ddos/123456/data"/> </entry> <entry> <!-- ...another entry... --> </entry> </feed>
This feed document has two atom entries, one of which has been elided. The completed entry illustrates an Atom <entry> element that provides a summary of essential details about one particular DDOS incident. Based upon this summary information and the provided category information, a client may choose to do an HTTP GET operation to retrieve the full details of the DDOS incident. This example shows how a persistent repository may provide links to additional resources, both local and remote.
Note that the provider of a persistent repostory is not obligated to follow any particular URL template scheme. The repository available at the hypothetical provider "www.example.com" uses a different URL pattern than the hypothetical repository available at "www.cyber-agency.gov". When a client de-references a link to resource that is located in a remote repository the client may be challenged for authentication credentials acceptable to that provider. If the two repository providers choose to support a federated identity scheme or some other form of single-sign-on technology, then the user experience can be improved for interactive clients (e.g., a human user at a browser). However, this is not required and is an implementation choice that is out of scope for this specification.