Español | English
rss facebook linkedin Twitter

CPE:/B:S21SEC:BLOG

Continuando con la temática del post anterior, merece la pena desarrollar un poco más la explicación de algunos de los componentes comentados. En este caso el elegido es CPE, que es utilizado para determinar el inventario al que hacen referencia el resto de definiciones del conjunto SCAP.

El C.P.E, o COMMON (falso) PLATFORM (también falso) ENUMERATION (y también falso), es un modelo de nomenclatura estructurado que permite identificar de forma única (también es falso) tanto sistemas operativos y aplicaciones como sistemas integrados. Donde pongo falso es porque, aunque CPE está considerado capaz de representar cualquier ‘objeto’, en realidad el diccionario actual no trata de una enumeración de plataformas comunes, sino un listado de los productos más utilizados por el Department of Defense y Department of Homeland Security.

Traduciendo de forma más o menos literal la información que se puede encontrar en la web de origen http://cpe.mitre.org, CPE es un esquema de nomenclatura estructurado para sistemas IT, plataformas y paquetes. Basado en la sintaxis de uso general “Uniform Resource Indentifiers” (URI), que incluye un formato para la definición de nombres, un lenguaje que permite describir plataformas complejas, un método que permite buscar sistemas a partir de nombre y un formato de descripción para incluir textos y test a cualquier nombre.. “y si llamas ahora recibirás no uno, sino dos paquetes CPE”


Qué es, y por qué es: CPE

Si existe un identificador que representa de forma única cada vulnerabilidad (CVE, BID o advICE, etc...), ¿por qué no existe un identificador (que no sea el nombre) para cada sistema operativo o aplicación que pueda o deba representarse?

CPE no deja de ser un diccionario que recoge una serie de entradas que permiten relacionar un identificar único (el ID CPE) con una cadena que en cualquier idioma represente el sistema operativo o aplicación relacionada. Esta funcionalidad es vital para la automatización de cualquier proceso que requiera la identificación del inventario, ya que es posible que si la identificación no es del todo correcta (errores tipográficos, uso de nomenclatura especial o siglas, diferentes idiomas, etc...) dos aplicaciones estén hablando del mismo objeto con distinto nombre.

Esto es más o menos el resumen del qué y por qué de CPE. De forma indirecta, CPE ha conseguido en parte presentar una alternativa al que hasta ahora era referente como esquema, y ampliamente utilizado: diccionario de sistemas y aplicaciones de Symantec, (Search tool en tools) en el que se han basado muchos, sino todos los demás.


Especificaciones

Las especificaciones son la guía de cómo han de construirse los identificadores CPE, además de explicar cada uno de los diferentes componentes de su URI. La documentación desarrollada resume (casi.. ) todas las opciones y funciones posibles que hacen referencia a la nomenclatura de objetos. “incluso han incluido en la especificación la característica que permite buscar una cadena sin aumentar por ello su precio!

Ejemplo de una definición CPE.


El siguiente cuadro resume de forma rápida como se genera un identificador.

Existen casos en los que una versión concreta de software requiere que se especifique además el sistema operativo en el que se encuentra, o incluso puede que sea necesario indicar un tercer software que permite completar la definición. Por ejemplo: Adobe Acrobat Toolbar versión 3.2, para Internet Explorer 6.x, del producto Adobe Acrobat Reader versión 6.7 en Microsoft Internet Explorer 6.5 de Microsoft Windows XP SP2. Este tipo de representación compleja NO está contemplada en el diccionario, ya que no se trata de un elemento único.

Por ejemplo:

Ejemplo de definición compleja para indicar una versión de Office 2003 o 2007 en Windows XP (cualquier Service Pack).

Existen un par de archivos en Java: CPEName.java y CPELanguage.java que permiten probar el uso del diccionario, aunque deben tratarse como dos ejemplo de implementación de un intérprete CPE muy simple que pueden ser utilizados para entender mejor el funcionamiento del lenguaje, y no dan para más.

Como enlaces de interés en la especificación CPE podemos considerar:



El diccionario

.. o lo que es lo mismo, la versión actual de la recopilación. De su gestión se encarga exclusivamente el NIST para evitar conflictos en la definición de nuevas entradas. La idea que tiene el NIST en cuanto a la evolución del diccionario es que cada fabricante envíe un listado con sus productos y versiones (y a ser posible ya los CPE generados) para ir incluyéndolos en la distribución oficial.

Los enlaces de interés son:


Comunidad

Curiosamente, esta es la parte más criticable de todo el conjunto Según mitre, (que se encarga de dar soporte al producto gestionado por NIST) CPE depende de los aportes de la comunidad para completar su ciclo de vida con éxito, aunque son muy restrictivos con los cambios aplicados, y ofrece un nivel de soporte muy básico. En cualquier caso existe una lista de correo en la que se debaten casi todas las propuestas y los cambios (casi, algunos aparecen por generación espontanea) en la que se puede participar. Es posible tanto preguntar, como responder, e incluso aportar nuevas entradas al diccionario CPE actual, que deben pasar un proceso de revisión antes de ser aceptadas.

Enlaces de interés:



Y hasta aquí todo lo que puede encontrarse en la web. Así que para no dejarlo como una simple traducción con opinión, voy a exponer mi visión (que puede estar equivocada, pero no lo va a estar, y si no a ver quién es capaz de discutirla, con argumentos) de lo que es CPE, o que puede aprovecharse o ser usable de esta iniciativa.


Mi-sion and mi-vision


O lo que es lo mismo, voy a mojarme. En primer lugar, todos los que se han descargado el diccionario (por ansiedad, por inercia o costumbre de descargarlo todo, o por la razón que sea) se darán cuenta de que es un XML que por sí solo no aporta nada. Bueno, siempre está bien mirar un XML (quién no tiene un editor XML instalado) utilizando el navegador, algo que no sé que será más: práctico o útil.

Los que se han descargado y leído antes las especificaciones, bien hecho, ahora ya tendremos una idea más acertada de las posibilidades de CPE, y digo, posibilidades porque de lo que se puede hacer a lo que está hecho hay todo un mundo:

  • Es el único estándar de SCAP que NO soporta separación por “Namespace”, lo que dificulta la inclusión de definiciones propias en el diccionario, y es posible violar la integridad del diccionario si realizamos alguna modificación. Si queremos incluir un elemento que no exista en el diccionario tendremos que tener cuidado de su gestión en futuras actualizaciones.
  • No existe (se está discutiendo estos días) forma de determinar cuando se trata de un nombre genérico, o nombre si determinar o nombre completo. Me explico. El siguiente CPE: cpe:/o:miempresa:miprograma puede interpretarse de las siguientes formas:
  1. Todas las versiones conocidas de miprograma de la empresa miempresa.
  2. Se desconoce la versión específica del programa miprograma, por eso no está indicada.
  3. Se trata de la única versión disponible de miprograma, que NO tiene versión definida, por lo que este identificador representa un producto único.
  • Dado que es uno de los elementos más jóvenes de todo el movimiento SCAP, está sometido a cambios constantes, aunque realmente cada uno de estos cambios (incluyendo también la incorporación de nuevas entradas en el diccionario) se publica una o dos veces al año, lo que dificulta un poco su seguimiento. Es posible encontrarse en la situación de llevar 6 meses discutiendo acerca de una funcionalidad que actualmente NO existe en la especificación, y que será integrada por primera vez tres meses más adelante.
  • El grupo que trabaja en CPE, compuesto por gente de HLS, DoD y el NIST principalmente, mantiene una política de “control” sobre el estándar (aquí hay que recordar que los que lo empezaron fueron ellos, y que lo hicieron por y para ellos), por lo que solo alguna de las propuestas realizadas por “la comunidad” llega a calar, y esto afecta a la inclusión de entradas del diccionario, por poner ejemplo.
  • Cuando empezamos a utilizar el editor de CPE para crear nuevas entradas (ah, espera, que no hay), es decir, el Notepad (con o sin ++) nos damos cuenta que si después queremos usarlo necesitaremos hacernos un programa que interprete el lenguaje CPE (ah, que tampoco hay, aunque lo más probable es que tengamos que integrar este intérprete en nuestros programas así que deberemos descargar la librería de soporte CPE (que tampoco existe) o hacernos nosotros mismos un analizador e intérprete. No te digo nada y te lo digo todo.


. FINAL


Yo tengo que reconocer que a nivel personal me parece una idea (que no implementación) buena. Y aunque a día de hoy la cantidad de aplicaciones públicas que utilizan el identificador CPE es una o ninguna, e incluso son menos las aplicaciones que utilizan el lenguaje CPE, es posible que pronto se conviertan en los nuevos EJB y empecemos a verlos en todos los lados.



Iñaki López
S21Sec Labs

(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login