Cuando trabajamos con cualquier listado o categorización necesitamos utilizar identificadores únicos para poder trabajar de forma compartida. Con la utilización de estos identificadores únicos se evitan confusiones y malosentendidos entre todas las personas que trabajan con estos sistemas. En nuestro ámbito, la seguridad informática, el sistema de identificación de vulnerabilidades más conocido y utilizado a nivel mundial, si bien no es el único, es el CVE (Common vulnerabilities and Exposures) creado y mantenido por MITRE.
Procedimiento etiquetado de vulnerabilidades
La numeración de las nuevas vulnerabilidades es responsabilidad de las CVE Numbering Authority (CNA). Actualmente las CNA oficiales son la propia MITRE y 18 fabricantes de software (Adobe, Apple, Cisco, Google, HP, Microsoft, Mozilla, Symantec…) a los que se unen los tres principales coordinadores de equipos de seguridad: CERT/CC, ICS-CERT y JPCERT/CC. Cada uno de estos CNA dispone de bloques de numeración no coincidentes y que gestionan por si mismos.
El procedimiento para crear un identificador único de vulnerabilidad CVE es relativamente simple:
- Se descubre una nueva vulnerabilidad ya sea de forma interna (los propios fabricantes de software) o desde un tercero (que avisaría al CERT correspondiente).
- La CNA avisada asigna un identificador CVE, de la numeración que tiene asignada, en estado candidato. Se trata de la numeración que será asignada de forma oficial si la vulnerabilidad se confirma y se publica.
- Se revisa y confirma la vulnerabilidad y se estudia su alcance, afectación y criticidad.
- La vulnerabilidad se publica, con la numeración asignada inicialmente, en la web de CVE y se propone al consejo editor de CVE para su aprobación final. En caso positivo la numeración pasa al estado entry quedando fijada.
Formato CVE
El formato de numeración CVE es sencillo pero efectivo. En la misma numeración se indica qué se está identificando y el año de aparición. Tras estos datos se muestra un identificador único para cada vulnerabilidad. Debido al sistema de reparto de la numeración entre CNA, por bloques, no es posible asegurar que el orden numérico de las vulnerabilidades correspondan con el cronológico de su publicación.
Ejemplo de código CVE:
Pondremos como ejemplo el identificador de una vulnerabilidad que afecta al sistema operativo Android y que se popularizó con el nombre de Stagefright: CVE-2015-1538 donde podemos ver que está compuesto por tres partes:
- CVE: Estas tres siglas identifican que la numeración siguiente corresponde a una vulnerabilidad CVE. Se introdujeron para evitar cualquier posible confusión con otros sistemas de identificación tanto públicos como privados (despieces de motores, etc.).
- 2015: El año de descubrimiento de la vulnerabilidad. Se trata del año en el que la primera CNA le asigna un código. Es posible que la publicación definitiva se realice durante el año siguiente, como pasaría con muchas vulnerabilidades descubiertas en diciembre.
- 1538: Identificador único dentro de CVE, del año en cuestión, que hace referencia a esta vulnerabilidad en concreto.