mirror of https://github.com/MISP/misp-rfc
chg: [sightingDB] ascii output added
parent
0e2a6130ba
commit
c49f77fed9
|
@ -0,0 +1,336 @@
|
|||
|
||||
|
||||
|
||||
|
||||
Network Working Group S. Tricaud
|
||||
Internet-Draft Devo Inc.
|
||||
Intended status: Informational November 3, 2019
|
||||
Expires: May 6, 2020
|
||||
|
||||
|
||||
SightingDB query format
|
||||
draft-tricaud-sightingdb-format
|
||||
|
||||
Abstract
|
||||
|
||||
This document describes the format used by SightingDB to give
|
||||
automated context to a given Attribute by counting occurrences and
|
||||
tracking times of observability. SightingDB was designed to provide
|
||||
to MISP a Scalable and Fast way to store and retrieve Attributes.
|
||||
|
||||
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 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 6, 2020.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (c) 2019 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. Code Components extracted from this document must
|
||||
include Simplified BSD License text as described in Section 4.e of
|
||||
the Trust Legal Provisions and are provided without warranty as
|
||||
described in the Simplified BSD License.
|
||||
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 1]
|
||||
|
||||
Internet-Draft SightingDB query format November 2019
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
1.1. Conventions and Terminology . . . . . . . . . . . . . . . 2
|
||||
2. Format . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
2.1.1. Attribute Storage . . . . . . . . . . . . . . . . . . 2
|
||||
2.1.2. Namespace . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2.1.3. Attribute fields . . . . . . . . . . . . . . . . . . 3
|
||||
2.2. SightingDB Format - One Attribute . . . . . . . . . . . . 4
|
||||
3. Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
3.1. Configuring the value format for a Namespace . . . . . . 5
|
||||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 5
|
||||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
6. Normative References . . . . . . . . . . . . . . . . . . . . 6
|
||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
|
||||
|
||||
1. Introduction
|
||||
|
||||
Adding context to any Attribute is the key that makes it useful.
|
||||
While there exist numerous ways of doing it, SightingDB does it by
|
||||
just counting. Whenever somebody retrieves an Attribute, this
|
||||
counting is provided, allowing anyone to understand whenever
|
||||
something was observed few or many times.
|
||||
|
||||
1.1. Conventions and 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 RFC 2119 [RFC2119].
|
||||
|
||||
2. Format
|
||||
|
||||
2.1. Overview
|
||||
|
||||
The SightingDB format is in JSON [RFC8259] format and used to query a
|
||||
SightingDB compatible connector. In SightingDB, a Sighting Object is
|
||||
composed of a single JSON object. This object contains the following
|
||||
fields: value, first_seen, last_seen, count, tags, ttl, frequency and
|
||||
manifold.
|
||||
|
||||
2.1.1. Attribute Storage
|
||||
|
||||
The fields described previously describe an Attribute and all the
|
||||
required characteristics. However they are stored in a Namespace. A
|
||||
Namespace is similar to a path in a file-system where the same file
|
||||
can be stored in multiple places.
|
||||
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 2]
|
||||
|
||||
Internet-Draft SightingDB query format November 2019
|
||||
|
||||
|
||||
2.1.2. Namespace
|
||||
|
||||
A Namespace with multiple levels MUST be separated with the slash '/'
|
||||
character. There is no specification on how they are structured,
|
||||
since it depends on the use cases.
|
||||
|
||||
A Namespace starting with the underscore '_' character means it is
|
||||
private and internal to SightingDB. There are all reserved for the
|
||||
engine and MUST NOT be used.
|
||||
|
||||
Reserved namespaces are: _expired/: Which contains all the attributes
|
||||
that expired, preserving the origin namespace _shadow/: When a value
|
||||
is searched and does not exists, it is stored there _stats:
|
||||
Statistics _config: Configuration _all: All the Attributes in one
|
||||
place, used to retrieve the 'manifold' property.
|
||||
|
||||
The Attribute Key MUST always be the last part of the Namespace.
|
||||
|
||||
2.1.2.1. Sample Namespaces
|
||||
|
||||
/Organization1/service/ipv4: Store values for ipv4 keys in
|
||||
/Organization1/service /everything/domain: Store domains in
|
||||
/everything
|
||||
|
||||
2.1.3. Attribute fields
|
||||
|
||||
2.1.3.1. value
|
||||
|
||||
The attribute value, used to store and retrieve information about an
|
||||
attribute. Note that value is not returned back in the JSON object,
|
||||
since it is queried, it is known. The Value is described in a
|
||||
section below, as it is very specific and can be either "as is", a
|
||||
hash, encoded in base64 or any other convenient mechanism.
|
||||
|
||||
The value implementation MUST offer at least: 1) Raw value 2) Base64
|
||||
URL Encoded 3) SHA256 Hash
|
||||
|
||||
2.1.3.2. first_seen
|
||||
|
||||
Time in UTC of the first time this value was captured
|
||||
|
||||
2.1.3.3. last_seen
|
||||
|
||||
Time in UTC of the last time this value was captured
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 3]
|
||||
|
||||
Internet-Draft SightingDB query format November 2019
|
||||
|
||||
|
||||
2.1.3.4. count
|
||||
|
||||
How many time this value was written
|
||||
|
||||
2.1.3.5. tags
|
||||
|
||||
Tags follow how they are defined in MISP using the MISP Taxonomy.
|
||||
Each Tag is separated with the ';' character.
|
||||
|
||||
2.1.3.6. ttl
|
||||
|
||||
Time To Live, represents the expiration in seconds since the time the
|
||||
Attribute was created. Once it has expired, it moves in the private
|
||||
Namespace _expired.
|
||||
|
||||
When an Attribute has this field set to 0, it means it is not set to
|
||||
expired. This is the default behavior.
|
||||
|
||||
When an Attribute has this field set to a number greater than 0, the
|
||||
expiration status is computed only at retrieval time.
|
||||
|
||||
2.1.3.7. frequency
|
||||
|
||||
Frequency is the number of time an Attribute is seen in average per
|
||||
day. As this field can introduced latence, its implementation is
|
||||
OPTIONAL.
|
||||
|
||||
2.1.3.8. manifold
|
||||
|
||||
When a given Attribute Value is stored in different namespaces, the
|
||||
manifold field keeps track of them so it returns in how many
|
||||
different places this attributes exists. This is a simple counter.
|
||||
|
||||
2.2. SightingDB Format - One Attribute
|
||||
|
||||
{
|
||||
"value":"127.0.0.1",
|
||||
"first_seen":1530394819,
|
||||
"last_seen":1572933618,
|
||||
"count":578391,
|
||||
"tags":"",
|
||||
"ttl":0,
|
||||
"frequency":1185,
|
||||
"manifold": 17
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 4]
|
||||
|
||||
Internet-Draft SightingDB query format November 2019
|
||||
|
||||
|
||||
3. Value
|
||||
|
||||
The value submitted can be in multiple format according to the use-
|
||||
case. Any implementation MUST offer three alternatives:
|
||||
|
||||
1. Raw value: where nothing is encoded and the value is stored AS
|
||||
IS, such as show in the example above with the One Attribute in
|
||||
JSON.
|
||||
|
||||
2. SHA256: which prevents from seeing content (see Security
|
||||
Considerations), has a fixed size and is convenient for most
|
||||
requirements
|
||||
|
||||
3. Base64 URL: Where the specification of Base64 is followed, except
|
||||
the characters conflicting with an URL argument are replaced
|
||||
|
||||
The value is configured as part of the Namespace. The private
|
||||
"_config" Namespace prefix stores this value storage mechanism.
|
||||
|
||||
3.1. Configuring the value format for a Namespace
|
||||
|
||||
If one has the Namespace "/Organization1/BU1/ip" and want to store
|
||||
those IP addresses in SHA256, it will be configured like this: The
|
||||
Namespace is kept but prefixed by "_config" and has a json object
|
||||
about value format set. "/_config/Organization1/BU1/ip"
|
||||
|
||||
{
|
||||
"value_format":"SHA256"
|
||||
}
|
||||
|
||||
Where "value_format" is either: "SHA256", "RAW" or "BASE64URL".
|
||||
|
||||
4. Security Considerations
|
||||
|
||||
While this document solely focuses on the format, the reference
|
||||
implementation is SightingDB. The authentication, the data access is
|
||||
not handled by SightingDB. It is possible a value can leak if the
|
||||
access is too permissive.
|
||||
|
||||
Even a Hashed value can be discovered, as re-hashing known values
|
||||
would match.
|
||||
|
||||
5. Acknowledgements
|
||||
|
||||
The author wish to thank all the MISP community who are supporting
|
||||
the creation of open standards in threat intelligence sharing. As
|
||||
well as amazing feedback gathered during the MISP Summit 2019 in
|
||||
Luxembourg, in particular with Alexandre Dulaunoy and Andras Iklody.
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 5]
|
||||
|
||||
Internet-Draft SightingDB query format November 2019
|
||||
|
||||
|
||||
6. Normative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119,
|
||||
DOI 10.17487/RFC2119, March 1997,
|
||||
<https://www.rfc-editor.org/info/rfc2119>.
|
||||
|
||||
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
|
||||
Interchange Format", STD 90, RFC 8259,
|
||||
DOI 10.17487/RFC8259, December 2017,
|
||||
<https://www.rfc-editor.org/info/rfc8259>.
|
||||
|
||||
Author's Address
|
||||
|
||||
Sebastien Tricaud
|
||||
Devo Inc.
|
||||
150 Cambridgepark Drive
|
||||
Cambridge, MA 02140
|
||||
USA
|
||||
|
||||
Phone: +1 866-221-2254
|
||||
Email: sebastien.tricaud@devo.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Tricaud Expires May 6, 2020 [Page 6]
|
Loading…
Reference in New Issue