INCH Working Group J.J. Meijer INTERNET-DRAFT SURFnet bv Expires in six months R. Danyliw CERT Coordination Center Y. Demchenko TERENA October 2002 Incident Object Description and Exchange Format Data Model and Extensible Markup Language (XML) Document Type Definition <draft-ietf-inch-iodef-00.txt> Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Distribution of this memo is unlimited. This Internet Draft expires March, 2003. Copyright Notice Copyright (C) The Internet Society (2001). All Rights Reserved. Abstract The purpose of the Incident Object Description and Exchange Format is to define a common data format for describing and exchanging incident information between collaborating Computer Security Incident Response Teams (CSIRTs). The specific goals and requirements of the IODEF are described in [2]. One of the design principles in the IODEF is compatibility with the Intrusion Detection Message Exchange Format (IDMEF) [3] developed for intrusion detection systems. For this reason, IODEF is heavily based on the IDMEF and provides upward compatibility with it. Meijer, et al. Expires March 2003 [page 1]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 This document describes a data model for representing information produced by incident handling systems managing security incident data, and explains the rationale for using this model. An implementation of the data model in the Extensible Markup Language (XML) is presented, an XML Document Type Definition is developed, and examples are provided. TABLE OF CONTENTS 1. Conventions Used in This Document................................4 2. Introduction ....................................................4 2.1 IODEF Data MOdel Design principles...........................5 2.1.1 Problems Addressed by the Data Model ...................5 2.1.2 Data Model Design Goals ................................6 2.2 Using XML for the IODEF .....................................7 2.3 Relation between IODEF and IDMEF ............................8 3. Notational Conventions and Formatting Issues ....................8 3.1 UML Conventions used for Data Model Description .............8 3.1.1 Relationships...........................................9 3.1.2 Occurrence Indicators..................................10 3.2 XML Document Type Definitions ..............................11 3.3 XML Documents ..............................................11 3.3.1 The Document Prolog ...................................11 3.3.1.1 XML Declaration ..................................11 3.3.1.2 IODEF DTD Formal Public Identifier ...............12 3.3.1.3 IODEF DTD Document Type Declaration ..............12 3.3.2 Character Data Processing in XML and IODEF ............13 3.3.2.1 Character Entity References.......................13 3.3.2.2 Character Code References.........................14 3.3.2.3 White Space Processing............................14 3.3.3 Languages in XML and IODEF ............................15 3.3.4 Inheritance and Aggregation ...........................12 3.4 IODEF Data Types ............................................15 3.4.1 Integers ..............................................15 3.4.2 Real Numbers ..........................................15 3.4.3 Characters and Strings ................................15 3.4.4 Bytes .................................................15 3.4.5 Enumerated Types ......................................18 3.4.6 Date-Time Strings .....................................18 3.4.7 NTP Timestamps ........................................20 3.4.8 Port Lists ............................................20 3.4.9 Unique Identifiers ....................................21 3.4.10 Personal names........................................22 3.4.11 Organization name.....................................22 3.4.12 Postal address........................................22 Meijer, et al. Expires March 2003 [page 2]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 3.4.13 Telephone and Fax numbers.............................22 4. The IODEF Data Model and XML DTD................................23 4.1 Data Model Overview.........................................23 4.2 The IODEF-Description Class.................................26 4.3 The Incident Class..........................................26 4.4 The CorrelationIncident Class...............................30 4.4.1 The EventList Class....................................31 4.5 The IncidentAlert Class.....................................32 4.6 The Attack Class............................................33 4.6.1 The Source Class.......................................35 4.6.2 The Node Class.........................................38 4.6.2.1 The Address Class.................................39 4.6.2.2 The NodeRole Class................................41 4.6.3 The User Class.........................................43 4.6.3.1 The UserId Class..................................44 4.6.4 The Process Class......................................46 4.6.5 The Service Class......................................47 4.6.5.1 The WebService Class..............................49 4.6.5.2 The SNMPService Class.............................50 4.6.6 The Target Class.......................................51 4.6.7 The FileList Class.....................................53 4.6.7.1 The File Class....................................54 4.6.7.2 The FileAccess Class..............................57 4.6.7.3 The Linkage Class.................................58 4.6.7.4 The Inode Class...................................60 4.6.8 The Description Class..................................62 4.6.9 The DetectTime Class...................................62 4.6.10 The StartTime Class...................................62 4.6.10 The EndTime Class.....................................63 4.7 The Method Class............................................63 4.7.1 The Classification Class...............................64 4.8 The Attacker Class..........................................65 4.8.1 The Contact Class......................................67 4.8.2 The IRTcontact Class...................................68 4.9 The Victim Class............................................69 4.10 The Record Class...........................................70 4.10.1 The RecordData Class..................................71 4.10.2 The CorrRecord Class..................................72 4.10.3 The RecordDesc Class..................................73 4.10.4 The Analyzer Class....................................73 4.10.5 The RecordItem Class..................................75 4.11 The AdditionalData Class...................................76 4.12 The History Class..........................................78 4.12.1 The HistoryItem class.................................79 4.12.2 The DateTime Class....................................80 4.13 The Assessment Class.......................................80 4.13.1 The Impact Class......................................81 4.13.2 The Action Class......................................83 4.13.3 The Confidence Class..................................84 Meijer, et al. Expires March 2003 [page 3]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4.14 The Authority Class........................................85 4.14.1 The Organization......................................86 5. Extending the IODEF ............................................89 5.1 Extending the Data Model ...................................88 5.2 Extending the XML DTD ......................................88 6. Special Considerations .........................................90 6.1 XML Validity and Well-Formedness ...........................90 6.2 Unrecognized XML Tags ......................................91 6.3 Digital Signatures .........................................92 7. Examples .......................................................92 8. The IODEF Document Type Definition .............................93 9. References ....................................................112 10. Security Considerations ......................................114 11. IANA Considerations ..........................................114 12. Acknowledgements .............................................114 13. Authors' Addresses ...........................................114 14. Full Copyright Statement .....................................115 1. Conventions Used in This Document 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 [2]. Network and Computer Security related terminology used in this documents is of common use, however it contains some specific conventions described in [2] and [4]. 2. Introduction The Incident Object Description and Exchange Format (IODEF) is a format for Computer Security Incident Response Teams (CSIRTs) to exchange operational and statistical incident information among themselves, their constituency, and their collaborators. It can also provide the basis for the development of interoperable tools and procedures for incident reporting. By using the IODEF in their workflow and incident handling system, an organization can benefit from: + a single data schema that can represent information from a variety of subordinate teams or CSIRTs; + a common incident data format that facilities collaboration among affected members of the security community (e.g. users, vendors, response teams, law enforcement); Meijer, et al. Expires March 2003 [page 4]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 + the simplification in building an incident correlation and statistics system that process incident reports from different CSIRTs. The computer security related terminology used in this document is described in [1] and [4]. Specific terminology, notation, and conventions of the data model and XML DTD are presented in Sections 3 and 4. The data model is described in Section 5 with examples of its use in Section 8. Recognizing the potentially diverse user-base implementing the IODEF, Section 6 discusses the ability to extend the model. 2.1 IODEF Data Model Design principles The IODEF data model is an object-oriented representation of information reported and maintained by a CSIRT about a computer security incident. 2.1.1 Problems Addressed by the Data Model The data model addresses several problems in representing incident data: + Incident data is inherently heterogeneous. It may encompass many functional purposes such as a description of intruder behavior or an analysis process correlating related incidents. However, even in a single type of incident, seemingly disparate information from many sources may need to be represented. This representation of the data is further complicated by the fact that incidents may consist of varying levels of detail depending on their stage in the lifecycle. For example, newly reported incidents may only contain a short description of the involved parties. On the other hand, closed incidents can contain a full description complete with the associated evidence and annotation of actions taken by the CSIRT. The data model that represents this information must be flexible to accommodate different needs. An object-oriented model provides extensible via aggregation and sub-classing while preserving the consistency of the model. If the data model required modification, it is extended with new classes. In implementations that do not recognize these extensions, the basic subset of the data Meijer, et al. Expires March 2003 [page 5]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 model will still be understood. In order to address the various types of incidents, the IODEF data model creates top-level classes for each of the different incident profiles. Just as another other extensions to the data model, creating new profiles is possible through sub-classing or aggregation based on the core and supportive classes. + From the purview of a CSIRT, incident information can originate from a number of sources. The data model defines support classes that accommodate the differences between incident reporters. This support includes various meta information to represent the reporter's identity as well as prescribe a confidence level to the submitted information. + Incidents may contain sensitive information. Such information should not be exposed to unauthorized parties during collaboration. The data model allows for a highly granular level of tagging in the individual classes to indication restrictions on the usage of the data. However, it is the role of the incident handling system implementing the data model to honor these labels. 2.1.2 Data Model Design Goals In addition to satisfying the explicit requirements found in RFCXXX [2], the IODEF data model is designed with the following goals: + The data model is content-driven. This design dictates that new representations are introduced only to accommodate new types of data, not semantic differences between incidents. + Since organizations may define an incident in different ways, the data model avoids implicitly relying on a single definition of an incident. Rather, it is designed to be flexible enough to accomodate a range of understandings in what constitutes incident activity. + Where security-related, XML work already exist (e.g., IDMEF [3]), the data model will provide support for them. Meijer, et al. Expires March 2003 [page 6]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 2.2 Using XML for the IODEF The IODEF implementation is based on the Extensible Markup Language (XML). XML-based applications define their own XML DTD or Schema and register a specific XML namespace [6]. The IODEF conforms to the IETF-defined procedure for registering an application-specific XML namespace [9]. NOTE: For clarity in this document, we will use the terms "XML" and "XML documents" when speaking in the general case about the Extensible Markup Language (XML). The terms "IODEF description", "IODEF markup" and "IODEF document" will be used to refer to specific elements (tags) and attributes of the IODEF DTD. Furthermore, the terms "class" and "subclass" are synonymous to an element in the XML DTD. The implementation of the IODEF in XML has many benefits: + XML provides all the necessary features to define a specific markup language for describing security incidents. It also defines a standard way to extend this language, either for later revisions ("standard" extensions), or for vendor-specific use ("non-standard" extensions). + Software tools for processing XML documents are widely available in commercial and open source forms. + XML can provide support for full internationalization and localization since it is required (and therefore IODEF documents are required) to support both the UTF-8 and UTF-16 encodings of ISO/IEC 10646 (Universal Multiple-Octet Coded Character Set, "UCS") and Unicode. XML also provides support for specifying, on a per-element basis, the language in which the element's content is written, making the IODEF easy to adapt to the local languages in which a CSIRTs operates. + XML coupled with XSL, a style language, allows IODEF documents to be aggregated, filtered, discarded, and rearranged. + XML is free (no license, license fees or royalties). 2.3 Relationship between the IODEF and the IDMEF The IODEF and the IDMEF [3] are complementary formats. The latter represents data generated by an intrusion detection system. Such Meijer, et al. Expires March 2003 [page 7]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 event data is commonly used by a CSIRT as the basis for an incident report or investigation which is represented by the IODEF. The IODEF data model makes use of certain classes defined in the IDMEF, although the semantics of some of these classes has changed. Due to their related nature, the data in an IDMEF message can be easily represented in an IODEF document. Through various extension mechanisms, it is possible to include IDMEF messages outright in an IODEF document. Alternatively, the similarity in structure of the data model makes it possible to decompose the key IDMEF data and include it in the corresponding IODEF classes. However, this transformation may not preserve the original semantics of the data. 3. Notational Conventions and Formatting Issues This document uses three notations: the Unified Modeling Language (UML) to describe the data model, an Extensible Markup Language (XML) Document Type Definition (DTD) to define the IODEF syntax, and IODEF XML markup conforming to the specified DTD to represent the incident data. This section briefly introduces these notations, and explains particular issues related to using them to describe the IODEF data model and syntax. For readers unfamiliar with these notations, [3] and [10] will provide a comprehensive reference. 3.1 Unified Modeling Language conventions used for IODEF Data Model description The IODEF data model is described using the Unified Modeling Language (UML) [10]. UML provides a simple framework to represent entities and their relationships. UML defines entities as classes. In this document, we have identified several classes and their associated attributes. The symbols used in this document to represent classes and attributes are shown in Figure 3.1. +-------------+ | Class Name | <----- Name of class +-------------+ | Attribute 1 | <----- Name of first attribute | ... | | Attribute N | <----- Name of nth attribute +-------------+ Meijer, et al. Expires March 2003 [page 8]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Figure 3.1 - Symbols representing classes and attributes Note that the associated attributes for a class may not appear in all diagrams in which the class is used. 3.1.1 Relationships The IODEF model uses only two of the UML relationship types: inheritance and aggregation. Inheritance denotes a superclass/subclass type of relationship where the subclass inherits all the attributes, operations, and relationships of the superclass. Subclasses may have additional attributes or operations that apply only to the subclass, and not to the superclass. In this document, inheritance is denoted by the /_\ symbol. In Figure 3.2, we are showing that Book and Magazine are two types of Publication. Book inherits all the attributes of Publication, plus all of its own attributes (thus, it has four attributes in total); as does Magazine (giving it three attributes in total). +-------------+ | Publication | +-------------+ | publisher | | pubDate | +-------------+ /_\ | +--------+--------+ | | +----------+ +----------+ | Magazine | | Book | +----------+ +----------+ | name | | title | | | | author | +----------+ +----------+ Figure 3.2 - Inheritance relationships Aggregation is a form of association in which the whole is related to its parts. In this case, the aggregate class contains all of its own attributes and as many of the attributes associated with its parts as required and Meijer, et al. Expires March 2003 [page 9]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 specified by the occurrence indicators (see Section 3.1.2). In this document, the symbol <> is used to indicate aggregation. It is placed at the end of the association line closest to the aggregate (whole) class. In Figure 4.3, we are showing that a Book is made up of pieces called Preface, Chapter, Appendix, Bibliography, and Index. +----------+ | Book | +----------+ 0..1 +--------------+ | title |<>----------| Preface | | author | +--------------+ | | 1..* +--------------+ | |<>----------| Chapter | | | +--------------+ | | 0..* +--------------+ | |<>----------| Appendix | | | +--------------+ | | 0..1 +--------------+ | |<>----------| Bibliography | | | +--------------+ | | +--------------+ | |<>----------| Index | | | +--------------+ +----------+ Figure 3.3 - Aggregation relationships 3.1.2 Occurrence Indicators Occurrence indicators show the number of objects within a class that are linked to one another by an aggregation relationship. They are placed at the end of the association line closest to the part they refer to. Occurrence indicators, as used in this document, are: n exactly "n" (left blank if n=1) 0..* (in XML, *) zero or more 1..* (in XML, +) one or more 0..1 (in XML, ?) zero or one n..m between "n" and "m" inclusive In Figure 3.3, the Book: + may have no Preface or one Preface; + must have at least one Chapter, but may have more; Meijer, et al. Expires March 2003 [page 10]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 + may have any number of Appendixes; and + must have exactly one Index. 3.2 XML Document Type Definitions XML Document Type Definitions (DTDs) are used to declare the syntax or markup for the IODEF. The different pieces of information the XML document will contain are elements, the characteristics of that information are the attributes, and the relationship between the information is the content model. Section 8 of this document contains the complete IODEF DTD. 3.3 XML Documents This section describes a number of XML document formatting rules; these rules apply to IODEF documents as well. 3.3.1 The Document Prolog The "prolog" of an XML document, that part that precedes anything else, consists of the XML declaration and the document type declaration. 3.3.1.1 XML Declaration Every XML document (and therefore every IODEF document) starts with an XML declaration. The XML declaration specifies the version of XML being used; it may also specify the character encoding being used. The XML declaration looks like: <?xml version="1.0" ?> If a character encoding is specified, the declaration looks like: <?xml version="1.0" encoding="charset" ?> where "charset" is the name of the character encoding in use (see Section 3.3.2). If no encoding is specified, UTF-8 is assumed. IODEF documents being exchanged between Meijer, et al. Expires March 2003 [page 11]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 IODEF-compliant applications MUST begin with an XML declaration, and MUST specify the XML version in use. Specification of the encoding in use is RECOMMENDED. IODEF-compliant applications MAY choose to omit the XML declaration internally to conserve space, adding it only when the message is sent to another destination (e.g., a web browser). This practice is NOT RECOMMENDED unless it can be accomplished without loss of each message's version and encoding information. 3.3.1.2 IODEF DTD Formal Public Identifier The formal public identifier (FPI) for the IODEF Document Type Definition described in this document is: "-//IETF//DTD RFCxxxx IODEF v0.0//EN" NOTE: The "RFCxxxx" text in the FPI value will be replaced with the actual RFC number, if this document is published as an RFC. This FPI MUST be used in the document type declaration within an XML document referencing the IODEF DTD defined by this document, as shown in the following section. 3.3.1.3 IODEF DTD Document Type Declaration The document type declaration for an XML document referencing the IODEF DTD will usually be specified in the following ways: <!DOCTYPE IODEF-Description PUBLIC "-//IETF//DTD RFCxxxx IODEF v0.0//EN"> The last component of the document type declaration is the FPI specified in the previous section. <!DOCTYPE IODEF-Description SYSTEM "/some/path/to/the/IODEF-Description.dtd"> The last component of the document type declaration is a URI that points to a copy of the Document Type Definition. In order to be valid (see Section 7.1), an XML document must contain a document type declaration. However, this requirement imposes a significant overhead on an Meijer, et al. Expires March 2003 [page 12]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 IODEF-compliant application in bandwidth consumption and computation for the DTD may need to be downloaded and parsed before use by the XML parser. Implementers MAY decide to have entities who regularly exchange IODEF message agree out-of-band on the particular document type definition they will be using to exchange messages (the standard one as defined here, or one with extensions), and then omit it from IODEF documents. However, the method for negotiating this agreement is outside the scope of this document. NOTE: Care must be taken in negotiating any such agreements, as each entities will have to keep state on this agreed upon document type definition. The management complexity of these negotiations grows more complex as entities make such arrangements with many collaborators. 3.3.2 Character Data Processing in XML and IODEF A document's XML declaration specifies the character encoding to be used in the document, as follows: <?xml version="1.0" encoding="charset" ?> where "charset" is the name of the character encoding, as registered with the Internet Assigned Numbers Authority (IANA), see [11]. The XML standard requires that XML processors support the UTF-8 and UTF-16 encodings of ISO/IEC 10646 (UCS) and Unicode, making all XML applications (and therefore, all IODEF-compliant applications) compatible with these common character encodings. While XML supports other character encodings (e.g., UTF-7, UTF-32), for portability reasons, IODEF documents SHOULD NOT be encoded in character encodings other than UTF-8 and UTF-16. Consistent with the XML standard, if no encoding is specified for an IODEF document, UTF-8 is assumed. Likewise, IODEF documents encoded in UTF-16 MUST begin with the Byte Order Mark described by ISO/IEC 10646 Annex E and Unicode Appendix B (the "ZERO WIDTH NO-BREAK SPACE" character, #xFEFF). 3.3.2.1 Character Entity References Meijer, et al. Expires March 2003 [page 13]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Within XML documents, certain characters have special meanings in some contexts. To include the actual character itself in one of these contexts, a special escape sequence, called an entity reference, must be used. The characters that sometimes need to be escaped, and their entity references, are: Character Entity Reference --------------------------------- & & < < > > " " ' ' It is RECOMMENDED that IODEF-compliant applications use the entity reference form whenever writing these characters in data, to avoid any possibility of misinterpretation. 3.3.2.2 Character Code References Any character defined by the ISO/IEC 10646 and Unicode standards may be included in an XML document by the use of a character reference. A character reference is started with the characters '&' and '#', and ended with the character ';'. Between these characters, the character code for the character inserted. If the character code is preceded by an 'x' it is interpreted in hexadecimal (base 16), otherwise, it is interpreted in decimal (base 10). For instance, the ampersand (&) is encoded as & or & and the less-than sign (<) is encoded as < or <. Any one-, two-, or four-byte character specified in the ISO/IEC 10646 and Unicode standards can be included in a document using this technique. 3.3.2.3 White Space Processing All IODEF elements support the "xml:space" attribute. If "xml:space" is set to "preserve," the IODEF application MUST treat all white space in the element's content as significant. If "xml:space" is "default," the application is free to do whatever it normally would with white space Meijer, et al. Expires March 2003 [page 14]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 in the element's content. 3.3.3 Languages in XML and IODEF All IODEF tags support the "xml:lang" attribute whereby allowing each element to identify the language in which its content is. The valid language code for the "xml:lang" attribute are described in RFC 3066 [12]. IODEF documents SHOULD specify the language in which their contents are encoded. In general, the language can be specified with the "xml:lang" attribute in the top-level element and letting all other elements "inherit" that definition. If no language is specified in an IODEF document, English SHALL be assumed. 3.3.4 Inheritance and Aggregation XML DTDs do not support inheritance as used by the IODEF data model. This limitation does not present a major problem in practice because aggregation relationships can be used instead with little loss of functionality. As a note of interest, XML Schemas, recently approved by the W3C, will provide support for inheritance, stronger data typing and other useful features [7]. Future versions of the IODEF will probably use XML Schemas instead of DTDs. It was recognized that in the initial stage of the design of a new application, an XML DTD was useful since it provides a better human readable format for document and element descriptions. However, with further the development of applications and integration into IH systems a more detailed definition of data types and elements relations as provided by XML Schemas may be required. 3.4 IODEF Data Types XML DTDs do not support data types such as integer, real, string, and so on (more on this later). However, they do require some indication of the type(s) of content that an element will contain. There are several types available, but only two are used in the IODEF: Meijer, et al. Expires March 2003 [page 15]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 PCDATA An XML processor will find only text (parsed character data) in this element, no tags or entity references (see Section 3.2.4). This is the content type for all but one of the elements at the bottom of the IODEF document tree. ANY The element may contain anything -- text, other tags, entity references, etc. This is the content type for the AdditionalData element (see Section 4.2.4.5). In the case where declaring the data is essential, future implementations of the IODEF should use an XML Schema definition instead of currently used XML DTD. There are a variety of attribute content types defined, but only two are used in the IODEF: CDATA An attribute of this type contains character data (text). Tags and entity references (see Section 4.2.4) are not processed. [values] An attribute may also be declared with a list of acceptable values; this functions somewhat like an enumerated type. For example: <!ATTLIST Person gender "unknown | male | female" "unknown" > The gender attribute may have one of three values; if a Person tag appears without a gender attribute, the XML processor will behave as though it did have one, with value "unknown." Within an XML IODEF description, all data will be expressed as "text" (as opposed to "binary"), since XML is a text formatting language. We provide typing information for the attributes of the classes in the data model however, to convey to the reader the type of data the model expects for each attribute. Each data type in the model has specific formatting requirements in an XML IODEF description. These requirements are set forth in Meijer, et al. Expires March 2003 [page 16]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 this section. 3.4.1 Integers Integer attributes are represented by the INTEGER data type. Integer data MUST be encoded in Base 10 or Base 16. Base 10 integer encoding uses the digits '0' through '9' and an optional sign ('+' or '-'). For example, "123", "-456". Base 16 integer encoding uses the digits '0' through '9' and 'a' through 'f' (or their upper case equivalents), and is preceded by the characters "0x". For example, "0x1a2b". 3.4.2 Real Numbers Real (floating-point) attributes are represented by the REAL data type. Real data MUST be encoded in Base 10. Real encoding is that of the POSIX "strtod" library function: an optional sign ('+' or '-') followed by a non-empty string of decimal digits, optionally containing a radix character, then an optional exponent part. An exponent part consists of an 'e' or 'E', followed by an optional sign, followed by one or more decimal digits. For example, "123.45e02", "-567,89e-03". IODEF-compliant applications MUST support both the '.' and ',' radix characters. 3.4.3 Characters and Strings Single-character attributes are represented by the CHARACTER data type. Multi-character attributes of known length are represented by the STRING data type. Character and string data have no special formatting requirements, other than the need to occasionally use character references (see Sections 4.3.2.1 and 4.3.2.2) to represent special characters. 3.4.4 Bytes Binary data is represented by the BYTE (and BYTE[]) data type. Binary data MUST be encoded in its entirety using character Meijer, et al. Expires March 2003 [page 17]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 code references (see Section 4.3.2.2). 3.4.5 Enumerated Types Enumerated types are represented by the ENUM data type, and consist of an ordered list of acceptable values. Each value has a rank (number) and a representing keyword. Within an IODEF document, the enumerated type keywords are used as attribute values, and the ranks are ignored. However, those IODEF-compliant applications that choose to represent these values internally in a numeric format MUST use the rank values identified in this memo. 3.4.6 Date-Time Strings Date-time strings are represented by the DATETIME data type. Each date-time string identifies a particular instant in time; ranges are not supported. Date-time strings are formatted according to a subset of ISO 8601:2000 [13], as show below. 1. Dates MUST be formatted as follows: YYYY-MM-DD where YYYY is the four- digit year, MM is the two-digit month (01-12), and DD is the two- digit day (01-31). (Section 5.2.1.1, "Complete representation -- Extended format" of [13]) 2. Times MUST be formatted as follows: hh:mm:ss where hh is the two-digit hour (00-24), mm is the two-digit minute (00-59), and ss is the two-digit second (00-60). (Section 5.3.1.1, "Complete representation -- Extended format." of [13]) Note that midnight has two representations, 00:00:00 and 24:00:00. Both representations MUST be supported by IODEF-compliant applications, however, the 00:00:00 representation SHOULD be used whenever possible. Note also that this format accounts for leap seconds. Positive leap seconds are inserted between 23:59:59Z and 24:00:00Z and Meijer, et al. Expires March 2003 [page 18]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 are represented as 23:59:60Z. Negative leap seconds are achieved by the omission of 23:59:59Z. IODEF-compliant applications MUST support leap seconds. 3. Times MAY be formatted to include a decimal fraction of seconds, as follows: hh:mm:ss.ss or hh:mm:ss,ss As many digits as necessary may follow the decimal sign (at least one digit must follow the decimal sign). Decimal fractions of hours and minutes are not supported. (Section 5.3.1.3, "Representation of decimal fractions." of [13]) IODEF-compliant applications MUST support the use of both decimal signs ('.' and ','). Note that the number of digits in the fraction part does not imply anything about accuracy -- i.e., "00.100000", "00,1000" and "00.1" are all equivalent. 4. Times MUST be formatted to include (a) an indication that the time is in Coordinated Universal Time (UTC), or (b) an indication of the difference between the specified time and Coordinated Universal Time. a. Times in UTC MUST be formatted by appending the letter 'Z' to the time string as follows: hh:mm:ssZ hh:mm:ss.ssZ hh:mm:ss,ssZ (Section 5.3.3, "Coordinated Universal Time (UTC) -- Extended format" of [13]) b. If the time is ahead of or equal to UTC, a '+' sign is appended to the time string; if the time is behind UTC, a '-' sign is appended. Following the sign, the number of hours and minutes representing the different from UTC is appended, as follows: hh:mm:ss+hh:mm hh:mm:ss-hh:mm hh:mm:ss.ss+hh:mm hh:mm:ss.ss-hh:mm hh:mm:ss,ss+hh:mm hh:mm:ss,ss-hh:mm Meijer, et al. Expires March 2003 [page 19]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The difference from UTC MUST be specified in both hours and minutes, even if the minutes component is 0. A "difference" of "+00:00" is equivalent to UTC. (Section 5.3.4.2, "Local time and the difference with Coordinated Universal Time -- Extended Format" of [13]) 5. Date-time strings are created by joining the date and time strings with the letter 'T', as shown below: YYYY-MM-DDThh:mm:ssZ YYYY-MM-DDThh:mm:ss.ssZ YYYY-MM-DDThh:mm:ss,ssZ YYYY-MM-DDThh:mm:ss+hh:mm YYYY-MM-DDThh:mm:ss-hh:mm YYYY-MM-DDThh:mm:ss.ss+hh:mm YYYY-MM-DDThh:mm:ss.ss-hh:mm YYYY-MM-DDThh:mm:ss,ss+hh:mm YYYY-MM-DDThh:mm:ss,ss-hh:mm (Section 5.4.1, "Complete representation -- Extended format" of [13]) In summary, IODEF date-time strings MUST adhere to one of the nine templates identified in Paragraph 5, above. 3.4.7 NTP Timestamps NTP timestamps are represented by the NTPSTAMP data type, and are described in detail in [14] and [15]. An NTP timestamp is a 64-bit unsigned fixed-point number. The integer part is in the first 32 bits, and the fraction part is in the last 32 bits. Within IODEF descriptions, NTP timestamps MUST be encoded as two 32-bit hexadecimal values, separated by a period ('.'). For example, "0x12345678.0x87654321". 3.4.8 Port Lists A list of network ports are represented by the PORTLIST data type, and consist of a comma-separated list of numbers (individual integers) and ranges (N-M means ports N through M, inclusive). Any combination of numbers and ranges may be used in a single list. For example, "5-25,37,42,43,53,69-119,123-514". Meijer, et al. Expires March 2003 [page 20]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 3.4.9 Unique Identifiers There are several types of unique identifiers used in this specification. All types are represented by the STRING data type. These identifiers are implemented as attributes in the relevant XML elements, and must have unique values as follows: 1. If specified, the attribute of the Authority class (Section 5.2.6.8) OrganizationID MUST have a value that is globally unique. It may be a combination of the Registry name and unique CSIRT ID in this Registry. FIRST or industry associations normally maintain registries. The default value is "unknown", which indicates that the authority or CISRT does not have unique identifiers. 2. The Incident, Attacker, Evidence, Victim, Source, Target, Node, User, Process, Service, Address, and UserID classes (see correspondent sections) are provided with "ident" attribute, which if specified, MUST have a value that is unique across all IODEF Descriptions created by the particular CSIRT or Authority. The "ident" attribute value MUST be unique for each particular combination of data identifying an object, not for each object. Objects may have more than one ident value associated with them. For example, an identification of a host by name would have one value, while an identification of that host by address would have another value, and an identification of that host by both name and address would have still another value. Furthermore, different analyzers may produce different values for the same information. The "ident" attribute by itself provides a unique identifier only among all the "ident" values created/stored by a particular CSIRT or IHS. But when combined with the unique "OrganizationID" value for the CSIRT, there is no requirement for global uniqueness. The default value is "0", which indicates that the CSIRT/IHS cannot generate unique identifiers. The specification of methods for creating the unique values contained in these attributes is outside the scope of this document. 3.4.10 Personal names Meijer, et al. Expires March 2003 [page 21]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The format for personal names is the same as in LDAP. Personal names will likely be obtained from the different directories used by a CSIRT. The suggested personal name formats are as follows: Name Surname Or Surname, Name It is also possible to use a personal handle from a registry database (e.g., RIPE NCC, InterNIC). In this case, the element's attribute will indicate the type of personal name used and indirectly point to the referenced registry. 3.4.11 Organization names Organization name can be in the form of a full name, short name or identification code retrieved from official Registries. It is possible to use an organization handle (or organization role from a registry (e.g., RIPE NCC, InterNIC). In this case, the element's attribute will indicate the type of organization name. 3.4.12 Postal addresses The format of postal address data is the same as in LDAP Postal addresses will likely be obtained directly from an incident report or from the different directories used by the CSIRT. Building, Street, Zip-code, City, Country Or Post Office Box, Zip-code, City, Country 3.4.13 Telephone and Fax numbers Telephone and fax numbers are expressed in the format recommended by ITU guidelines. + (international code) (local code) (tel. Number) Meijer, et al. Expires March 2003 [page 22]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4. The IODEF Data Model and XML DTD In this section, the individual components of the IODEF data model are explained in details. UML diagrams of the model are provided to illustrate the relationship between components. Likewise, relevant sections of the XML DTD are presented to describe how the model is translated into XML. 4.1 Data Model Overview The relationship between the principal components of the data model is shown in Figure 5.1 (cardinality and attributes are omitted). IODEF-Description is the top-level container class for all IODEF documents. Recognizing that incidents might require different types of data, sub-classes of this root class called incident descriptions are defined. There are presently two types of descriptions defined: the Incident class to describe an incident and the IncidentAlert class to allow seamless support for IODEF alerts. It is important to note that the data model does not define the events that constitute an incident. The notion of an incident is very site-specific. For example, a port scan may be identified by one CSIRT as a single incident with multiple victims. Another CSIRT might separate this activity as multiple incidents each from a single source to a single victim. Regardless, once the creator of the report has determined a logical grouping of events that constitute an incident, the data model dictates how that description should be formatted. +---------------------+ | IODEF-Description | +---------------------+ /_\ | +--------------------+---------------------+ | | | +-------+--------+ | | IncidentAlert | | +----------------+ | +----------+ +------------+ +----------------+ +----------+ | Incident |<>-| Attack |<>-| Source |<>-| Node | +----------+ +------------+ +----------------+ +----------+ Meijer, et al. Expires March 2003 [page 23]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | | | | | +----------+ | | | | | |<>-| User | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Process | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Service | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Program | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| os | | | | | +----------------+ +----------+ | | | | +----------------+ +----------+ | | | |<>-| Target |<>-| Node | | | | | +----------------+ +----------+ | | | | | | +----------+ | | | | | |<>-| User | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Process | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Service | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| Program | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| os | | | | | | | +----------+ | | | | | | +----------+ | | | | | |<>-| FileList | | | | | +----------------+ +----------+ | | | | +----------------+ | | | |<>-| Description | | | | | +----------------+ | | | | +----------------+ | | | |<>-| DetectTime | | | | | +----------------+ | | | | +----------------+ | | | |<>-| StartTime | | | | | +----------------+ | | | | +----------------+ | | | |<>-| EndTime | | | +------------+ +----------------+ | | +------------+ +----------------+ Meijer, et al. Expires March 2003 [page 24]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | |<>-| Method |<>-| Classification | | | +------------+ +----------------+ | | | | +----------------+ | | | |<>-| Description | | | +------------+ +----------------+ | | +------------+ +----------------+ | |<>-| Attacker |<>-| Contact | | | +------------+ +----------------+ | | | | +----------------+ | | | |<>-| Location | | | | | +----------------+ | | | | +----------------+ | | | |<>-| IRTcontact | | | +------------+ +----------------+ | | +------------+ +----------------+ | |<>-| Victim |<>-| Contact | | | +------------+ +----------------+ | | | | +----------------+ | | | |<>-| Location | | | | | +----------------+ | | | | +----------------+ | | | |<>-| IRTcontact | | | +------------+ +----------------+ | | +------------+ +----------------+ | |<>-| Record |<>-| RecordData | | | +------------+ +----------------+ | | +----------------+ | |<>-| AdditionalData | | | +----------------+ | | +------------+ +----------------+ | |<>-| History |<>-| HistoryItem | | | +------------+ +----------------+ | | +------------+ +----------------+ | |<>-| Assessment |<>-| Impact | | | +------------+ +----------------+ | | | | +----------------+ | | | |<>-| Action | | | | | +----------------+ | | | | +----------------+ | | | |<>-| Convidence | | | +------------+ +----------------+ | | +------------+ +----------------+ | |<>-| Authority |<>-| Organization | | | +------------+ +----------------+ | | | | +----------------+ | | | |<>-| Contact | +----------+ +------------+ +----------------+ Figure 4.1 Data model overview Meijer, et al. Expires March 2003 [page 25]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The individual classes are described in the following sections. 4.2 The IODEF-Description Class IODEF-Description is the root container class of the IODEF data model. There are currently two main types (subclasses) of IODEF- Description: Incident and IncidentAlert. A third Experimental class is also included temporarily for testing. Since DTDs do not support subclassing (see Section 4.3.4), the inheritance relationship between the IODEF-Description and the Incident and IncidentAlert subclasses shown in Figure 5.1 has been replaced with an aggregate relationship. NOTE: The use of aggregation to implement an inheritance relationship is done throughout the data model. The IODEF-Description class is declared in the IODEF DTD as follows: <!ENTITY % attlist.IODEF " version CDATA #FIXED '0.0' "> <!ELEMENT IODEF-Description ( (Incident | IncidentAlert)* )> <!ATTLIST IODEF-Description %attlist.IODEF; > The IODEF-Description class has a single attribute: version The version of the IODEF-Description specification (this document) to which the document conforms. Applications specifying a value for this attribute MUST use the value "0.0". 4.3 The Incident Class For a given incident, the CSIRT will create an instance of the Incident class. The information used to populate this class will come from the reporting infrastructure that the CSIRT already has in place. Thus, direct reports from their constituency, IDS alert messages, or collaboration with other CSIRTS could serve as Meijer, et al. Expires March 2003 [page 26]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 potential input. An Incident description is composed of several aggregate classes, as shown in Figure 4.2. The aggregate classes themselves are described in Sections 4.2.4.1 - 4.2.4.10. +-------------------+ | Incident | +-------------------+ | STRING incidentID | 1..* +----------------+ +-------------+ | ENUM purpose |<>------| Attack |<>-| Source | | ENUM restriction | +----------------+ +-------------+ | | | | +-------------+ | | | |<>-| Target | | | | | +-------------+ | | | | +-------------+ | | | |<>-| Description | | | | | +-------------+ | | | | +-------------+ | | | |<>-| DetectTime | | | | | +-------------+ | | | | +-------------+ | | | |<>-| StartTime | | | | | +-------------+ | | | | +-------------+ | | | |<>-| EndTime | | | +----------------+ +-------------+ | | 0..* +----------------+ | |<>------| Attacker | | | +----------------+ | | 0..* +----------------+ | |<>------| Victim | | | +----------------+ | | 0..* +----------------+ | |<>------| Method | | | +----------------+ | | 0..1 +----------------+ | |<>------| Record | | | +----------------+ | | 0..1 +----------------+ | |<>------| AdditionalData | | | +----------------+ | | 0..1 +----------------+ | |<>------| History | | | +----------------+ | | 0..1 +----------------+ | |<>------| Assessment | | | +----------------+ Meijer, et al. Expires March 2003 [page 27]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | +----------------+ | |<>------| Authority | +-------------------+ +----------------+ /_\ | | +----------+----------+ | CorrelationIncident | +---------------------+ Figure 4.2 The Incident Class The aggregate classes that constitute Incident are: Attack One or more. The security event(s) that compose the incident. Attacker Zero or more. The system(s) from which the Attack originated. Victim Zero or more. The system(s) at which the Attack was targeted. Method Zero or more. The actions taken by the Attacker in the incident. Evidence Zero or one. Container for the EvidenceData. Authority Exactly one. The CSIRT or authority that created the incident. History Zero or one. A log of the actions taken by the CSIRT(s) in the course of investigating the incident. AdditionalData Zero or more. Additional information about the incident included by CSIRT that cannot be readily expressed in the data model. The Incident class is represented in the XML DTD as follows: <!ENTITY % attvals.purpose " ( unknown | report | handling | communication | statistics | experimental ) Meijer, et al. Expires March 2003 [page 28]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 "> <!ENTITY % attvals.restriction " ( default | public | internal | restricted ) "> <!ELEMENT Incident ( Attack+, Attacker*, Victim*, Method*, Evidence?, CorrelationIncident?, Authority, History?, AdditionalData*)> <!ATTLIST Incident incidentID CDATA '0' purpose %attvals.purpose; 'experimental' restriction %attvals.restriction; 'default' > The Incident class has three attributes: IncidentID Required. A unique identifier for the Incident (see Section 3.4.9). purpose Optional. The purpose of the incident being reported to the CSIRT. Rank Keyword Description ---- ------- ----------- 0 unknown Purpose of the incident is unknown 1 report Incident report 2 handling Incident is being handled 3 communication Incident is being sent to another team 4 statistics Incident was reported for statistical purposes 5 experimental Experimental restriction Optional. Sets a restriction on the usage of the data in element. Rank Keyword Description ---- ------- ----------- 0 default Restriction level is defined by external policy applied to overall CSIRT process 1 public No restriction is applied to element 2 internal Data is for company's (or constituency) internal use 3 restricted Use strictly for Incident managers at CSIRT Meijer, et al. Expires March 2003 [page 29]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4.4 The CorrelationIncident Class The CorrelationIncident class represents information related to the correlation of current incident. It is intended as a way by which to logically group previously reported incidents as related. The CorrelationIncident class is composed of three aggregate classes, as shown in Figure 4.3. +---------------------+ | CorrelationIncident | +---------------------+ | ENUM restriction | 0..1 +----------------+ | |<>------| IncidentID | | | +----------------+ | | 0..* +----------------+ | |<>------| EvidenceDataID | | | +----------------+ | | 0..* +----------------+ | |<>------| EventList | +---------------------+ +----------------+ Figure 4.3 - The CorrelationIncident Class The aggregate classes that constitute CorrelationIncident are: IncidentID Zero or one. STRING. Identifier of current Incident. If not included into CorrelationIncident class, this value may be derived from the top class Incident attribute. EvidenceDataID Zero or more. Evidence data that are linked to current Incident. EventList One or more. Lists all events which are investigated together, or have another common denominator. This is represented in the XML DTD as follows: <!ELEMENT CorrelationIncident ( IncidentID?, EventList*, EvidenceDataID* )> <!ATTLIST CorrelationIncident Meijer, et al. Expires March 2003 [page 30]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 restriction %attvals.restriction; 'default' > The CorrelationIncident class has one attribute: restriction Optional. Sets a restriction on the usage of the data in element. 4.4.1 The EventList Class The EventList class contains information about events which are treated as correlated with respect to current incident. +---------------------+ | CorrelationIncident | +---------------------+ /_\ | +--------------+ | EventList | +--------------+ 0..1 +----------------+ | |<>----------| IncidentID | | | +----------------+ | | 0..* +----------------+ | |<>----------| EvidenceDataID | | | +----------------+ | | 0..1 +----------------+ | |<>----------| DateTime | | | +----------------+ +--------------+ Figure 4.27 The EventList Class The aggregate classes that constitute EventList are: IncidentID Zero or one. Identification number of the Incident. EvidenceDataID Zero or more. Identification number of the EvidenceData element related to referenced event or IncidentID. DateTime Zero or one. Date and time when the event occured. EventList is represented in the XML DTD as follows: Meijer, et al. Expires March 2003 [page 31]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT EventList ( IncidentID?, EvidenceDataID?, DateTime?)> <!ATTLIST EventList ident ID #IMPLIED > The EventList class has one attributes: ident Optional. A unique identifier for the EventList element (see Section 3.4.9). 4.5 IncidentAlert Class The IncidentAlert class is used as a container for IDMEF Alert messages. +-------------------+ | IncidentAlert | +-------------------+ | STRING incidentID | +----------------+ | ENUM purpose |<>------| Authority | | ENUM restriction | +----------------+ | | 0..1 +----------------+ | |<>------| History | | | +----------------+ | | 0..* +----------------+ | |<>------| AdditionalData | +-------------------+ +----------------+ Figure 4.4 The IncidentAlert Class The aggregate classes that constitute IncidentAlert are: Authority Exactly one. The CSIRT or authority that created the incident. History Zero or one. A log of the actions taken by the CSIRT(s) in course of investigating the incident. AdditionalData Zero or more. A container for the IDMEF Alert message. This is represented in the XML DTD as follows: Meijer, et al. Expires March 2003 [page 32]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT IncidentAlert ( Authority, History?, AdditionalData*)> <!ATTLIST Incident IncidentID ID #IMPLIED purpose %attvals.purpose; 'unknown' restriction %attvals.restriction; 'default' > The IncidentAlert class has three attributes: IncidentID Optional. A unique identifier for the alert, see Section 3.4.9. purpose Optional. The purpose of the incident being reported to the CSIRT. restriction Optional. Sets a restriction on the usage of the data in element. 4.6. The Attack Class The Attack class contains information about the security events that constitute the incident. +------------------+ 0..* +---------------+ +----------+ | Attack |<>------| Source |<>-| Node | +------------------+ +---------------+ +----------+ | STRING ident | | | +----------+ | | | |<>-| User | | ENUM restriction | | | +----------+ | | | | +----------+ | | | |<>-| process | | | | | +----------+ | | | | +----------+ | | | |<>-| service | | | | | +----------+ | | | | +----------+ | | | |<>-| program | | | | | +----------+ | | | | +----------+ | | | |<>-| os | | | +---------------+ +----------+ | | 0..* +---------------+ +----------+ | |<>------| Target |<>-| Node | | | +---------------+ +----------+ Meijer, et al. Expires March 2003 [page 33]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | | | +----------+ | | | |<>-| User | | | | | +----------+ | | | | +----------+ | | | |<>-| process | | | | | +----------+ | | | | +----------+ | | | |<>-| service | | | | | +----------+ | | | | +----------+ | | | |<>-| program | | | | | +----------+ | | | | +----------+ | | | |<>-| os | | | | | +----------+ | | | | +----------+ | | | |<>-| FileList | | | +---------------+ +----------+ | | 0..* +---------------+ | |<>------| Description | | | +---------------+ | | 0..1 +---------------+ | |<>------| DetectTime | | | +---------------+ | | 0..1 +---------------+ | |<>------| StartTime | | | +---------------+ | | 0..1 +---------------+ | |<>------| EndTime | +------------------+ +---------------+ Figure 4.6 The Attack Class The aggregate classes that constitute Attack are: Source Zero or more. The source(s) of the event(s) causing the incident. Target Zero or more. The target(s) of the event(s) in the incident. Description Zero or more. A free-form textual description by the CSIRT or report of the incident events. DetectTime Meijer, et al. Expires March 2003 [page 34]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Zero or one. The time when the incident activity was first detected by the reporter. In the case of more than one event, the time the first event was detected. In some circumstances, this time may not be the same as the RegistrationTime used in the History class. StartTime Zero or one. The start time of the incident activity. EndTime Zero or one. The end time of the incident activity. This is represented in the XML DTD as follows: <!ELEMENT Attack ( Source*, Target*, Description*, DetectTime?, StartTime?, EndTime?)> <!ATTLIST Attack %attlist.global; restriction %attvals.restriction; 'default' ident CDATA #IMPLIED > The Attack class has two attributes: ident Optional. A unique identifier for this Attack class (see Section 3.4.9). restriction Optional. Sets a restriction on the usage of the data in element. 4.6.1 The Source Class The Source class contains information about the possible source(s) of the incident event(s). An event may have more than one source (e.g., in a distributed denial of service attack). For the purpose of compatibility, the Source class has been reused from the IDMEF. Hence, the Source class from an IDMEF message can be included unmodified into the IODEF-Description class with the same semantics. Likewise, the data in an IDMEF-originating Source class could be decomposed between the IODEF Source and Attack classes. The definition of the Source class in the IODEF data model is a Meijer, et al. Expires March 2003 [page 35]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 superset of the IDMEF definition. Two new classes have been added: os and program. The Source class is composed of four aggregate classes, as shown in Figure 4.7. +------------------+ | Source | +------------------+ 0..1 +---------+ | STRING ident |<>----------| Node | | ENUM spoofed | +---------+ | STRING interface | 0..1 +---------+ | |<>----------| User | | | +---------+ | | 0..1 +---------+ | |<>----------| Process | | | +---------+ | | 0..1 +---------+ | |<>----------| Service | | | +---------+ | | 0..1 +---------+ | |<>----------| os | | | +---------+ | | 0..1 +---------+ | |<>----------| Program | | | +---------+ +------------------+ Figure 4.7 The Source Class The aggregate classes that constitute Source are: Node Zero or one. Information about the host or device that appears to be causing the events (network address, network name, etc.). User Zero or one. Information about the user that appears to be causing the event(s). Process Zero or one. Information about the process that appears to be causing the event(s). Service Zero or one. Information about the network service involved in the event(s). Meijer, et al. Expires March 2003 [page 36]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 os Zero or one. The operation system running on the Node from which the Attack originated. program Zero or one. The program that caused the Attack, that is running in the Process. This is represented in the XML DTD as follows: <!ENTITY % attvals.yesno " ( unknown | yes | no ) "> <!ELEMENT Source ( Node?, User?, Process?, Service?, os?, program? )> <!ATTLIST Source ident CDATA '0' spoofed %attvals.yesno; 'unknown' interface CDATA #IMPLIED > The Source class has three attributes: ident Optional. A unique identifier for this Source class (see Section 3.4.9). spoofed Optional. An indication of confidence as to whether this is the true Attack source. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Accuracy of source information unknown 1 yes Source is believed to be a decoy 2 no Source is believed to be "real" interface Optional. Specifies the interface on which the source of the event(s) was detected. 4.6.2 The Node Class Meijer, et al. Expires March 2003 [page 37]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The Node class is used to identify hosts and other network devices (routers, switches, etc.). The Node class is composed of five aggregate classes, as shown in Figure 4.16. +---------------+ | Node | +---------------+ 0..1 +----------+ | STRING ident |<>----------| Location | | ENUM category | +----------+ | | 0..1 +----------+ | |<>----------| name | | | +----------+ | | 0..* +----------+ | |<>----------| Address | | | +----------+ | | 0..1 +----------+ | |<>----------| DateTime | | | +----------+ | | 0..* +----------+ | |<>----------| NodeRole | | | +----------+ +---------------+ Figure 4.16 The Node Class The aggregate classes that constitute Node are: location Zero or one. STRING. The physical location of the equipment. name Zero or one. STRING. The name of the equipment. This information MUST be provided if no Address information is given. Address Zero or more. The network or hardware address of the equipment. Unless a name (above) is provided, at least one address must be specified. DateTime Zero or one. Date and time when the resolution between the name and address was performed. This information SHOULD be provided if both an Address and name are given. Meijer, et al. Expires March 2003 [page 38]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 NodeRole Zero or more. The intended role of the node. This is represented in the XML DTD as follows: <!ENTITY % attvals.nodecat " ( unknown | ads | afs | coda | dfs | dns | hosts | kerberos | nds | nis | nisplus | nt | wfw ) "> <!ELEMENT Node ( location?, (name | Address), Address*, DateTime?, NodeRole* )> <!ATTLIST Node ident CDATA '0' category %attvals.nodecat; 'unknown' > The Node class has two attributes: ident Optional. A unique identifier for the node, see Section 3.4.9. category Optional. The "domain" from which the name information obtained, if relevant. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Domain unknown or not relevant 1 ads Windows 2000 Advanced Directory Services 2 afs Andrew File System (Transarc) 3 coda Coda Distributed File System 4 dfs Distributed File System (IBM) 5 dns Domain Name System 6 hosts Local hosts file 7 kerberos Kerberos realm 8 nds Novell Directory Services 9 nis Network Information Services (Sun) 10 nisplus Network Information Services Plus (Sun) 11 nt Windows NT domain 12 wfw Windows for Workgroups 4.6.2.1 The Address Class The Address class represents a network, hardware, or application address. Meijer, et al. Expires March 2003 [page 39]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The Address class is composed of two aggregate classes, as shown in Figure 4.17. +------------------+ | Address | +------------------+ +---------+ | STRING ident |<>----------| address | | ENUM category | +---------+ | STRING vlan-name | 0..1 +---------+ | INTEGER vlan-num |<>----------| netmask | | | +---------+ +------------------+ Figure 4.17 The Address Class The aggregate classes that constitute Address are: address Exactly one. STRING. The address whose format is governed by the category attribute. netmask Zero or one. STRING. The network mask for the address, if appropriate. This is represented in the XML DTD as follows: <!ENTITY % attvals.addrcat " ( unknown | atm | e-mail | lotus-notes | mac | sna | vm | ipv4-addr | ipv4-addr-hex | ipv4-net | ipv4-net-mask | ipv6-addr | ipv6-addr-hex | ipv6-net | ipv6-net-mask ) "> <!ELEMENT Address ( address, netmask? )> <!ATTLIST Address ident CDATA '0' category %attvals.addrcat; 'unknown' vlan-name CDATA #IMPLIED vlan-num CDATA #IMPLIED > The Address class has four attributes: ident Optional. A unique identifier for the address (see Section 3.4.9). Meijer, et al. Expires March 2003 [page 40]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 category Optional. The type of address represented. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Address type unknown 1 atm Asynchronous Transfer Mode network address 2 e-mail Electronic mail address (RFC 822) 3 lotus-notes Lotus Notes e-mail address 4 mac Media Access Control (MAC) address 5 sna IBM Shared Network Architecture (SNA) address 6 vm IBM VM ("PROFS") e-mail address 7 ipv4-addr IPv4 host address in dotted-decimal notation (a.b.c.d) 8 ipv4-addr-hex IPv4 host address in hexadecimal notation 9 ipv4-net IPv4 network address in dotted-decimal notation, slash, significant bits (a.b.c.d/nn) 10 ipv4-net-mask IPv4 network address in dotted-decimal notation, slash, network mask in dotted-decimal notation (a.b.c.d/w.x.y.z) 11 ipv6-addr IPv6 host address 12 ipv6-addr-hex IPv6 host address in hexadecimal notation 13 ipv6-net IPv6 network address, slash, significant bits 14 ipv6-net-mask IPv6 network address, slash, network mask vlan-name Optional. The name of the Virtual LAN to which the address belongs. vlan-num Optional. The number of the Virtual LAN to which the address belongs. 4.6.2.2 The NodeRole Class The NodeRole class is used to represent the intended role of a particular node. Meijer, et al. Expires March 2003 [page 41]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The NodeRole class is composed of a single attribute represented in the XML DTD as follows: <!ENTITY % attvals.noderolecat " ( unknown | client | server-internal | server-public | www | mail | messaging | streaming | voice | file | ftp | p2p | name | directory | credential | print | application | database | infra | log ) "> <!ELEMENT NodeRole ()> <!ATTLIST NodeRole category %attvals.noderolecat; 'unknown' > The NodeRole class has one attribute: category Optional. The intended role this Node is to fulfill. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Unknown role 1 client Client computer 2 server-internal Server with internal services 3 server-public Server with public services 4 www WWW server 5 mail Mail server 6 messaging Messaging server (e.g. NNTP, IRC, instant) 7 streaming Streaming-media server 8 voice Voice server (e.g. SIP, H.323) 9 file File server (e.g. SMB, CVS, AFS) 10 ftp FTP server 11 p2p Peer-to-peer server (e.g. Napster) 12 name Name server (e.g. DNS, WINS) 13 directory Directory server (e.g. LDAP, finger, whois) 14 credential Credential server (e.g. domain controller, Kerberos) 16 print Print server 17 application Application server 18 database Database server 19 infra Infrastructure server (e.g. router, firewall, DHCP) Meijer, et al. Expires March 2003 [page 42]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 20 log Log server (e.g. syslog) 4.6.3 The User Class The User class describes a user account on a system. It is primarily used as a "container" class for the UserId aggregate class, as shown in Figure 4.18. More than one UserId can be used within the User class to indicate attempts to transition from one user to another, or to provide complete information about a user's (or process') privileges. +---------------+ | User | +---------------+ 1..* +--------+ | STRING ident |<>----------| UserId | | ENUM category | +--------+ +---------------+ Figure 4.18 The User Class The aggregate class contained in User is: UserId One or more. The user. This is represented in the XML DTD as follows: <!ENTITY % attvals.usercat " ( unknown | application | os-device ) "> <!ELEMENT User ( UserId+ )> <!ATTLIST User ident CDATA '0' category %attvals.usercat; 'unknown' > The User class has two attributes: ident Optional. A unique identifier for the user (see Section 3.4.9). category Meijer, et al. Expires March 2003 [page 43]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Optional. The type of user represented. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown User type unknown 1 application An application user 2 os-device An operating system or device user 4.6.3.1 The UserId Class The UserId class describes a specific user account on a system. The UserId class is composed of two aggregate classes, as shown in Figure 4.19. +--------------+ | UserId | +--------------+ 0..1 +--------+ | STRING ident |<>----------| name | | ENUM type | +--------+ | | 0..1 +--------+ | |<>----------| number | | | +--------+ +--------------+ Figure 4.19 The UserId Class The aggregate classes that constitute UserId are: name Zero or one. STRING. A user or group name. number Zero or one. INTEGER. A user or group number. This is represented in the XML DTD as follows: <!ENTITY % attvals.idtype " ( current-user | original-user | target-user | user-privs | current-group | group-privs | other-privs) "> <!ELEMENT UserId ( name | number | (name, number) )> Meijer, et al. Expires March 2003 [page 44]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST UserID ident CDATA '0' type %attvals.idtype; 'original-user' > The UserId class has two attributes: ident Optional. A unique identifier for the user id (see Section 3.4.9). type Optional. The type of user information represented. The permitted values for this attribute are shown below. The default value is "original-user". Rank Keyword Description ---- ------- ----------- 0 current-user The current user id being used by the user or process. On Unix systems, this would be the "real" user id. 1 original-user The actual identity of the user or process being reported on. On those systems that (a) do some type of auditing and (b) support extracting a user id from the "audit id" token, that value should be used. On those systems that do not support this, and where the user has logged into the system, the "login id" should be used. 2 target-user The user id the user or process is attempting to become. For example, on Unix systems when the user attempts to use "su," "rlogin," "telnet," etc. 3 user-privs Another user id the user or process has the ability to use. On Unix systems, this would be the "effective" user id. Multiple UserId elements of this type may be used to specify a list of privileges. 4 current-group The current group id (if applicable) being used by the user or process. On Unix systems, this would be the "real" group id. 5 group-privs Another group id the group or process has the ability to use. On Unix systems, this would be the "effective" group id. On BSD-derived Unix Meijer, et al. Expires March 2003 [page 45]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 systems, multiple UserId elements of this type would be used to include all the group ids on the "group list." 6 other-privs Not used in a user, group, or process context, only used in the file context. The file permissions assigned to users who do not match either the user or group permissions on the file. On Unix systems, this would be the "world" permissions. 4.6.4 The Process Class The Process class describes a process being executed on a system. The Process class is composed of five aggregate classes, as shown in Figure 4.20. +--------------+ | Process | +--------------+ +------+ | STRING ident |<>----------| name | | | +------+ | | 0..1 +------+ | |<>----------| pid | | | +------+ | | 0..1 +------+ | |<>----------| path | | | +------+ | | 0..* +------+ | |<>----------| arg | | | +------+ | | 0..* +------+ | |<>----------| env | | | +------+ +--------------+ Figure 4.20 The Process Class The aggregate classes that constitute Process are: name Exactly one. STRING. The filename of the program being executed. This is a short name; path and argument information are provided elsewhere. pid Meijer, et al. Expires March 2003 [page 46]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Zero or one. INTEGER. The process identifier of the process. path Zero or one. STRING. The full path of the program being executed. arg Zero or more. STRING. A command-line argument to the program. Multiple arguments may be specified (they are assumed to have occurred in the same order they are provided) with multiple uses of arg. env Zero or more. STRING. An environment string associated with the process; generally of the format "VARIABLE=value". Multiple environment strings may be specified with multiple uses of env. This is represented in the XML DTD as follows: <!ELEMENT Process ( name, pid?, path?, arg*, env* )> <!ATTLIST Process ident CDATA '0' > The Process class has one attribute: ident Optional. A unique identifier for the process (see Section 3.4.9). 4.6.5 The Service Class The Service class describes a network service. It can identify services by name, port, and protocol. When Service occurs as an aggregate class of Source, it is understood that the service is one from which activity of interest is originating; and that the service is "attached" to the Node, Process, and User information also contained in Source. Likewise, when Service occurs as an aggregate class of Target, it is understood that the service is one to which activity of interest is being directed; and that the service is "attached" to the Node, Process, and User information also contained in Target. Meijer, et al. Expires March 2003 [page 47]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The Service class is composed of four aggregate classes, as shown in Figure 4.21. +--------------+ | Service | +--------------+ 0..1 +----------+ | STRING ident |<>----------| name | | | +----------+ | | 0..1 +----------+ | |<>----------| port | | | +----------+ | | 0..1 +----------+ | |<>----------| portlist | | | +----------+ | | 0..1 +----------+ | |<>----------| protocol | | | +----------+ +--------------+ /_\ | +------------+ | +-------------+ | +-------------+ | SNMPService |--+--| WebService | +-------------+ +-------------+ Figure 4.21 - The Service Class The aggregate classes that constitute Service are: name Zero or one. STRING. The name of the service. Whenever possible, the name from the IANA list of well-known ports SHOULD be used. port Zero or one. INTEGER. The port number being used. portlist Zero or one. PORTLIST. A list of port numbers being used; see Section 3.4.8 for formatting rules. protocol Zero or one. STRING. The protocol being used. A Service MUST be specified as either (a) a name, (b) a port, (c) a name and a port, or (d) a portlist. The protocol is Meijer, et al. Expires March 2003 [page 48]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 optional in all cases, but no other combinations are permitted. Because DTDs do not support subclassing (see Section 4.3.4), the inheritance relationship between Service and the SNMPService and WebService subclasses shown in Figure 5.17 has been replaced with an aggregate relationship. Service is represented in the XML DTD as follows: <!ELEMENT Service ( ((name | port | (name, port)) | portlist), protocol?, SNMPService?, WebService? )> <!ATTLIST Service ident CDATA '0' > The Service class has one attribute: ident Optional. A unique identifier for the service, see Section 3.4.9. 4.6.5.1 The WebService Class The WebService class augments the Service class with additional information related to web traffic. The WebService class is composed of four aggregate classes, as shown in Figure 4.22. +-------------+ | Service | +-------------+ /_\ | +-------------+ | WebService | +-------------+ +-------------+ | |<>----------| url | | | +-------------+ | | 0..1 +-------------+ | |<>----------| cgi | | | +-------------+ | | 0..1 +-------------+ | |<>----------| http-method | | | +-------------+ | | 0..* +-------------+ | |<>----------| arg | Meijer, et al. Expires March 2003 [page 49]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | +-------------+ +-------------+ Figure 4.22 The WebService Class The aggregate classes that constitute WebService are: url Exactly one. STRING. The URL in the request. cgi Zero or one. STRING. The CGI script in the request, without arguments. http-method Zero or one. STRING. The HTTP method (PUT, GET) used in the request. arg Zero or more. STRING. The arguments to the CGI script. This is represented in the XML DTD as follows: <!ELEMENT WebService ( url, cgi?, http-method?, arg* )> 4.6.5.2 The SNMPService Class The SNMPService class augments the Service class with additional information related to SNMP traffic. The SNMPService class is composed of three aggregate classes, as shown in Figure 4.23. +-------------+ | Service | +-------------+ /_\ | +-------------+ | SNMPService | +-------------+ 0..1 +-----------+ | |<>----------| oid | | | +-----------+ | | 0..1 +-----------+ | |<>----------| community | | | +-----------+ Meijer, et al. Expires March 2003 [page 50]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | 0..1 +-----------+ | |<>----------| command | | | +-----------+ +-------------+ Figure 4.23 The SNMPService Class The aggregate classes that constitute SNMPService are: oid Zero or one. STRING. The object identifier in the request. community Zero or one. STRING. The object's community string. command Zero or one. STRING. The command sent to the SNMP server (GET, SET. etc.). This is represented in the XML DTD as follows: <!ELEMENT SNMPService ( oid?, community?, command? )> 4.6.6 The Target Class The Target class contains information about the possible target(s) of the incident event(s). An event may have more than one target (e.g., in the case of a port sweep). For the purpose of compatibility, the Target class has been reused from the IDMEF. Hence, the Target class from an IDMEF message can be included unmodified into the IODEF-Description class with the same semantics. Likewise, the data in an IDMEF-originating Source class could be decomposed between the IODEF Target and Attack classes. The definition of the Target class in the IODEF data model is a superset of the IDMEF definition. Two new classes have been added: os and program. The Target class is composed of four aggregate classes, as shown in Figure 4.8. Meijer, et al. Expires March 2003 [page 51]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 +------------------+ | Target | +------------------+ 0..1 +----------+ | STRING ident |<>----------| Node | | ENUM spoofed | +----------+ | STRING interface | 0..1 +----------+ | |<>----------| User | | | +----------+ | | 0..1 +----------+ | |<>----------| Process | | | +----------+ | | 0..1 +----------+ | |<>----------| Service | | | +----------+ | | 0..1 +----------+ | |<>----------| FileList | | | +----------+ | | 0..1 +----------+ | |<>----------| os | | | +----------+ | | 0..1 +----------+ | |<>----------| Program | | | +----------+ +------------------+ Figure 4.8 The Target Class The aggregate classes that constitute Target are: Node Zero or one. Information about the host or device at which the event(s) (network address, network name, etc.) is being directed. User Zero or one. Information about the user at which the event(s) is being directed. Process Zero or one. Information about the process at which the event(s) is being directed. Service Zero or one. Information about the network service involved in the event(s). FileList Zero or one. Information about file(s) involved in the Meijer, et al. Expires March 2003 [page 52]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 event(s). os Zero or one. The operation system running on the targeted Node. program Zero or one. The program running as the Process, which was targeted in the Attack. This is represented in the XML DTD as follows: <!ENTITY % attvals.yesno " ( unknown | yes | no ) "> <!ELEMENT Target ( Node?, User?, Process?, Service?, FileList?, os?, program? )> <!ATTLIST Target ident CDATA '0' decoy %attvals.yesno; 'unknown' interface CDATA #IMPLIED > The Target class has three attributes: ident Optional. A unique identifier for this Target class (see Section 3.4.9). spoofed Optional. An indication of confidence as to whether this is the true Attack target. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Accuracy of target information unknown 1 yes Target is believed to be a decoy 2 no Target is believed to be "real" interface Optional. Specifies the interface on which the event(s) against the Target were detected. 4.6.7 The FileList Class Meijer, et al. Expires March 2003 [page 53]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The FileList class describes files and other file-like objects on targets. It is primarily used as a "container" class for the File aggregate class, as shown in Figure 5.33. For the purpose of compatibility the FileList Class is reused from the IDMEF. +--------------+ | FileList | +--------------+ 1..* +------+ | |<>----------| File | | | +------+ +--------------+ Figure 4.33 The FileList Class The aggregate class contained in FileList is: File One or more. Information about an individual file, as indicated by its "category" and "fstype" attributes (see Section 4.8.13.1). This is represented in the XML DTD as follows: <!ELEMENT FileList ( File+ )> 4.6.7.1 The File Class The File class provides specific information about a file or other file-like object that has been created, deleted, or modified on the target. More than one File can be used within the FileList class to provide information about more than one file. The description can provide either the file settings prior to the event or the file settings at the time of the event, as specified using the "category" attribute. The File class is composed of ten aggregate classes, as shown in Figure 4.34. +--------------+ | File | +--------------+ +-------------+ | |<>----------| name | | | +-------------+ Meijer, et al. Expires March 2003 [page 54]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | +-------------+ | |<>----------| path | | | +-------------+ | | 0..1 +-------------+ | |<>----------| create-time | | | +-------------+ | | 0..1 +-------------+ | |<>----------| modify-time | | | +-------------+ | | 0..1 +-------------+ | |<>----------| access-time | | | +-------------+ | | 0..1 +-------------+ | |<>----------| data-size | | | +-------------+ | | 0..1 +-------------+ | |<>----------| disk-size | | | +-------------+ | | 0..* +-------------+ | |<>----------| FileAccess | | | +-------------+ | | 0..* +-------------+ | |<>----------| Linkage | | | +-------------+ | | 0..1 +-------------+ | |<>----------| Inode | | | +-------------+ +--------------+ Figure 4.34 The File Class The aggregate classes that make up File are: name Exactly one. STRING. The name of the file to which the alert applies, not including the path to the file. path Exactly one. STRING. The full path to the file, including the name. The path name should be represented in as "universal" a manner as possible, to facilitate processing of the alert. For Windows systems, the path should be specified using the Universal Naming Convention (UNC) for remote files, and using a drive letter for local files (e.g., "C:\boot.ini"). For Unix systems, paths on network file systems should use the name of the mounted resource Meijer, et al. Expires March 2003 [page 55]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 instead of the local mount point (e.g., "fileserver:/usr/local/bin/foo"). The mount point can be provided using the <Linkage> element. create-time Zero or one. DATETIME. Time the file was created. Note that this is *not* the Unix "st_ctime" file attribute (which is not file creation time). The Unix "st_ctime" attribute is contained in the "Inode" class. modify-time Zero or one. DATETIME. Time the file was last modified. access-time Zero or one. DATETIME. Time the file was last accessed. data-size Zero or one. INTEGER. The size of the data, in bytes. Typically what is meant when referring to file size. On Unix UFS file systems, this value corresponds to stat.st_size. On Windows NTFS, this value corres- ponds to VDL. disk-size Zero or one. INTEGER. The physical space on disk consumed by the file, in bytes. On Unix UFS file systems, this value corresponds to 512 * stat.st_blocks. On Windows NTFS, this value corresponds to EOF. FileAccess Zero or more. Access permissions on the file. Linkage Zero or more. File system objects to which this file is linked (other references for the file). Inode Zero or one. Inode information for this file (relevant to Unix). This is represented in the XML DTD as follows: <!ENTITY % attvals.filecat " ( current | original ) "> <!ELEMENT File ( name, path, create-time?, modify-time?, access-time?, data-size?, disk-size?, FileAccess*, Linkage*, Inode? )> Meijer, et al. Expires March 2003 [page 56]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST File ident CDATA '0' category %attvals.filecat; #REQUIRED fstype CDATA #REQUIRED %attlist.global; > The File class has three attributes: ident Optional. A unique identifier for this file, see Section 3.4.9. category Required. The context for the information being provided. The permitted values are shown below. There is no default value. Rank Keyword Description ---- ------- ----------- 0 current The file information is from after the reported change 1 original The file information is from before the reported change fstype Required. The type of file system the file resides on. The name should be specified using a standard abbreviation, e.g., "ufs", "nfs", "afs", "ntfs", "fat16", "fat32", "pcfs", "joliet", "cdfs", etc. This attribute governs how path names and other attributes are interpreted. 4.6.7.2 The FileAccess Class The FileAccess class represents the access permissions on a file. The representation is intended to be usefule across operating systems. The FileAccess class is composed of two aggregate classes, as shown in Figure 4.35. +--------------+ | FileAccess | +--------------+ +------------+ | |<>----------| UserId | | | +------------+ | | 1..* +------------+ | |<>----------| permission | | | +------------+ Meijer, et al. Expires March 2003 [page 57]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 +--------------+ Figure 4.35 The FileAccess Class The aggregate classes that make up FileAccess are: UserId Exactly one. The user (or group) to which these permissions apply. The value of the "type" attribute must be "user-privs", "group-privs", or "other-privs" as appropriate. Other values for "type" MUST NOT be used in this context. permission One or more. STRING. Level of access allowed. Recommended values are "noAccess", "read", "write", "execute", "delete", "executeAs", "changePermissions", and "takeOwnership". The "changePermissions" and "takeOwnership" strings represent those concepts in Windows. On Unix, the owner of the file always has "changePermissions" access, even if no other access is allowed for that user. "Full Control" in Windows is represented by enumerating the permissions it contains. The "executeAs" string represents the set-user-id and set-group-id features in Unix. This is represented in the XML DTD as follows: <!ELEMENT FileAccess ( UserId, permission+ )> 4.6.7.3 The Linkage Class The Linkage class represents file system connections between the file described in the <File> element and other objects in the file system. For example, if the <File> element is a symbolic link or shortcut, then the <Linkage> element should contain the name of the object the link points to. Further information can be provided about the object in the <Linkage> element with another <File> element, if appropriate. The Linkage class is composed of three aggregate classes, as shown in Figure 4.36. +--------------+ | Linkage | Meijer, et al. Expires March 2003 [page 58]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 +--------------+ +------+ | |<>----------| name | | | +------+ | | +------+ | |<>----------| path | | | +------+ | | +------+ | |<>----------| File | | | +------+ +--------------+ Figure 4.36 The Linkage Class The aggregate classes that make up Linkage are: name Exactly one. STRING. The name of the file system object not including the path. path Exactly one. STRING. The full path to the file system object, including the name. The path name should be represented in as "universal" a manner as possible, to facilitate processing of the alert. File Exactly one. A <File> element may be used in place of the <name> and <path> elements if additional information about the file is to be included. The is represented in the XML DTD as follows: <!ENTITY % attvals.linkcat " ( hard-link | mount-point | reparse-point | shortcut | stream | symbolic-link ) "> <!ELEMENT Linkage ( (name, path) | File )> <!ATTLIST Linkage category %attvals.linkcat; #REQUIRED > The Linkage class has one attribute: category The type of object that the link describes. The permitted values are shown below. There is no default value. Meijer, et al. Expires March 2003 [page 59]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Rank Keyword Description ---- ------- ----------- 0 hard-link The <name> element represents another name for this file. This information may be more easily obtainable on NTFS file systems than others. 1 mount-point An alias for the directory specified by the parent's <name> and <path> elements. 2 reparse-point Applies only to Windows; excludes symbolic links and mount points, which are specific types of reparse points. 3 shortcut The file represented by a Windows "shortcut." A shortcut is distinguished from a symbolic link because of the difference in their contents, which may be of importance to the manager. 4 stream An Alternate Data Stream (ADS) in Windows; a fork on MacOS. Separate file system entity that is considered an extension of the main <File>. 5 symbolic-link The <name> element represents the file to which the link points. 4.6.7.4 The Inode Class The Inode class is used to represent the additional information contained in a Unix file system i-node. The Inode class is composed of six aggregate classes, as shown in Figure 4.37. +--------------+ | Inode | +--------------+ +----------------+ | |<>----------| change-time | | | +----------------+ | | +----------------+ | |<>----------| number | | | +----------------+ | | +----------------+ | |<>----------| major-device | | | +----------------+ | | +----------------+ | |<>----------| minor-device | Meijer, et al. Expires March 2003 [page 60]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | +----------------+ | | +----------------+ | |<>----------| c-major-device | | | +----------------+ | | +----------------+ | |<>----------| c-minor-device | | | +----------------+ +--------------+ Figure 4.37 The Inode Class The aggregate classes that make up Inode are: change-time Zero or one. DATETIME. The time of the last inode change, given by the st_ctime element of "struct stat". number Zero or one. INTEGER. The inode number. major-device Zero or one. INTEGER. The major device number of the device the file resides on. minor-device Zero or one. INTEGER. The minor device number of the device the file resides on. c-major-device Zero or one. INTEGER. The major device of the file itself, if it is a character special device. c-minor-device Zero or one. INTEGER. The minor device of the file itself, if it is a character special device. Note that <number>, <major-device>, and <minor-device> must be given together, and the <c-major-device> and <c-minor-device> must be given together. This is represented in the XML DTD as follows: <!ELEMENT Inode ( change-time?, (number, major-device, minor-device)?, (c-major-device, c-minor-device)? )> Meijer, et al. Expires March 2003 [page 61]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4.6.8 The Description Class The Description class is a general-purpose class for any natural language free-form text. Using the XML language attribute, it is reasonable to include text in a number of different languages in different instances of the Description class. For details on declaring language attribute see section 3.3.3. <!ELEMENT Description xml:lang="langcode"> 4.6.9 The DetectTime Class The time when the incident activity was first detected by the reporter. It is represented in the XML DTD as follows: <!ELEMENT DetectTime (#PCDATA) > <!ATTLIST DetectTime ntpstamp CDATA #REQUIRED > The DATETIME format of the <DetectTime> element content is described in Section 3.4.6. The DetectTime class has one attribute: ntpstamp Required. The NTP timestamp representing the same date and time as the element content. The NTPSTAMP format of this attribute's value is described in Section 3.4.7. If the date and time represented by the element content and the NTP timestamp differ (should "never" happen), the value in the NTP timestamp MUST be used. 4.6.10 The StartTime Class The start time of the incident activity. It is represented in the XML DTD as follows: <!ELEMENT StartTime (#PCDATA) > The DATETIME format of the <StartTime> element content is Meijer, et al. Expires March 2003 [page 62]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 described in Section 3.4.6. 4.6.11 The EndTime Class The end time of the incident activity. It is represented in the XML DTD as follows: <!ELEMENT EndTime (#PCDATA) > The DATETIME format of the <StartTime> element content is described in Section 3.4.6. 4.7 The Method Class The Method class provides information about the method used by the Attacker in the incident. This class can reference well-known vulnerability or exploit databases, as well as allow for a free-form description of the activity. The Method class is composed of two aggregate classes, as shown in Figure 4.9. +------------------+ | Method | +------------------+ | STRING ident | 0..* +----------------+ | ENUM restriction |<>------| Classification | | | +----------------+ | | 0..* +----------------+ | |<>------| Description | +------------------+ +----------------+ Figure 4.9 The Method Class The aggregate classes that constitute Method are: Classification Zero or more. A reference to a well-known vulnerability or exploit databases. Description Zero or more. A free-form text description of the attack. Meijer, et al. Expires March 2003 [page 63]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 This is represented in the XML DTD as follows: <!ELEMENT Method ( Classification*, Description*)> <!ATTLIST Method ident ID #IMPLIED restriction %attvals.restriction; 'default' > The Method class has two attributes: ident Optional. A unique identifier for the element (see Section 3.4.9). restriction Optional. Sets a restriction on the usage of the data in element. 4.7.1 The Classification Class The Classification class provides a way to reference an external vulnerability, exposure, or virus database. The Classification class is composed of two aggregate classes, as shown in Figure 4.24. +----------------+ | Classification | +----------------+ +---------+ | STRING origin |<>------| name | | | +---------+ | | +---------+ | |<>------| url | | | +---------+ +----------------+ Figure 4.24 The Classification Class The aggregate classes that constitute Classification are: name Exactly one. STRING. The name of the Vulnerability, Exposure or Virus (from one of the origins listed below) used by Attacker to cause Incident. url Exactly one. STRING. A URL at which the manager can find Meijer, et al. Expires March 2003 [page 64]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 additional information about classified method. The document pointed to by the URL may include an in-depth description of the attack, appropriate countermeasures, or other information deemed relevant by the vendor. This is represented in the XML DTD as follows: <!ENTITY % attvals.origin " ( unknown | bugtraqid | cve | vendor-specific ) "> <!ELEMENT Classification ( name, url )> <!ATTLIST Classification origin %attvals.origin; 'unknown' > The Classification class has one attribute: origin Required. The source from which the name of the alert originates. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Origin of the name is not known 1 bugtraqid The SecurityFocus.com ("Bugtraq") vulnerability database identifier (http://www.securityfocus.com/vdb) 2 cve The Common Vulnerabilities and Exposures (CVE) name (http://www.cve.mitre.org/) 3 vendor-specific A vendor-specific name (and hence, URL); this can be used to provide product-specific information 4.8 The Attacker Class The Attacker class augments information found in the Source class with further details related to the entity(ies)/person(s) identified as the source(s) of the incident activity. NOTE: Information found in the Attacker class might be derived based on address and network information found in the Source class. However, particular algorithm or procedure is defined by Incident Handling System Meijer, et al. Expires March 2003 [page 65]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 +------------------+ | Attacker | +------------------+ | STRING ident | 0..1 +---------------+ | ENUM restriction |<>------| Contact | | | +---------------+ | | 0..1 +---------------+ | |<>------| IRTcontact | | | +---------------+ | | 0..1 +---------------+ | |<>------| Location | +------------------+ +---------------+ Figure 4.10 The Attacker Class The aggregate classes that constitute Attacker are: Contact Zero or one. Contact information for the entity/person identified as an Attacker. Location Zero or one. Location of Attacker's node or system. This is a general definition of location that may depend on network structure or company's geographical distribution. IRTcontact Zero or one. Contact information for the CSIRT or Network Security manager serving the NodeÆs network. Attacker is represented in the XML DTD as follows: <!ELEMENT Attacker ( Contact?, Location?, IRTcontact?)> <!ATTLIST Attacker ident ID #IMPLIED restriction %attvals.restriction; 'default' > The Attacker class has two attributes: ident Optional. A unique identifier for the Attacker, see Section 4.4.9. restriction Meijer, et al. Expires March 2003 [page 66]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Optional. Sets a restriction on the usage of the data in element. 4.8.1 The Contact Class The Contact Class contains contact information for a person or role in a CSIRT handling an incident. +--------------+ | Authority | +--------------+ /_\ | +--------------+ | Contact | +--------------+ 0..1 +----------------+ | STRING ident |<>----------| PersonName | | | +----------------+ | | 0..1 +----------------+ | |<>----------| PostalAddress | | | +----------------+ | | 0..1 +----------------+ | |<>----------| ContactHandle | | | +----------------+ +--------------+ Figure 4.29 Contact Class The aggregate classes that constitute Contact class are: PersonName Zero or one. Name of the person responsible for handling the current incident. ContactHandle Zero or one. Identification number (or handle) used to refer to personal (or role) information in different Registries. PostalAddress Zero or one. Postal Address of the person identified by PersonName. Contact is represented in the XML DTD as follows: Meijer, et al. Expires March 2003 [page 67]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT Contact ( PersonName?, ContactHandle?, PersonAddress?)> <!ATTLIST Contact ident ID #IMPLIED > The Contact class has one attribute: ident Optional. A unique identifier for the Contact element (see Section 3.4.9). 4.8.2 The IRTcontact Class The IRTcontact class contains an IRTcontact handle to a public registry (e.g., RIPE NCC database [18], Trusted Introducer database [19]) that references contact information for the CSIRT or network security manager serving the networks referenced in the Attacker or Victim class. This is represented in the XML DTD as follows: <!ENTITY % attvals.originIRT " ( unknown | ripencc | ti | arin | apnic | afnic | local ) "> <!ELEMENT IRTcontact > <!ATTLIST IRTcontact originIRT %attvals.originirt; 'unknown' > IRTcontact class has one attribute: originIRT Required. The registry which the IRTcontact handle references. The permitted values for this attribute are shown below. The default value is "unknown". Rank Keyword Description ---- ------- ----------- 0 unknown Origin of the name is not known 1 ripencc RIPE NCC database 2 ti Trusted Introducer database of CSIRTs 3 arin ARIN database 4 apnic APNIC database 5 afnic AFNIC database 6 local Name of IRT as it used by Incident object creator Meijer, et al. Expires March 2003 [page 68]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4.9 The Victim Class The Victim class augments information found in the Target class with further details related to the entity(ies)/person(s) identified as the target(s) of the incident activity. NOTE: Information found in the Victim class might be derived based on address and network information found in the Target class. However, particular algorithm or procedure is defined by Incident Handling System. +------------------+ | Victim | +------------------+ | STRING ident | 0..1 +---------------+ | ENUM restriction |<>------| Contact | | | +---------------+ | | 0..1 +---------------+ | |<>------| IRTcontact | | | +---------------+ | | 0..1 +---------------+ | |<>------| Location | +------------------+ +---------------+ Figure 4.11 The Victim Class The aggregate classes that constitute Victim are: Contact Zero or one. Contact information for the entity/person identified as a Victim. Location Zero or one. Location of VictimÆs node or system. This is a general definition of location that may depend on network structure or companyÆs geographical distribution. IRTcontact Zero or one. Contact information for the CSIRT or Network Security manager serving the NodeÆs network. Victim is represented in the XML DTD as follows: <!ELEMENT Victim ( Contact?, Location?, IRTconact?)> <!ATTLIST Victim Meijer, et al. Expires March 2003 [page 69]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 ident ID #IMPLIED restriction %attvals.restriction; 'default' > The Victim class has two attributes: ident Optional. A unique identifier for the Victim element, see Section 4.4.9. restriction Optional. Sets a restriction on the usage of the data in element. 4.10 The Record Class The Record class contains supportive data that provides a record of incident activity. The source of this activity record will be typically data exported from a monitoring tool or the results of a computer forensics investigation. The record data can consist of both data and textual information +------------------+ | Record | +------------------+ | STRING ident | 0..* +-------------+ | ENUM restriction |<>------| RecordData | +------------------+ +-------------+ Figure 4.12 The Record Class The aggregate class that constitutes Record is: RecordData Zero or more. Container for record data related to the current incident. Record is represented in the XML DTD as follows: <!ELEMENT Record ( RecordData*)> <!ATTLIST Record ident ID #IMPLIED restriction %attvals.restriction; 'default' > Meijer, et al. Expires March 2003 [page 70]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The Record class has two attributes: restriction Optional. Sets a restriction on the usage of the data in element. ident Optional. A unique identifier for the Record element, see Section 4.4.9. 4.10.1 The RecordData Class The RecordData class contains textual (e.g., logfiles, malicious scripts, list of changes if file system, etc.) and binary (e.g., disc images) suportive data +------------------+ | Record | +------------------+ /_\ | +------------------+ | RecordData | +------------------+ 0..* +--------------+ | STRING ident |<>----------| CorrRecord | | ENUM restriction | +--------------+ | | 0..1 +--------------+ | |<>----------| RecordDesc | | | +--------------+ | | 0..1 +--------------+ | |<>----------| RecordItem | | | +--------------+ +------------------+ Figure 4.25 The RecordData Class The aggregate classes that constitute RecordData are: CorrRecord Zero or more. RecordData of the Record class that contains Record data correlated with current Record data. RecordDesc Zero or one. Description of the supportive datafound in the RecordItem class. RecordItem Meijer, et al. Expires March 2003 [page 71]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Zero or one. Container for a particular piece of record data. This is represented in the XML DTD as follows: <!ENTITY % attvals.restriction " ( default | public | internal | restricted ) "> <!ELEMENT RecordData ( CorrRecord*, RecordDesc?, RecordItem? )> <!ATTLIST RecordData ident CDATA #IMPLIED restriction %attvals.restriction; #IMPLIED > The RecordData class has two attributes: ident Optional. A unique identifier for this RecordData (see Section 3.4.9). restriction Optional. Sets a restriction on the usage of the data in element. 4.10.2 The CorrRecord Class The CorrRecord class references the ID of other related RecordData for correlation. This is represented in the XML DTD as follows: <!ELEMENT CorrRecord ( CorrRecordID )> <!ATTLIST CorrRecord IncidentID ID #IMPLIED > The CorrRecord class has one attribute: IncidentID Optional. The type of data included in the element content. The permitted values for this attribute are shown below. The default value is "string". Meijer, et al. Expires March 2003 [page 72]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 4.10.3 The RecordDesc Class The RecordDesc class contains meta-information about supportive data in the ReportItem class. +----------------+ | RecordDesc | +----------------+ 0..1 +----------------+ | |------------| DetectTime | | | +----------------+ | | 0..1 +----------------+ | |<>----------| Analyzer | | | +----------------+ | | 0..1 +----------------+ | |<>----------| Description | | | +----------------+ +----------------+ Figure 4.26 The RecordDesc Class The aggregate classes that constitute RecordDesc are: DetectTime Zero or one. Timestamp of the supportive data. This data MUST be present if it is not already represented in the EvidenceItem class. Analyzer Zero or one. The facility used to gather the supportive data. The analyzer SHOULD define the name of the format, facility, tool, or device used to generate the supportive data if it is not self-describing (e.g. xml). Likewise, the analyzer SHOULD define the Node which detected the supportive data or from which it was extracted if this information is not represented elsewhere. Description Zero or one. Free-form text to make comments on or annotate the supportive data. This is represented in the XML DTD as follows: <!ELEMENT RecordDesc ( DetectTime?, Analyzer?, description? )> 4.10.4 The Analyzer Class Meijer, et al. Expires March 2003 [page 73]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The Analyzer class identifies the facility used to gather the evidence or tool generated Incident Alert. In case when Initial Incident registration is produced from the IDMEF message the Analyzer description may be taken from the IDMEF message where the Analyzer Class is mandatory and only one. The analyzer SHOULD define the name of the format, facility, tool, or device used to generate the evidence if it is not self-describing (e.g. xml). Likewise, the analyzer SHOULD define the Node which detected the evidence or from which it was extracted if this information is not represented elsewhere. For the purpose of compatibility the Analyzer Class is reused from the IDMEF. The Analyzer class is composed of two aggregate classes, as shown in Figure 4.38. +---------------------+ | Analyzer | +---------------------+ 0..1 +---------+ | STRING analyzerid |<>----------| Node | | STRING manufacturer | +---------+ | STRING model | 0..1 +---------+ | STRING version |<>----------| Process | | STRING class | +---------+ | STRING ostype | | STRING osversion | +---------------------+ Figure 4.38 The Analyzer Class The aggregate classes that make up Analyzer are: Node Zero or one. Information about the host or device on which the analyzer resides (network address, network name, etc.). Process Zero or one. Information about the process in which the analyzer is executing. This is represented in the XML DTD as follows: <!ELEMENT Analyzer ( Node?, Process? )> Meijer, et al. Expires March 2003 [page 74]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST Analyzer analyzerid CDATA '0' manufacturer CDATA #IMPLIED model CDATA #IMPLIED version CDATA #IMPLIED class CDATA #IMPLIED ostype CDATA #IMPLIED osversion CDATA #IMPLIED > The Analyzer class has seven attributes: analyzerid Optional. The attribute may be taken from the IDMEF message generated by Analyzer/IDS. For details see [IDMEF]. manufacturer Optional. The manufacturer of the analyzer software and/or hardware. model Optional. The model name/number of the analyzer software and/or hardware. version Optional. The version number of the analyzer software and/or hardware. class Optional. The class of analyzer software and/or hardware. ostype Optional. Operating system name. On POSIX systems, this is the value returned in utsname.sysname by the uname() system call, or the output of the "uname -s" command. osversion Optional. Operating system version. On POSIX systems, this is the value returned in utsname.release by the uname() system call, or the output of the "uname -r" command. The "manufacturer", "model", "version", and "class" attributes' contents are vendor-specific, but may be used together to identify different types of analyzers. 4.10.5 The RecordItem Class The RecordItem class is a container for the arbitrary Meijer, et al. Expires March 2003 [page 75]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 supportive data. This is represented in the XML DTD as follows: <!ENTITY % attvals.dtype " ( boolean | byte | character | string | binary | xml | file | path | url ) "> <!ELEMENT RecordItem ANY > <!ATTLIST RecordItem dtype %attvals.dtype; 'string' > The RecordItem class has one attribute: dtype Required. The type of data included in the element content. The permitted values for this attribute are shown below. The default value is "string". Rank Keyword Description ---- ------- ----------- 0 boolean The element contains a boolean value, i.e., the strings "true" or "false" 1 byte The element content is a single 8-bit byte (see Section 3.4.4) 2 character The element content is a single character (see Section 3.4.3) 3 integer The element content is an integer (see Section 3.4.1) 4 string The element content is a string (see Section 3.4.3) 5 binary The element content is base-64 encoded binary data. 6 xml The element content is XML-tagged data (see Section 5.2) 7 file The element contains a name of file that may be stored on any media, this information should be necessary for CSIRT 8 path The element content is a path to a file location on IHS system 9 url The element content is a URL to the data 4.11 The AdditionalData Class The AdditionalData class is used to provide information that cannot be represented by the data model. AdditionalData can be Meijer, et al. Expires March 2003 [page 76]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 used to provide atomic data (integers, strings, etc.) in cases where only small amounts of additional information needed to be represented. However, the class can also be used to extend the data model and the DTD to support proprietary IODEF extensions or for encapsulating external XML document such as IDMEF messages. Detailed instructions for extending the data model and the DTD are provided in Section 5. The AdditionalData element is declared in the XML DTD as follows: <!ENTITY % attvals.adtype " ( boolean | byte | character | date-time | integer | ntpstamp | portlist | real | string | xml ) "> <!ELEMENT AdditionalData ANY > <!ATTLIST AdditionalData type %attvals.adtype; 'string' local CDATA #IMPLIED > The AdditionalData class has two attributes: type Required. The type of data included in the element content. The permitted values for this attribute are shown below. The default value is "string". Rank Keyword Description ---- ------- ----------- 0 boolean The element contains a boolean value, i.e., the strings "true" or "false" 1 byte The element content is a single 8-bit byte (see Section 3.4.4) 2 character The element content is a single character (see Section 3.4.3) 3 date-time The element content is a date-time string (see Section 3.4.6) 4 integer The element content is an integer (see Section 3.4.1) 5 ntpstamp The element content is an NTP timestamp (see Section 3.4.7) 6 portlist The element content is a list of ports (see Section 3.4.8) 7 real The element content is a real number (see Section 3.4.2) 8 string The element content is a string (see Section 3.4.3) 9 xml The element content is XML-tagged data (see Section 5.2) Meijer, et al. Expires March 2003 [page 77]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 local Optional. A string describing the meaning of the element content if used by CSIRT for a purpose not described in this document. These values will be vendor/implementation dependent. The method for ensuring that managers understand the string is outside the scope of this specification. 4.12 The History Class The History class contains a log of the significant events that occurred or actions performed by the involved parties (e.g., initial reporter, investigating CSIRT, or involved system administrators) during the course of handling the incident. The level of detail maintained in this log is left up to the discretion of those handling the incident. The History class +------------------+ | History | +------------------+ | | 0..* +-------------+ | ENUM restriction |<>------| HistoryItem | +------------------+ +-------------+ Figure 4.15 The History class The aggregate class that constitutes History is: HistoryItem Zero or more. Describes a particular event or action related to the current incident. History is represented in the XML DTD as follows: <!ELEMENT History ( HistoryData* )> <!ATTLIST History restriction %attvals.restriction; 'default' > The History class has one attribute: restriction Meijer, et al. Expires March 2003 [page 78]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Optional. Sets a restriction on the usage of the data in the element 4.12.1 The HistoryItem class The HistoryItem class documents a particular significant action or event that occurred in the course of handling the current incident. +--------------------+ | HistoryItem | +--------------------+ | STRING IncidentID | 0..1 +-------------+ | STRING AuthorityID |<>----------| DateTime | | ENUM restriction | +-------------+ | ENUM type | 0..1 +-------------+ | |<>----------| Description | +--------------------+ +-------------+ Figure 4.xx HistoryItem class The aggregate classes that constitute HistoryItem are: DateTime Zero or one. A timestamp of when the action or event occurred. Description Zero or one. A description of the action or event. HistoryDataItem is represented in the XML DTD as follows: <!ELEMENT HistoryDataItem ( DateTime?, Description?)> <!ATTLIST HistoryDataItem IncidentID PCDATA #IMPLIED AuthorityID PCDATA #REQUIRED restriction %attvals.restriction; #IMPLIED type %attvals.history; #IMPLIED > The HistoryDataItem class has four attributes: IncidentID Optional. Identifies the incident ID associated with this history entry. AuthorityID Required. Identifies the the entity that made this history Meijer, et al. Expires March 2003 [page 79]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 entry. restriction Optional. Sets a restriction on the usage of the data in element. type Required. Categorizes the type of event or action taken when handling the incident. Rank Keyword Description ---- ------- ----------- 0 unknown An uncategorized history entry 1 triaged This incident has been received and processed by a given incident handling system 2 acked-reporter Acknowledgment of incident information was sent to a reporter 3 notification Based on the incident data, notification of their involvement was sent to an entity 4 request-info A request for further information from an involved party was made 5 got-info Additional information about this incident was either received or produced 6 remediation The incident has been resolved; a short description may be included 7 shared-info Information about this incident was shared with another party 4.12.2 The DateTime Class The supportive class to mark up date and time information. It is represented in the XML DTD as follows: <!ELEMENT DateTime (#PCDATA) > The DATETIME format of the <DateTime> element content is described in Section 3.4.6. 4.13 The Assessment Class The Assessment class is used to provide the CSIRT's assessment of an event - its impact, actions taken in response, and confidence. For the purpose of compatibility the Assessment Class is reused Meijer, et al. Expires March 2003 [page 80]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 from the IDMEF. The Assessment class is composed of three aggregate classes, as shown in Figure 4.13. +------------------+ | Assessment | +------------------+ 0..1 +------------+ | ENUM restriction |<>----------| Impact | | | +------------+ | | 0..* +------------+ | |<>----------| Action | | | +------------+ | | 0..1 +------------+ | |<>----------| Confidence | | | +------------+ +------------------+ Figure 4.13 - The Assessment Class The aggregate classes that make up Assessment are: Impact Zero or one. The CSIRT's assessment of the impact of the event on the target(s). Action Zero or more. The action(s) taken by the CSIRT in response to the event. Confidence A measurement of the confidence the CSIRT has in its evaluation of the event. This is represented in the XML DTD as follows: <!ELEMENT Assessment ( Impact?, Action*, Confidence? )> <!ATTLIST Assessment restriction %attvals.restriction; 'default' %attlist.global; > 4.13.1 The Impact Class The Impact class is used to provide the CSIRT's assessment of the impact of the event on the target(s). It is represented in Meijer, et al. Expires March 2003 [page 81]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 the XML DTD as follows: <!ENTITY % attvals.severity " ( low | medium | high ) "> <!ENTITY % attvals.completion " ( failed | succeeded ) "> <!ENTITY % attvals.impacttype " ( admin | dos | file | recon | user | other ) "> <!ELEMENT Impact (#PCDATA | EMPTY)* > <!ATTLIST Impact severity %attvals.severity; #IMPLIED completion %attvals.completion; #IMPLIED type %attvals.impacttype; 'other' %attlist.global; > The Impact class has three attributes: severity An estimate of the relative severity of the event. The permitted values are shown below. There is no default value. Rank Keyword Description ---- ------- ----------- 0 low Low severity 1 medium Medium severity 2 high High severity completion An indication of whether the CSIRT believes the attempt that the event describes was successful or not. The permitted values are shown below. There is no default value. Rank Keyword Description ---- ------- ----------- 0 failed The attempt was not successful 1 succeeded The attempt succeeded type The type of attempt represented by this event, in relatively broad categories. The permitted values are shown below. The default value is "other." Rank Keyword Description ---- ------- ----------- Meijer, et al. Expires March 2003 [page 82]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 0 admin Administrative privileges were attempted or obtained 1 dos A denial of service was attempted or completed 2 file An action on a file was attempted or completed 3 recon A reconnaissance probe was attempted or completed 4 user User privileges were attempted or obtained 5 other Anything not in one of the above categories All three attributes are optional. The element itself may be empty, or may contain a textual description of the impact, if the CSIRT is able to provide additional details. 4.13.2 The Action Class The Action class is used to describe any actions taken by the CSIRT owning current Incident Object in course of its handling or investigating. It is represented in the XML DTD as follows: <!ENTITY % attvals.actioncat " ( block-installed | notification-sent | taken-offline | other ) "> <!ELEMENT Action (#PCDATA | EMPTY)* > <!ATTLIST Action category %attvals.actioncat; 'other' %attlist.global; > Action has one attribute: category Optional. The type of action taken by CSIRT or automatic Intrusion detection tools. The permitted values are shown below. The default value is "other." Rank Keyword Description ---- ------- ----------- 0 block-installed A block of some sort was installed to prevent an attack from reaching its destination. The block could be a port block, address block, etc., or disabling a user account. 1 notification-sent A notification message of some Meijer, et al. Expires March 2003 [page 83]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 sort was sent out-of-band (via pager, e-mail, etc.). Does not include the transmission of this alert. 2 taken-offline A system, computer, or user was taken offline, as when the computer is shut down or a user is logged off. 3 other Anything not in one of the above categories. The element itself may be empty, or may contain a textual description of the action, if the description of the taken actions needs to be expressed in free language. 4.13.3 The Confidence Class The Confidence class is used to represent the CSIRT's best estimate of the validity of its Incident Assessment. It is represented in the XML DTD as follows: <!ENTITY % attvals.rating " ( low | medium | high | numeric ) "> <!ELEMENT Confidence (#PCDATA | EMPTY)* > <!ATTLIST Confidence rating %attvals.rating; 'numeric' %attlist.global; > The Confidence class has one attribute: rating The CSIRT's rating of its assessment validity. The permitted values are shown below. The default value is "numeric." Rank Keyword Description ---- ------- ----------- 0 low The CSIRT/triage has little confidence in its validity 1 medium The CSIRT/triage has average confidence in its validity 2 high The CSIRT/triage has high confidence in its validity 3 numeric The CSIRT/triage has provided a posterior probability value indicating its confidence in Meijer, et al. Expires March 2003 [page 84]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 its validity This element should be used only when the CSIRT/triage can produce meaningful information. Systems that can output only a rough heuristic should use "low", "medium", or "high" as the rating value. In this case, the element content should be omitted. Systems capable of producing reasonable probability estimates should use "numeric" as the rating value and include a numeric confidence value in the element content. This numeric value should reflect a posterior probability (the probability that an attack has occurred given the data seen by the detection system and the model used by the system). It is a floating point number between 0.0 and 1.0, inclusive. The number of digits should be limited to those representable by a single precision floating point value, and may be represented as described in Section 3.4.2. NOTE: It should be noted that different types of Incident handling Systems may compute confidence values in different ways and that in many cases, confidence values from different CSIRTs should not be compared (for example, if the CSIRTs use different methods of computing or representing confidence, or are of different types or configurations). Care should be taken when implementing systems that process confidence values (such as event correlators) not to make comparisons or assumptions that cannot be supported by the system's knowledge of the environment in which it is working. 4.14 The Authority Class The Authority class names and provides contact information for the CSIRT who created and is handling the incident. +------------------+ | Authority | +------------------+ | STRING ident | +---------------+ | ENUM restriction |<>------| Organization | | | +---------------+ | | 0..1 +---------------+ | |<>------| Contact | +------------------+ +---------------+ Figure 4.14 The Authority Class Meijer, et al. Expires March 2003 [page 85]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 The aggregate classes that constitute Authority are: Organization Exactly one. Name or organization handling the current incident. Contact Zero or one. Contact information for the Organization handling the incident. Authority is represented in the XML DTD as follows: <!ELEMENT Authority ( Organization, Contact? )> <!ATTLIST Authority ident ID #IMPLIED restriction %attvals.restriction; 'default' > The Authority class has two attributes: ident Optional. A unique identifier for the Authority element (see Section 3.4.9). 4.14.1 The Organization Class The Organization class describes a CSIRT involved in incident handling. This class is a mandatory subordinate element of the mandatory Authority class. +--------------+ | Authority | +--------------+ /_\ | +--------------+ | Organization | +--------------+ 0..1 +----------------+ | STRING ident |<>----------| OrganizationID | | | +----------------+ | | 0..1 +----------------+ | |<>----------| OrgName | | | +----------------+ Meijer, et al. Expires March 2003 [page 86]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | | 0..1 +----------------+ | |<>----------| PostalAddress | | | +----------------+ | | 0..1 +----------------+ | |<>----------| Email | | | +----------------+ | | 0..1 +----------------+ | |<>----------| Telephone | | | +----------------+ | | 0..1 +----------------+ | |<>----------| Fax | | | +----------------+ +--------------+ Figure 4.28 Organization Class The aggregate classes that constitute the Organization class are: OrganizationID Zero or one. The identification number of the Organization. The ID can be derived from known registries such as RIPE NCC, TI, etc. OrgName Zero or one. Name of the organization as it used in official post address. PostalAddress Zero or one. Postal Address of the organization. Email Zero or one. Email address of the organization. Telephone Zero or one. Telephone number of the organization. Fax Zero or one. Fax number of the organization. At a minimum, the Organization class MUST have either a an OrgName or OrganizationID. Organization is represented in the XML DTD as follows: <!ELEMENT Organization ( (OrganizationID? | OrgName?), PostalAddress?, Email?, Telephone?, Fax? )> Meijer, et al. Expires March 2003 [page 87]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST Organization ident ID #IMPLIED > The Organization class has one attributes: ident Optional. A unique identifier for the Organization element (see Section 3.4.9). 5. Extending the IODEF In order to support the changing activity of CSIRTS, the IODEF data model and DTD will need to evolve along with them. To allow new features to be added, both the data model and the DTD can be extended as described in this section. As these extensions mature, they can then be incorporated into future versions of the specification. 5.1 Extending the Data Model There are two mechanisms for extending the IODEF data model: inheritance and aggregation (see Section 3.1.1). + By using inheritance, new subclasses may be derived and given additional attributes or operations not found in the superclass. + Aggregation allows for entirely new, self-contained classes to be created and associated with a parent class. Of the two extension mechanisms, inheritance is preferred, because it preserves the existing data model and the operations (methods) executed on the classes of the model. There are explicit guidelines for extending the XML DTD (see Section 5.2) which set limits on where extensions to the data model may be made. 5.2 Extending the XML DTD There are two ways to extend the IODEF XML DTD: 1. The AdditionalData class (see Section 4.2.4.5) allows implementers to include arbitrary "atomic" data items (integers, strings, etc.) in an Incident or IncidentAlert class. This approach SHOULD be used whenever possible. Meijer, et al. Expires March 2003 [page 88]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 2. The AdditionalData class allows implementers to extend the IODEF XML DTD with additional DTD "modules" that describe arbitrarily complex data types and relationships. To extend the IODEF DTD with a new DTD "module," these guidelines MUST be followed: 1. The IODEF description MUST include a document type declaration (see Section 3.3.1.3). 2. The document type declaration MUST define a parameter entity (see Section 3.2.4) that contains the location of the extension DTD, and then reference that entity: <!DOCTYPE IODEF-Description SYSTEM "/path/to/IODEF-Description.dtd" [ <!ENTITY % x-extension SYSTEM "/path/to/extension.dtd"> %x-extension; ]> In this example, the "x-extension" parameter entity is defined and then referenced, causing the DTD for the extension to be read by the XML parser. The name of the parameter entity defined for this purpose MUST be a string beginning with "x-"; there are no other restrictions on the name (other than those imposed on all entity names by XML). Multiple extensions may be included by defining multiple entities and referencing them. For example: <!DOCTYPE IODEF-Description SYSTEM "/path/to/IODEF-Description.dtd" [ <!ENTITY % x-extension SYSTEM "/path/to/extension.dtd"> <!ENTITY % x-another SYSTEM "/path/to/another.dtd"> %x-extension; %x-another; ]> 3. Extension DTDs MUST declare all of their elements and attributes in a separate XML namespace. Extension DTDs MUST NOT declare any elements or attributes in the "IODEF" or default namespaces. For example, the "test" extension might be declared as follows: Meijer, et al. Expires March 2003 [page 89]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT test:test ( test:a, test:b, test:c )> <!ATTLIST test:test xmlns CDATA #IMPLIED xmlns:test CDATA #IMPLIED > <!ELEMENT test:a (#PCDATA)> <!ATTLIST test:a test:attr CDATA #IMPLIED > <!ELEMENT test:b (#PCDATA)> <!ELEMENT test:c (#PCDATA)> 4. Extensions MUST only be included in the AdditionalData class of the Incident class whose "type" attribute is "xml". For example: <IODEF-Description version="0.0"> <Incident ident="..."> ... <AdditionalData type="xml"> <test:test xmlns:test="http://www.ietf.org/iodef/test.html" xmlns="http://www.ietf.org/iodef/test.html"> <test:a test:attr="...">...</test:a> <test:b>...</test:b> <test:c>...</test:c> </test:test> </AdditionalData> </Incident> </IODEF-Description> 6. Special Considerations This section discusses some of the special considerations that must be taken into account by implementers of the IODEF. 6.1 XML Validity and Well-Formedness It is expected that IODEF-compliant applications will normally not include the IODEF DTD in their communications. Instead, the DTD will be referenced in the document type declaration of the IODEF document rsee Section 3.3.1). Such IODEF documents will be Meijer, et al. Expires March 2003 [page 90]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 well-formed and valid as defined in [5]. Other IODEF documents will be specified that do not include the document prolog (e.g., entries in an IODEF-format database). Such IODEF documents will be well-formed but not valid. Generally, well-formedness implies that a document has a single element that contains everything else (e.g., "<Book>"), and that all the other elements nest nicely within each other without any overlapping (e.g., a "chapter" does not start in the middle of another "chapter"). Validity further implies that not only is the document well-formed, but it also follows specific rules (contained in the Document Type Definition) about which elements are "legal" in the document, how those elements nest within other elements, and so on (e.g., a "chapter" does not begin in the middle of a "title"). A document cannot be valid unless it references a DTD. XML processors are required to parse any well-formed document, valid or not. The purpose of validation is to make the processing of the document (what's done with the data after it's parsed) easier. Without validation, a document may contain elements in nonsense order, elements "invented" by the author that the processing application doesn't understand, and so on. IODEF documents MUST be well-formed. IODEF documents SHOULD be valid whenever both possible and practical. 6.2 Unrecognized XML Tags On occasion, an IODEF-compliant application may receive a well- formed, or even well-formed and valid, IODEF document containing tags that it does not understand. The tags may be either: + Recognized as "legitimate" (a valid document), but the application does not know the semantic meaning of the element's content; or + Not recognized at all. IODEF-compliant applications MUST continue to process IODEF documents that contain unknown tags, provided that these documents are well- formed (see Section 6.1). It is up to the individual application to decide how to process (or ignore) any content from the unknown tag(s). Special issue is related to inheritance relation between Meijer, et al. Expires March 2003 [page 91]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Incident/Attacker related classes IDMEF and IODEF, e.g. IODEF message may be simply wrap up into IDMEF container for the IncidentAlert class. In particular case of relations between IODEF and IDMEF, the IODEF may be treated as IDMEF extension applying inheritance to incorporate Alert/IDMEF data structure into Attack Class of IODEF. When Incident description is produced of IDMEF message, IODEF may use directly related data classes from IDMEF. In this context it is recommended that IHS understands both format - IODEF and IDMEF. This may be achieved by mapping part of IDMEF classes (XML tags) related to Attack description into IODEF classes. This is to be not difficult task because of initial approach to match IODEF and IDMEF XML namespaces. Otherwise IODEF parser will still be able to parser well- formed IDMEF document and recognize important XML tags, which meaning in IODEF is inherited from IDMEF. 6.3 Digital Signatures The joint IETF/W3C XML Signature Working Group is currently working to specify XML digital signature processing rules and syntax [16]. XML Signatures provide integrity, message authentication, and/or signer authentication services for data of any type, whether located within the XML that includes the signature or elsewhere. The IODEF requirements [2] recommend that the IODEF should support content confidentiality, integrity, authentication and non- repudiation. These requirements can be achieved by the inclusion of digital signatures within an IODEF document. Additional security considerations may be applied to the communications methods and protocols used for IODEF documents exchange. Specifications for the use of digital signatures within IODEF documents are outside the scope of this document. If such functionality is needed, the use of the XML Signature standard is RECOMMENDED. 7. Experimental implementation and examples There is an ongoing effort among a few European CSIRTs to implement IODEF in their daily incident handling work [17]. The results this project should be available in late 2001. This section provides examples of IODEF encoded Incident data. The Meijer, et al. Expires March 2003 [page 92]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 examples are provided for illustrative purposes only and do not necessarily represent the only (or even the "best") way to encode these particular incidents. 8. The IODEF Document Type Definition <?xml version="1.0" encoding="UTF-8"?> <!-- ******************************************************************** ******************************************************************** *** Incident Object Description and Exchange Format XML DTD *** *** Version 00, October 2002 *** *** *** ******************************************************************** ******************************************************************** --> <!-- ==================================================================== === SECTION 1. Imported Names === ==================================================================== --> <!-- | Media type, as per [RFC2045] --> <!ENTITY % ContentType "CDATA"> <!-- | comma-separated list of media types, as per [RFC2045] --> <!ENTITY % ContentTypes "CDATA"> <!-- | Character encoding, as per [RFC2045] --> <!ENTITY % Charset "CDATA"> <!-- | A space separated list of character encodings, as per [RFC2045] --> <!ENTITY % Charsets "CDATA"> <!-- | Language code, as per [RFC1766] --> <!ENTITY % LanguageCode "NMTOKEN"> <!-- | A single character from [ISO10646] --> <!ENTITY % Character "CDATA"> <!-- Meijer, et al. Expires March 2003 [page 93]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 | Date and time information. ISO date format --> <!ENTITY % Datetime "CDATA"> <!-- ==================================================================== === SECTION 2. Attribute list declarations. === ==================================================================== --> <!-- | Attributes of the IODEF element. In general, the fixed value | of this attribute will change each time a new version of | the DTD is released. --> <!ENTITY % attlist.iodef " version CDATA #FIXED '0.05' "> <!-- | Attributes of all elements. These are the "XML" attributes | that every element should have. Space handling, name space, and | language. --> <!ENTITY % attlist.global " xmlns:iodef CDATA #FIXED 'urn:iana:xml:ns:iodef' xmlns CDATA #FIXED 'urn:iana:xml:ns:iodef' xml:space (default | preserve) 'default' xml:lang %LanguageCode; #IMPLIED "> <!-- ==================================================================== === SECTION 3. Attribute value declarations. Enumerated values === === for the many element-specific attribute lists. === ==================================================================== --> <!-- | Values for the Address.category attribute. --> <!ENTITY % attvals.addrcat " ( unknown | atm | e-mail | lotus-notes | mac | sna | vm | ipv4-addr | ipv4-addr-hex | ipv4-net | ipv4-net-mask | ipv6-addr | ipv6-addr-hex | ipv6-net | ipv6-net-mask ) "> <!-- | Values for the AdditionalData.type attribute. --> <!ENTITY % attvals.adtype " ( boolean | byte | character | date-time | integer | ntpstamp | portlist | real | string | xml ) Meijer, et al. Expires March 2003 [page 94]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 "> <!-- | Values for the Data.type attribute used in EvidenceItem. --> <!ENTITY % attvals.dtype " ( boolean | byte | character | string | binary | xml | file | path | url ) "> <!-- | Values for the Id.type attribute. --> <!ENTITY % attvals.idtype " ( current-user | original-user | target-user | user-privs | current-group | group-privs ) "> <!-- | Values for the Impact.completion attribute. --> <!ENTITY % attvals.completion " ( failed | succeeded ) "> <!-- | Values for the File.category attribute. --> <!ENTITY % attvals.filecat " ( current | original ) "> <!-- | Values for the Impact.type attribute. --> <!ENTITY % attvals.impacttype " ( admin | dos | file | recon | user | other ) "> <!-- | Values for the Linkage.category attribute. --> <!ENTITY % attvals.linkcat " ( hard-link | mount-point | reparse-point | shortcut | stream | symbolic-link ) "> <!-- | Values for the Confidence.rating attribute. --> <!ENTITY % attvals.rating " ( low | medium | high | numeric ) "> <!-- | Values for the Impact.severity attribute. --> Meijer, et al. Expires March 2003 [page 95]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ENTITY % attvals.severity " ( low | medium | high ) "> <!-- | Values for the Node.category attribute. --> <!ENTITY % attvals.nodecat " ( unknown | ads | afs | coda | dfs | dns | kerberos | nds | nis | nisplus | nt | wfw ) "> <!-- | Values for the NodeRole.category attribute. --> <!ENTITY % attvals.noderolecat " ( unknown | client | server-internal | server-public | www | mail | messaging | streaming | voice | file | ftp | p2p | name | directory | credential | print | application | database | infra | log ) "> <!-- | Values for the Classification.origin attribute. --> <!ENTITY % attvals.origin " ( unknown | bugtraqid | cve | vendor-specific | irt-local ) "> <!-- | Values for the IRTcontact.originIRT attribute --> <!ENTITY % attvals.originIRT " ( unknown | ripencc | ti | arin | apnic | afnic | local ) "> <!-- | Defines purpose of the IODEF Object --> <!ENTITY % attvals.purpose " ( unknown | report | handling | communication | statistics | experimental ) "> <!-- | Defines restriction on access to an element's content --> <!ENTITY % attvals.restriction " (default | public | internal | restricted ) "> <!-- | Values for the User.category attribute. --> <!ENTITY % attvals.usercat " ( unknown | application | os-device ) "> Meijer, et al. Expires March 2003 [page 96]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!-- | Values for yes/no attributes such as Source.spoofed and | Target.decoy. --> <!ENTITY % attvals.yesno " ( unknown | yes | no ) "> <!-- ==================================================================== == Section 4.2 The IODEF-Description class == ==================================================================== --> <!ELEMENT IODEF-Description ((Incident | IncidentAlert)*)> <!ATTLIST IODEF-Description %attlist.iodef; %attlist.global; > <!-- ==================================================================== == Section 4.3 The Incident class == ==================================================================== --> <!ELEMENT Incident (Attack+, Attacker*, Victim*, Method*, Evidence?, CorrelationIncident?, Authority, History?, AdditionalData*)> <!ATTLIST Incident incidentID CDATA #IMPLIED restriction %attvals.restriction; #IMPLIED purpose %attvals.purpose; #REQUIRED %attlist.global; > <!-- ==================================================================== == Section 4.4 The CorrelationIncident class == ==================================================================== --> <!ELEMENT CorrelationIncident (EventList, IncidentID, EvidenceDataID)> <!ATTLIST CorrelationIncident restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== == Section 4.4.1 The EventList class == ==================================================================== Meijer, et al. Expires March 2003 [page 97]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 --> <!ELEMENT EventList ((IncidentID?, EvidenceDataID*, datetime?)*)> <!ATTLIST EventList %attlist.global; > <!-- ==================================================================== == Section 4.5 The IncidentAlert class == ==================================================================== --> <!ELEMENT IncidentAlert (History?, Authority, AdditionalData+)> <!ATTLIST IncidentAlert incidentID CDATA #IMPLIED %attlist.global; restriction %attvals.restriction; #IMPLIED > <!-- ==================================================================== === Section 4.6 The Attack class === ==================================================================== --> <!ELEMENT Attack (Target*, Source*, Description*, DetectTime?, StartTime?, EndTime?)> <!ATTLIST Attack ident CDATA "0" restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.6.1 The Source class === ==================================================================== --> <!-- Elements Target and Source of IODEF are re-used from IDMEF--> <!ELEMENT Source (Node?, User?, Process?, Service?, program?, os?)> <!ATTLIST Source ident CDATA "0" spoofed %attvals.yesno; "unknown" interface CDATA #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.6.2 The Node class === ==================================================================== --> Meijer, et al. Expires March 2003 [page 98]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT Node (((name | Address), Address*), datetime?, name?, Address*, Location?, NodeRole*)> <!ATTLIST Node ident CDATA "0" category %attvals.nodecat; "unknown" %attlist.global; > <!-- ==================================================================== === Section 4.6.2.1 The Address class === ==================================================================== --> <!ELEMENT Address (address, netmask?)> <!ATTLIST Address ident CDATA "0" category %attvals.addrcat; "unknown" vlan-name CDATA #IMPLIED vlan-num CDATA #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.6.2.2 The NodeRole class === ==================================================================== --> <!ELEMENT NodeRole EMPTY> <!ATTLIST NodeRole category %attvals.noderolecat; "unknown" > <!-- ==================================================================== === Section 4.6.3 The User class === ==================================================================== --> <!ELEMENT User (UserId+)> <!ATTLIST User ident CDATA "0" category %attvals.usercat; "unknown" %attlist.global; > <!-- ==================================================================== === Section 4.6.3.1 The UserId class === ==================================================================== Meijer, et al. Expires March 2003 [page 99]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 --> <!ELEMENT UserId (name | number | (name, number))> <!ATTLIST UserId ident CDATA "0" type %attvals.idtype; "original-user" %attlist.global; > <!-- ==================================================================== === Section 4.6.4 The Process class === ==================================================================== --> <!ELEMENT Process (name, pid?, path?, arg*, env*)> <!ATTLIST Process ident CDATA "0" %attlist.global; > <!-- ==================================================================== === Section 4.6.5 The Service Class === ==================================================================== --> <!ELEMENT Service (((name | port | (name, port)) | portlist), protocol?, SNMPService?, WebService?)> <!ATTLIST Service ident CDATA "0" %attlist.global; > <!-- ==================================================================== === Section 4.6.5.1 The WebService Class === ==================================================================== --> <!ELEMENT WebService (url, cgi?, http-method?, arg*)> <!ATTLIST WebService %attlist.global; > <!-- ==================================================================== === Section 4.6.5.2 The SNMPService Class === ==================================================================== --> <!ELEMENT SNMPService (oid?, community?, command?)> <!ATTLIST SNMPService %attlist.global; Meijer, et al. Expires March 2003 [page 100]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 > <!-- ==================================================================== === Section 4.6.6 The Target class === ==================================================================== --> <!ELEMENT Target (Node?, User?, Process?, Service?, program?, os?, FileList?)> <!ATTLIST Target ident CDATA "0" decoy %attvals.yesno; "unknown" interface CDATA #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.6.7 The FileList class === ==================================================================== --> <!--Elements FileList with respective subelements of IODEF are re-used from IDMEF--> <!ELEMENT FileList (File+)> <!ATTLIST FileList %attlist.global; > <!-- ==================================================================== === Section 4.6.7.1 The File class === ==================================================================== --> <!ELEMENT File (name, path, create-time?, modify-time?, access-time?, data-size?, disk-size?, FileAccess*, Linkage*, Inode?)> <!ATTLIST File ident CDATA "0" category %attvals.filecat; #REQUIRED fstype CDATA #REQUIRED %attlist.global; > <!-- ==================================================================== === Section 4.6.7.2 The FileAccess class === ==================================================================== --> Meijer, et al. Expires March 2003 [page 101]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ELEMENT FileAccess (UserId, permission+)> <!ATTLIST FileAccess %attlist.global; > <!-- ==================================================================== === Section 4.6.7.3 The Linkage class === ==================================================================== --> <!ELEMENT Linkage ((name, path) | File)> <!ATTLIST Linkage category %attvals.linkcat; #REQUIRED %attlist.global; > <!-- ==================================================================== === Section 4.6.7.4 The Inode class === ==================================================================== --> <!ELEMENT Inode (change-time?, (number, major-device, minor-device)?, (c-major-device, c-minor-device)?)> <!ATTLIST Inode %attlist.global; > <!-- ==================================================================== === Section 4.6.8 The Description class === ==================================================================== --> <!ELEMENT Description ANY> <!ATTLIST Description %attlist.global; > <!-- ==================================================================== === Section 4.6.9 The DetectTime class === ==================================================================== --> <!ELEMENT DetectTime (#PCDATA)> <!ATTLIST DetectTime ntpstamp CDATA #REQUIRED %attlist.global; > Meijer, et al. Expires March 2003 [page 102]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!-- ==================================================================== === Section 4.6.10 The StartTime class === ==================================================================== --> <!ELEMENT StartTime (#PCDATA)> <!ATTLIST StartTime %attlist.global; > <!-- ==================================================================== === Section 4.6.11 The EndTime class === ==================================================================== --> <!ELEMENT EndTime (#PCDATA)> <!ATTLIST EndTime %attlist.global; > <!-- ==================================================================== === Section 4.7 The Method class === ==================================================================== --> <!ELEMENT Method (Classification*, Description*)> <!ATTLIST Method %attlist.global; ident CDATA "0" restriction %attvals.restriction; #IMPLIED > <!-- ==================================================================== === Section 4.7.1 The Classification class === ==================================================================== --> <!ELEMENT Classification (name, url)> <!ATTLIST Classification origin %attvals.origin; "unknown" %attlist.global; > <!-- ==================================================================== === Section 4.8 The Attacker class === ==================================================================== --> <!ELEMENT Attacker (Contact?, Location?, IRTcontact?)> Meijer, et al. Expires March 2003 [page 103]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST Attacker %attlist.global; ident CDATA "0" restriction %attvals.restriction; #IMPLIED spoofed %attvals.yesno; "unknown" > <!-- ==================================================================== === Section 4.8.1 The Contact class === ==================================================================== --> <!ELEMENT Contact (PersonName?, PostalAddress?, ContactHandle?)> <!ATTLIST Contact %attlist.global; > <!-- ==================================================================== === Section 4.8.2 The IRTContact class === ==================================================================== --> <!ENTITY % attvals.originIRT " ( unknown | ripencc | ti | arin | apnic | afnic | local ) "> <!ELEMENT IRTcontact > <!ATTLIST IRTcontact originIRT %attvals.originIRT; 'unknown' > <!-- ==================================================================== === Section 4.9 The Victim class === ==================================================================== --> <!ELEMENT Victim (Contact?, Location?, IRTcontact?)> <!ATTLIST Victim restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.10 The Record class === ==================================================================== --> <!ELEMENT Record (RecordData)> Meijer, et al. Expires March 2003 [page 104]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST Record restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.10.1 The RecordData class === ==================================================================== --> <!ELEMENT RecordData (CorrRecord*, RecordDesc?, RecordItem?)> <!ATTLIST RecordData %attlist.global; ident CDATA "0" restriction %attvals.restriction; #IMPLIED > <!-- ==================================================================== === Section 4.10.2 The CorrRecord class === ==================================================================== --> <!ELEMENT CorrRecord (CorrRecordID)> <!ATTLIST CorrRecord IncidentID CDATA #IMPLIED > <!-- ==================================================================== === Section 4.10.3 The RecordDesc class === ==================================================================== --> <!ELEMENT RecordDesc (DetectTime?, Analyzer?, Description?)> <!ATTLIST RecordDesc %attlist.global; > <!-- ==================================================================== === Section 4.10.4 The Analyzer class === ==================================================================== --> <!--Element Analyzer of IODEF is re-used from IDMEF--> <!ELEMENT Analyzer (Node?, Process?)> <!ATTLIST Analyzer analyzerid CDATA "0" manufacturer CDATA #IMPLIED model CDATA #IMPLIED Meijer, et al. Expires March 2003 [page 105]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 version CDATA #IMPLIED class CDATA #IMPLIED ostype CDATA #IMPLIED osversion CDATA #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.10.5 The RecordItem class === ==================================================================== --> <!ELEMENT RecordItem ANY> <!ATTLIST RecordItem dtype %attvals.dtype; "string" > <!-- ==================================================================== === Section 4.11 The AdditionalData class === ==================================================================== --> <!ELEMENT AdditionalData ANY> <!ATTLIST AdditionalData type %attvals.adtype; "string" %ContentType; CDATA #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.12 The History class === ==================================================================== --> <!ELEMENT History (HistoryData* )> <!ATTLIST History restriction %attvals.restriction; 'default' > <!-- ==================================================================== === Section 4.12.1 The HistoryItem class === ==================================================================== --> <!ELEMENT HistoryDataItem ( DateTime?, Description?)> <!ATTLIST HistoryDataItem IncidentID PCDATA #IMPLIED AuthorityID PCDATA #REQUIRED Meijer, et al. Expires March 2003 [page 106]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 restriction %attvals.restriction; #IMPLIED type %attvals.history; #IMPLIED > <!-- ==================================================================== === Section 4.12.2 The DateTime class === ==================================================================== --> <!ELEMENT DateTime (#PCDATA)> <!ATTLIST DateTime %DateTime; timestamp $DateTime; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.13 The Assessment class === ==================================================================== --> <!ELEMENT Assessment (Impact?, Action*, Confidence?)> <!ATTLIST Assessment restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.13.1 The Impact class === ==================================================================== --> <!ELEMENT Impact EMPTY> <!ATTLIST Impact severity %attvals.severity; #IMPLIED completion %attvals.completion; #IMPLIED type %attvals.impacttype; "other" %attlist.global; > <!-- ==================================================================== === Section 4.13.2 The Action class === ==================================================================== --> <!ENTITY % attvals.actioncat "( block-installed | notification-sent | taken-offline | other ) "> <!ELEMENT Action (#PCDATA)> Meijer, et al. Expires March 2003 [page 107]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST Action %attlist.global; > <!-- ==================================================================== === Section 4.13.3 The Confidence class === ==================================================================== --> <!ELEMENT Confidence EMPTY> <!ATTLIST Confidence rating %attvals.rating; "numeric" %attlist.global; > <!-- ==================================================================== === Section 4.14 The Authority class === ==================================================================== --> <!ELEMENT Authority (Organization, Contact*)> <!ATTLIST Authority restriction %attvals.restriction; #IMPLIED %attlist.global; > <!-- ==================================================================== === Section 4.14.1 The Organization class === ==================================================================== --> <!ELEMENT Organization (OrganizationID?, OrgName?, PostalAddress?, Email?, Telephone?, Fax?)> <!ATTLIST Organization %attlist.global; > <!-- ==================================================================== === Simple elements with sub-elements or attributes. === ==================================================================== --> <!ELEMENT ContactHandle (#PCDATA)> <!ATTLIST ContactHandle originIRT %attvals.originIRT; #REQUIRED %attlist.global; > <!ELEMENT PersonName (#PCDATA)> <!ATTLIST PersonName Meijer, et al. Expires March 2003 [page 108]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 nametype CDATA #IMPLIED %attlist.global; > <!ELEMENT PostalAddress (#PCDATA)> <!ATTLIST PostalAddress %attlist.global; > <!ELEMENT Email (#PCDATA)> <!ATTLIST Email %attlist.global; > <!ELEMENT Telephone (#PCDATA)> <!ATTLIST Telephone %attlist.global; > <!ELEMENT Fax (#PCDATA)> <!ATTLIST Fax %attlist.global; > <!--Element Description may contain arbitrary description in any/local language used by CSIRT (or IODEF object owner). Language should be indicated in the xml:lang attribute of the %attlist.global; Use of different charsets/encodings for the same language should considered.--> <!ELEMENT Action (#PCDATA)> <!ATTLIST Action %attlist.global; > <!ELEMENT Description ANY> <!ATTLIST Description %attlist.global; > <!-- ==================================================================== === SECTION 10. Simple elements with no sub-elements or === === attributes. === ==================================================================== --> <!ELEMENT IncidentID (#PCDATA)> <!ATTLIST IncidentID %attlist.global; > <!ELEMENT attackID (#PCDATA)> <!ATTLIST attackID %attlist.global; > <!ELEMENT AuthorityID (#PCDATA)> Meijer, et al. Expires March 2003 [page 109]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 <!ATTLIST AuthorityID %attlist.global; > <!ELEMENT MessageID (#PCDATA)> <!ATTLIST MessageID %attlist.global; > <!ELEMENT EvidenceDataID (#PCDATA)> <!ATTLIST EvidenceDataID %attlist.global; > <!ELEMENT CorrEvidenceID (#PCDATA)> <!ATTLIST CorrEvidenceID %attlist.global; > <!ELEMENT OrganizationID (#PCDATA)> <!ATTLIST OrganizationID %attlist.global; > <!ELEMENT access-time (#PCDATA)> <!ATTLIST access-time %attlist.global; > <!ELEMENT change-time (#PCDATA)> <!ATTLIST change-time %attlist.global; > <!ELEMENT create-time (#PCDATA)> <!ATTLIST create-time %attlist.global; > <!ELEMENT modify-time (#PCDATA)> <!ATTLIST modify-time %attlist.global; > <!ELEMENT c-major-device (#PCDATA)> <!ATTLIST c-major-device %attlist.global; > <!ELEMENT c-minor-device (#PCDATA)> <!ATTLIST c-minor-device %attlist.global; > <!ELEMENT data-size (#PCDATA)> <!ATTLIST data-size %attlist.global; > <!ELEMENT disk-size (#PCDATA)> <!ATTLIST disk-size Meijer, et al. Expires March 2003 [page 110]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 %attlist.global; > <!ELEMENT major-device (#PCDATA)> <!ATTLIST major-device %attlist.global; > <!ELEMENT minor-device (#PCDATA)> <!ATTLIST minor-device %attlist.global; > <!ELEMENT permission (#PCDATA)> <!ATTLIST permission %attlist.global; > <!ELEMENT cgi (#PCDATA)> <!ATTLIST cgi %attlist.global; > <!ELEMENT command (#PCDATA)> <!ATTLIST command %attlist.global; > <!ELEMENT env (#PCDATA)> <!ATTLIST env %attlist.global; > <!ELEMENT netmask (#PCDATA)> <!ATTLIST netmask %attlist.global; > <!ELEMENT community (#PCDATA)> <!ATTLIST community %attlist.global; > <!ELEMENT Location (#PCDATA)> <!ATTLIST Location %attlist.global; > <!ELEMENT http-method (#PCDATA)> <!ATTLIST http-method %attlist.global; > <!ELEMENT name (#PCDATA)> <!ATTLIST name %attlist.global; > <!ELEMENT number (#PCDATA)> <!ATTLIST number %attlist.global; Meijer, et al. Expires March 2003 [page 111]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 > <!ELEMENT url (#PCDATA)> <!ATTLIST url %attlist.global; > <!ELEMENT os (#PCDATA)> <!ATTLIST os %attlist.global; > <!ELEMENT arg (#PCDATA)> <!ATTLIST arg %attlist.global; > <!ELEMENT oid (#PCDATA)> <!ATTLIST oid %attlist.global; > <!ELEMENT path (#PCDATA)> <!ATTLIST path %attlist.global; > <!ELEMENT pid (#PCDATA)> <!ATTLIST pid %attlist.global; > <!ELEMENT port (#PCDATA)> <!ATTLIST port %attlist.global; > <!ELEMENT portlist (#PCDATA)> <!ATTLIST portlist %attlist.global; > <!ELEMENT program (#PCDATA)> <!ATTLIST program %attlist.global; > <!ELEMENT protocol (#PCDATA)> <!ATTLIST protocol %attlist.global; > <!ELEMENT size (#PCDATA)> <!ATTLIST size %attlist.global; > 9. References Meijer, et al. Expires March 2003 [page 112]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997 [2] Arvidsson, J., Cormack, A., Demchenko, Y., Meijer J. "TERENA's Incident Object Description and Exchange Format Requirements", RFC 3067, February 2001 [3] Intrusion Detection Message Exchange Format Extensible Markup Language (XML) Document Type Definition by D. Curry - September 2001 - http://www.ietf.org/internet-drafts/draft-ietf-idwg- idmef-xml-06.txt - work in progress. [4] Taxonomy of the Computer Security Incident related terminology - http://www.terena.nl/task-forces/tf-csirt/i-taxonomy/docs/ i-taxonomy_terms.html [5] World Wide Web Consortium (W3C), "Extensible Markup Language (XML) 1.0 (Second Edition)," W3C Recommendation, October 6, 2000. http://www.w3.org/TR/2000/REC-xml-20001006. [6] World Wide Web Consortium (W3C), "Namespaces in XML," W3C Recommendation, January 14, 1999. http://www.w3.org/TR/1999/ REC-xml-names-19990114. [7] XML Schema Part 0: Primer, W3C Recommendation, 2 May 2001. http://www.w3.org/TR/xmlschema-0/ [8] Berners-Lee, T., Fielding, R.T., and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax," RFC 2396, August 1998. [9] Mealling, M., "The IANA XML Registry," draft-mealling-iana- xmlns-registry-00.txt, November 17, 2000, work in progress. [10] Rumbaugh, J., Jacobson, I., and G. Booch, "The Unified Modeling Language Reference Model," ISBN 020130998X, Addison-Wesley, 1998. [11] Freed, N., "IANA Charset Registration Procedures," BCP 19, RFC 2278, January 1998. [12] Alvestrand, H., "Tags for the Identification of Languages," RFC 3066, BCP 47, January 2001. [13] International Organization for Standardization (ISO), "International Standard: Data elements and interchange formats - Information interchange - Representation of dates and times," ISO 8601, Second Edition, December 15, 2000. Meijer, et al. Expires March 2003 [page 113]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 [14] Mills, D., "Network Time Protocol (Version 3) Specification, Implementation, and Analysis," RFC 1305, March 1992. [15] Mills, D., "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI," RFC 2030, October 1996. [16] Eastlake, D., Reagle, J., and D. Solo, "XML-Signature Syntax and Processing," draft-ietf-xmldsig-core-11.txt, November 1, 2000, work in progress. [17] Incident Object Description and Exchange Format Working Group - http://www.terena.nl/task-forces/tf-csirt/iodef/ [18] RIPE NCC Database - http://www.ripe.net/ripe/wg/db/ [19] Trusted Introducer Service - http://www.ti.terena.nl/ 10. Security Considerations 11. IANA Considerations 12. Acknowledgements This document was built on the work done by the Incident Object Description and Exchange Format Working-Group of the TERENA task-force TF-CSIRT. 13. Authors' Addresses: Jan Meijer SURFnet Radboudburcht 273 Utrecht The Netherlands Phone: +31 302 305 305 Email: jan.meijer@surfnet.nl Meijer, et al. Expires March 2003 [page 114]
Internet Draft draft-ietf-inch-iodef-00.txt Apr 2002 Roman Danyliw CERT Coordination Center 4500 Fifth Ave. Pittsburgh PA 15213 USA Phone: +1 412 268 7090 Email: rdd@cert.org Yuri Demchenko TERENA Singel 468 D 1017 AW Amsterdam The Netherlands Phone: +31 205 304 488 Email: demch@terena.nl 14. Full Copyright Statement Copyright (C) The Internet Society (2002). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."