jueves, 6 de mayo de 2010

La Clasificación de Vulnerabilidades bien entendida

La clasificación de las debilidades de seguridad en TI es realmente antigua. Ya en 1976, el proyecto RISOS, en su informe “Security Analysis and Enhancements of Computer Operating Systems”, reflejaba este interés por catalogar la naturaleza de vulnerabilidades própias de Sistemas Operativos.


Figura 1. Análisis de Seguridad de SOs de 1976


En esta auténtica reliquia, se establecen las bases para la clasificación de las debilidades de seguridad, donde se establece la siguiente taxonomía:

Figura 2. Primera clasificación de debilidades en Sistemas Operativos (1976)


Resulta sorprendente, a la par que razonable, comprobar que a pesar de haber transcurrido 34 años, a grandes rasgos, las debilidades catalogadas no distan demasiado de las premisas actuales.

No se tardó demasiado en evolucionar este modelo primigenio, puesto que en 1978, ARPA IPTO, en su proyecto “Protection Analysis”, introdujo una mayor granularidad en la clasificación de las debilidades, promoviendo de esta forma una taxonomía en árbol donde se diferencian clasificaciones de debilidades:

Figura 3. Evolución hacia una taxonomía en árbol para la clasificación de debilidades en Sistemas Operativos (1978)


Tras numerosos modelos intermedios, (orientado a aplicaciones, orientado a sistemas UNIX y redes, evolución de clasificación de vulnerabilidades en entornos UNIX, orientado a la clasificación de amenazas,o orientado a aplicaciones Web), nos encontramos con que actualmente, siguiendo las necesidades de clasificación, se han desarrollado diferentes formas, esquemas o marcos para intentar homogeneizar el seguimiento de debilidades, vulnerabilidades y patrones de ataque. Aún así, estos esquemas no son seguidos por todos los actores en el mercado de la seguridad, como deberían con objeto de seguir un estándar. Es por ello que surgen deficiencias, carencia o incorrecto uso de éstas.

Por estos motivos, viene siendo una práctica muy común, dentro del ámbito de las revisiones de seguridad, la carencia de una estructura coherente que permita clasificar las diferentes vulnerabilidades encontradas. Esta carencia dificulta la comparativa entre diferentes revisiones, máxime cuando éstas han sido llevadas a cabo por diferentes proveedores de seguridad, con diferentes herramientas, en diferentes momentos y con diferentes criterios (a pesar de los esfuerzos que hacen los receptores de los informes para unificar un reporting y unos criterios comunes). Por ello, resulta fundamental, dentro de cualquier modelo de seguridad gestionada y ciclo de mejora continua, que los trabajos realizados sean medibles de igual forma y comparables entre sí. De lo contrario, difícilmente se podrá saber el grado de evolución real y pragmática de los sistemas de gestión de vulnerabilidades.

Para resolver esta problemática, la organización sin ánimo de lucro MITRE desarrolla una serie de estándares que permiten homogeneizar las diferentes debilidades existentes, como puede ser la Common Weakness Enumeration (CWE). Así, se proporciona un marco unificado y mesurable para catalogar las vulnerabilidades de software.

De un modo muy resumido, a diferencia de las Common Vulnerabilites and Exposures (CVE), también desarrolladas por MITRE, las CWEs pretenden ser genéricas y preestablecidas. Por estos motivos, una vulnerabilidad tipificada bajo un CVE específico podrá mapearse contra alguna de las 631 debilidades base, estipuladas por CWE, y estas, a su vez, podrán clasificarse en alguna de las 65 categorías también definidas por CWE. Por si todo pareciese poco, cualquiera de las categorías puede ser agrupadas en algunas de las 4 vistas que estipula la CWE 1.8.1 (última versión hasta el momento).

Como puede imaginarse, el hecho de existir 810 códigos de CWE (incluyendo debilidades, categorías y vistas) dan para clasificar todas debilidades que puedan existir, y de hecho ese su objetivo, posibilitando mapeos con otras estructuras de clasificación, de las cuales se muestran algunos ejemplos:


Figura 4. Enumeración de CWEs mapeados contra OWASP Top 10 (Fuente: http://cwe.mitre.org/data/graphs/629.html)


Figura 5. Enumeración de CWEs mapeados contra CAPEC (Fuente: http://capec.mitre.org/data/xml/capec_v1.5.xml)


Cierto es que el mundo de la seguridad es muy dinámico, y que se incorporan nuevos patrones de debilidad con relativa frecuencia. Aunque la evolución que ha sufrido la catalogación de las debilidades, desde 1976, ha resultado en una estructura lo suficientemente madura como para que todos los profesionales del sector hagan el esfuerzo de etiquetar todas las vulnerabilidades que detecten con sus correspondientes códigos CWE, y por extensión puedan mapearse contra las principales estructuras de catalogación, tanto de debilidades como de patrones de ataque. De lo contrario, difícilmente se podrán comparar los resultados obtenidos entre las diferentes revisiones de seguridad que pueda realizarse, en diferentes momentos, por diferentes profesionales del sector y con diferentes criterios de actuación, imposibilitando medir de forma eficiente la evolución de la seguridad dentro de cualquier Organización.

Por todo esto, resulta estrictamente fundamental que todo sistema de gestión de debilidades proporcione un tejido de clasificación de debilidades de amplio espectro, como CWE, de fácil mapeo con otros modelos de clasificación ampliamente utilizados, que permita escalar adecuadamente y maximizar su integración en cualquier compañía.