La formalisation de la description de systèmes informatiques avec CPE

Date : 06 Novembre 2008

Nécessité d'un formalisme dans la désignation de matériel ou de logiciel

Un parc informatique est souvent hétéroclite, avec des machines, des systèmes d'exploitation et des logiciels venant de fabricants ou d'éditeurs variés, avec de multiples versions.

Cet aspect rend fastidieux et complexe le traitement des avis de sécurité et la gestion des correctifs permettant de maintenir à jour ce parc.

L'idée de faire prendre en charge cette complexité par des logiciels de traitement automatique permettant d'identifier les éléments d'un parc informatique impactés par un avis de sécurité fait donc son chemin.

Or le développement de ce type de logiciels est freiné par le fait que la description d'un parc informatique est faite en langage naturel peu formalisé.

Par exemple le navigateur "Internet explorer" de Microsoft en version 7 peut être désigné par :

  • Microsoft Internet Explorer 7
  • Internet Explorer 7
  • IE 7
  • Microsoft Internet Explorer version 7
  • ………

En ajoutant cette difficulté à la nécessité de combiner les logiciels avec les systèmes d'exploitation et le matériel il apparaît que l'automatisation de la gestion d'avis de sécurité devient impossible.

L'idée est donc venue de créer un langage formel permettant de désigner un élément logiciel ou matériel sans ambiguïté, et de créer des liens entre différents éléments afin de décrire des plates-formes complètes (par exemple IE 7, sous Windows XP SP3).

L'initiative CPE

L'initiative CPE (Common Platform Enumeration) répond à ce besoin en définissant un dictionnaire de noms d'éléments de base d'un parc informatique, une syntaxe permettant de combiner ces noms pour décrire une plate-forme complexe, et une méthode pour évaluer l'appartenance d'un élément à une plate-forme.

Au-delà de l'aspect technique, cette initiative repose sur la définition de différents rôles et responsabilités :

  • Modérateur (moderator) : C'est une entité impartiale, qui s'appuie sur des discussions publiques (réunion ou mailing-lists) pour garantir une évolution de CPE bénéficiant à toute la communauté. Elle est aussi responsable du site web de l'initiative.
  • Développeurs (developers) : Ils sont responsables de la mise en œuvre de l'évolution du standard (maintenance du dictionnaire, évolution des spécifications) en accord avec les directives du modérateur.
  • Contributeurs (contributors) : Ils contribuent au développement du standard en proposant de nouveaux noms, de nouveaux outils ou diverses modifications.
  • Utilisateurs (users) : Ce sont les gestionnaires de parcs, les éditeurs d'outils de gestion d'avis de sécurité, les fournisseurs d'avis de sécurité , … qui utilisent le dictionnaire et la syntaxe CPE pour décrire des plates-formes informatiques et évaluer le lien entre différentes entités informatiques.

Les noms CPE

 Ils servent à identifier/spécifier des éléments de base (application, système d'exploitation, matériel) de plates-formes.

Ce sont des URI formées en respectant la syntaxe suivante :

Cpe:/(part):(vendor):(product):(version):(update):(edition):(language)

  • part = "h" (hardware), "o" (operating system) ou "a" (application).
  • vendor = le label de plus haut niveau dans le nom DNS du fournisseur
Par exemple cisco (cisco.com), mozilla (mozilla.org), oxford (oxford.ac.uk).
  • Les 5 composants suivants désignent le produit, la version, la mise à jour, l'édition et le langage. Ils sont optionnels.
Une liste des abréviations (ie, jre, pro, …) autorisées est publiée sur le site web de l'initiative CPE.
 
Voici des exemples de noms CPE :
  • cpe:/a:zonelabs:zonealarm_internet_security_suite:7.0
  • cpe:/o:microsoft:windows_2000::sp4:pro
  • cpe:/a:mozilla:firefox:2.0.0.6::osx:zh-tw
  • cpe:/h:cisco:router:3825

Ces noms sont répertoriés dans un dictionnaire défini avec le méta langage XML. Outre la définition des noms de produits, ce dictionnaire permet également de faire le lien entre un produit et une requête OVAL (Cf. § "Méthodes d'évaluation").

Le langage CPE

Il sert à relier des éléments de base pour décrire des plates-formes informatiques dans leur totalité (applications qui tournent sous un OS et sur une machine)

Il se compose essentiellement d'expressions booléennes permettant d'évaluer l'appartenance d'un élément ou d'un ensemble d'éléments à une plate-forme.

Ce langage se compose d'éléments/tags définis avec le méta langage XML. Ces tags sont les suivants :

  • <cpe:platform-specification> c'est l'élément racine d'un document CPE qui peut contenir une ou plusieurs descriptions de plates-formes.
  • <cpe:platform > c'est l'élément qui décrit une plate-forme ou un type de plate-forme.
  • <cpe:title> et <cpe:remark> ce sont des éléments optionnels utilisés pour la description d'une plate-forme. Ils permettent de donner des informations en langage naturel sur la plate-forme décrite.
  • <cpe:logical-test> contient une liste d'éléments (décrit avec le tag <cpe:fact-ref> ou avec d'autres tag <cpe:logical-test>) et une indication sur l'opérateur logique (OR ou AND) qui relie ces éléments.
  • <cpe:fact-ref> il référence un nom CPE.

Par exemple, la description d'une plate-forme Microsoft Windows XP avec Microsoft Office 2003 ou 2007 est faite de la façon suivante :

<?xml version="1.0" encoding="UTF-8"?>
<cpe:platform-specification xmlns:cpe="http://cpe.mitre.org/language/2.0">
    <cpe:platform id="789">
        <cpe:title>Microsoft Windows XP with Office 2003 or 2007</cpe:title>
        <cpe:logical-test operator="AND" negate="FALSE">
            <cpe:fact-ref name="cpe:/o:microsoft:windows_xp" />
            <cpe:logical-test operator="OR" negate="FALSE">
                <cpe:fact-ref name="cpe:/a:microsoft:office:2003" />
                <cpe:fact-ref name="cpe:/a:microsoft:office:2007" />
            </cpe:logical-test>
        </cpe:logical-test>
    </cpe:platform>
</cpe:platform-specification>

Méthodes d'évaluation

La description formelle d'éléments et de plates-formes informatiques doit permettre au final d'évaluer la correspondance entre un (ou des) élément(s) et une (ou des) plate(s)-forme(s), typiquement pour savoir si un parc informatique est concerné par une vulnérabilité qui impacte un certain nombre de produits.

 L'initiative CPE permet de faire cette évaluation :

  •  via des liens entre les noms CPE et des requêtes OVAL (Open Vulnerability & Assessment Language, cf. cet article du Cert-IST intitulé « Standards pour la gestion des vulnérabilités »).
  • ou, lorsqu'un nom CPE n'a pas de requête OVAL associée, via des algorithmes fournis par CPE.

Conclusion

Le langage CPE avec son vocabulaire, sa syntaxe et ses méthodes paraissent être une initiative pleine d'avenir pour l'automatisation du traitement des avis de sécurité.

Pour plus d'information :

Précedent Précedent Suivant Suivant Imprimer Imprimer