Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
Utilisé dans le cadre de la sécurité informatique, IODEF (Incident Object Description Exchange Format / Format d'Échange de Messages de Description d'Incidents) est un format de données servant à décrire les informations relatives à un incident de sécurité dans le but d'être échangées entre les équipes de réponses aux incidents de sécurité des ordinateurs (Computer Security Incident Response Teams – CSIRTs).
Explication
Les messages IODEF sont donc organisés de façon à être facilement lisibles par des humains, et non des machines. Les détails du format sont décrits dans la RFC 5070[1]. Cette RFC présente une implémentation du modèle de données en XML ainsi que la DTD associée.
Une des principales caractéristiques de IODEF est sa compatibilité avec IDMEF (Intrusion Detection Message Exchange Format) développé pour les systèmes de détection d’intrusion. Pour cette raison, IODEF est lourdement basé sur IDMEF et fournit une compatibilité ascendante avec celui-ci.[réf. nécessaire]
Format
IODEF est un format orienté objet structuré, composé de 47 classes pour la première version. Les formats IODEF et IDMEF ayant beaucoup en commun, la structure des champs est similaire à celle d'IDMEF. [réf. nécessaire]
Ce format est extensible : en plus de l'habituelle classe AditionnalData, qui permet d'ajouter n'importe quelle information semblant pertinente au message IODEF, La plupart des énumérations sont fournies avec un champ "ext". Ce champ est utilisé lorsqu'aucun choix proposé dans l'énumération ne convient.[réf. nécessaire]
Voici une liste des champs les plus importants :
IncidentID : Une. Un numéro d’identification d’incident assigné à cet incident par le CSIRT qui génère le document IODEF.
AlternativeID : Zéro ou une. Les numéros d’identification d’incidents utilisés par d’autres CSIRTs pour se référer à l’incident décrit dans le document.
RelatedActivity : Zéro ou une. Les numéros d’identification des incidents reliés à celui du document en question.
DetectTime : Zéro ou une. L’heure à laquelle l’incident a été détecté pour la 1re fois.
StartTime : Zéro ou une. L’heure à laquelle l’incident a commencé.
EndTime : Zéro ou une. L’heure à laquelle l’incident s’est terminé.
ReportTime : Une. L’heure à laquelle l’incident a été signalé.
Description : Zéro ou plus. ML_STRING. Une description textuelle non-formatée de l’incident.
Assessment : Une ou plus. Une caractérisation de l’impact de l’incident.
Method : Zéro ou plus. Les techniques utilisées par l’intrus durant l’incident.
Contact : Une ou plus. Les informations de contact pour les parties impliquées dans l’incident.
EventData : Zéro ou plus. Description des évènements comprenant l’incident.
History : Zéro ou une. Un log, des évènements ou des actions significatives qui ont eu lieu durant la gestion de l’incident.
AdditionalData : Zéro ou plus. Mécanismes par lequel étendre le modèle de données.
Exemple
Voici un exemple d'une partie d'un document IODEF :
<!-- ==================================================================== == IODEF-Document class == ==================================================================== --><xs:elementname="IODEF-Document"><xs:complexType><xs:sequence><xs:elementref="iodef:Incident"maxOccurs="unbounded"/></xs:sequence><xs:attributename="version"type="xs:string"fixed="1.00"/><xs:attributename="lang"type="xs:language"use="required"/><xs:attributename="formatid"type="xs:string"/></xs:complexType></xs:element><!-- ==================================================================== === Incident class === ==================================================================== --><xs:elementname="Incident"><xs:complexType><xs:sequence><xs:elementref="iodef:IncidentID"/><xs:elementref="iodef:AlternativeID"minOccurs="0"/><xs:elementref="iodef:RelatedActivity"minOccurs="0"/><xs:elementref="iodef:DetectTime"minOccurs="0"/><xs:elementref="iodef:StartTime"minOccurs="0"/><xs:elementref="iodef:EndTime"minOccurs="0"/><xs:elementref="iodef:ReportTime"/><xs:elementref="iodef:Description"minOccurs="0"maxOccurs="unbounded"/><xs:elementref="iodef:Assessment"maxOccurs="unbounded"/><xs:elementref="iodef:Method"minOccurs="0"maxOccurs="unbounded"/><xs:elementref="iodef:Contact"maxOccurs="unbounded"/><xs:elementref="iodef:EventData"minOccurs="0"maxOccurs="unbounded"/><xs:elementref="iodef:History"minOccurs="0"/><xs:elementref="iodef:AdditionalData"minOccurs="0"maxOccurs="unbounded"/></xs:sequence><xs:attributename="purpose"use="required"><xs:simpleType><xs:restrictionbase="xs:NMTOKEN"><xs:enumerationvalue="traceback"/><xs:enumerationvalue="mitigation"/><xs:enumerationvalue="reporting"/><xs:enumerationvalue="other"/><xs:enumerationvalue="ext-value"/></xs:restriction></xs:simpleType></xs:attribute><xs:attributename="ext-purpose"type="xs:string"use="optional"/><xs:attributename="lang"type="xs:language"/><xs:attributename="restriction"type="iodef:restriction-type"default="private"/></xs:complexType></xs:element>
IODEFLIB : Bibliothèque Python pour créer, parser et éditer les rapports d'incidents informatiques utilisant le format IODEF XML (RFC 5070[1])
RT-IODEF : Module Perl pour traduire les tickets RT en messages IODEF et aussi mapper IODEF dans les champs personnalisés de RT en se basant sur leurs tags de description.