Vulnerabilidades de un sistema informático

Clasificación

Vulnerabilidad

Debilidad de cualquier tipo que compromete la seguridad del sistema informático.  

Las vulnerabilidades de los sistemas informáticos (SI) las podemos agrupar en función de:

Diseño

  • Debilidad en el diseño de protocolos utilizados en las redes.
  • Políticas de seguridad deficientes e inexistentes.

Implementación

  • Errores de programación.
  • Existencia de “puertas traseras” en los sistemas informáticos.
  • Descuido de los fabricantes.

Uso

  • Configuración inadecuada de los sistemas informáticos.
  • Desconocimiento y falta de sensibilización de los usuarios y de los responsables de informática.
  • Disponibilidad de herramientas que facilitan los ataques.
  • Limitación gubernamental de tecnologías de seguridad.

Vulnerabilidad del día cero

  • Cuando no exista una solución “conocida” para una vulnerabilidad, pero si se conoce como explotarla, entonces se le conoce como “vulnerabilidad 0 days”.

Globalmente clasificamos las vulnerabilidades en:

  • Vulnerabilidades de desbordamiento de buffer.

Se produce cuando un programa no controla la cantidad de datos que se copian en buffer, de forma que si esa cantidad es superior a la capacidad del buffer los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original. Se puede aprovechar para ejecutar código que nos de privilegios de administrador.

  • Vulnerabilidades de condición de carrera (race condition).
La condición de carrera se da principalmente cuando varios procesos acceden al mismo tiempo a un recurso compartido, por ejemplo una variable, cambiando su estado y obteniendo de esta forma un valor no esperado de la misma.
  • Vulnerabilidades de error de formato de cadena (format string bugs).
La principal causa de los errores de cadena de formato es aceptar sin validar la entrada de datos proporcionada por el usuario.
Es un error de programación y el lenguaje más afectado es C/C++. Un ataque puede conducir de manera inmediata a la ejecución de código arbitrario y a revelación de información.
  • Vulnerabilidades de Cross Site Scripting (XSS).
Abarcaban cualquier ataque que permitiera ejecutar scripts como VBScript o JavaScript, en el contexto de otro sitio web. Estos errores se pueden encontrar en cualquier aplicación que tenga como objetivo final presentar la información en un navegador web.
Un uso de esta vulnerabilidad es hacer phishing. La víctima ve en la barra de direcciones un sitio, pero realmente está en otro. La víctima introduce su contraseña y se la envía al atacante.
  • Vulnerabilidades de Inyección SQL.
Una inyección SQL se produce cuando, de alguna manera, se inserta o "inyecta" código SQL invasor dentro del código SQL programado, a fin de alterar el funcionamiento normal del programa y lograr así que se ejecute la porción de código "invasor" incrustado, en la base de datos.
  • Vulnerabilidades de denegación del servicio.
La denegación de servicio provoca que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos informáticos del sistema de la víctima.
  • Vulnerabilidades de ventanas engañosas (Window Spoofing).
Las ventanas engañosas son aquellas que dicen que eres el ganador de tal o cual cosa, lo cual es mentira y lo único que quieren es que des información. Hay otro tipo de ventanas que, si las sigues, obtienen datos del ordenador para luego realizar un ataque.

Información:

En http://www.cert.org/stats/ hay disponibles unas tablas que indican el nº de vulnerabilidades detectadas por año.

La web http://www.zone-h.org en su zona restringida muestra gran cantidad de información sobre ataques y estadísticas.

¿De qué queremos proteger el sistema informático?

En el punto anterior hemos enumerado las diferentes vulnerabilidades del sistema informático. Ahora vamos a relacionar el concepto de vulnerabilidad con el de amenaza.

Amenaza

Escenario en el que una acción o suceso, ya sea o no deliberado, compromete la seguridad de un elemento del sistema informático. 

Cuando a un sistema informático se le detecta una vulnerabilidad y existe una amenaza asociada a dicha vulnerabilidad, puede ocurrir que el suceso o evento se produzca y el sistema estará en riesgo.

Si el evento se produce y el riesgo que era probable ahora es real, el sistema informático sufrirá daños que habrá que valorar cualitativa y cuantitativamente, y esto se llama 'impacto'.

Es decir,

Un evento producido en el sistema informático que constituye una amenaza asociada a una vulnerabilidad del sistema, produce un impacto sobre él.

Si queremos eliminar las vulnerabilidades del sistema informático o queremos disminuir el impacto que puedan producir sobre él, hemos de proteger el sistema mediante una serie de medidas que podemos llamar defensas o salvaguardas. 

¿Cómo podemos proteger el sistema informático?

Lo primero que hemos de hacer es un análisis de las posibles amenazas que puede sufrir el sistema informático, una estimación de las pérdidas que esas amenazas podrían suponer y un estudio de las probabilidades de que ocurran.

A partir de este análisis habrá que diseñar una política de seguridad en la que se establezcan las responsabilidades y reglas a seguir para evitar esas amenazas o minimizar los efectos si se llegan a producir.

Política de seguridad

Documento sencillo que define las directrices organizativas en materia de seguridad. (Villalón) 

La política de seguridad se implementa mediante una serie de mecanismos de seguridad que constituyen las herramientas para la protección del sistema. Estos mecanismos normalmente se apoyan en normativas que cubren áreas más específicas.

Esquemáticamente:

Los mecanismos de seguridad se dividen en tres grupos:

  • Prevención:

Evitan desviaciones respecto a la política de seguridad.

Ejemplo: utilizar el cifrado en la transmisión de la información evita que un posible atacante capture (y entienda) información en un sistema de red.

  • Detección:

Detectan las desviaciones si se producen, violaciones o intentos de violación de la seguridad del sistema.

Ejemplo: la herramienta Snort para la detección de intrusiones de red.

  • Recuperación:

Se aplican cuando se ha detectado una violación de la seguridad del sistema para recuperar su normal funcionamiento.

Ejemplo: las copias de seguridad.

Dentro de este grupo de mecanismos hay un subgrupo llamado mecanismos de análisis forense cuyo objetivo es, no solo devolver el sistema a su situación normal, sino averiguar también el alcance de la violación, lo que ha hecho el intruso en el sistema y qué puerta ha utilizado para entrar en el sistema. De esta forma se previenen posibles ataques posteriores.

De estos tres grupos de mecanismos es importante enfocarnos en los de prevención y detección. Siempre será mucho menos lesivo y comprometedor para el sistema informático evitar un ataque o detectar un intento de violación que no aplicar medidas de recuperación por muy buenas y seguras que sean.

Mecanismos de prevención

Mecanismos de identificación e autenticación

En abstracto, estos sistemas permiten identificar de forma única 'entidades' del sistema. El proceso siguiente es la autenticación, es decir, comprobar que la entidad es quien dice ser.

Pasados estos dos filtros, la entidad puede acceder a un objeto del sistema.

En concreto los sistemas de identificación y autenticación de los usuarios son los mecanismos más utilizados.

Mecanismos de control de acceso

Los objetos del sistema deben estar protegidos mediante mecanismos de control de acceso que establecen los tipos de acceso al objeto por parte de cualquier entidad del sistema.

Mecanismos de separación

Si el sistema dispone de diferentes niveles de seguridad se deben implementar mecanismos que permitan separar los objetos dentro de cada nivel. El acceso por parte de las entidades (usuarios) a objetos de diferentes niveles debe evitarse si no existe un mecanismo de control de acceso.

Los mecanismos de separación, en función de como separan los objetos, se dividen en los grupos siguientes: separación física, temporal, lógica, criptográfica y fragmentación.

Mecanismos de seguridad en las comunicaciones

La protección de la información (integridad y privacidad) cuando viaja por la red es especialmente importante. Clásicamente se utilizan protocolos seguros, tipo SSH o Kerberos, que cifran el tráfico por la red.

Análisis de vulnerabilidades

Se plantean las cuestiones:

  • ¿Cuándo fue el último análisis de vulnerabilidades que hizo la organización?
    • Con qué frecuencia se hacen este análisis en las organizaciones.
    • Normalmente hay más de 20 nuevas vulnerabilidades diarias.
  • Si se anuncia una nueva vulnerabilidad hoy, ¿cuál es su proceso actual para proteger la red? 
    • Es importante saber si estas vulnerabilidades afectan a la organización.
    • Se debe tener un historial de sus vulnerabilidades y su corrección.
    • Es clave saber cuándo y cómo fueron corregidas.

La comunidad informática ha creado bases de datos formales donde se encuentra información crítica como: cuál es vulnerabilidad, a qué sistemas impacta, cómo se activa la vulnerabilidad, cuál es el código que la activa, cómo se corrige la vulnerabilidad.

Algunos portales importantes son:

  • http://www.securityfocus.com

Es una de las bases de datos mas consultadas por los profesionales en seguridad informática por el contexto técnico aportado.

  • http://www.osvdb.org/ 

Esta base de datos tiene la mejor información sobre vulnerabilidades en el software open source.

  • http://secunia.com/

Secunia, tienen las mejores estadísticas de la aparición de vulnerabilidades por sistema operativo.

  • http://www.kb.cert.org/vuls/
Al igual que securityfocus, es una de las bases de datos más consultadas por los profesionales en seguridad informática por el contexto técnico aportado.

Herramientas más conocidas

En el caso de servidores Linux/Unix para hacer el análisis de vulnerabilidades se utiliza el programa 'Nessus'.

Nessus es de arquitectura cliente-servidor OpenSource, dispone de una base de datos de patrones de ataques para lanzar contra una máquina o conjunto de máquinas con el objetivo de localizar sus vulnerabilidades.

Existe software comercial que utilizan Nessus como motor para el análisis. Por ejemplo está Catbird (www.catbird.com)  que usa un portal para la gestión centralizada de las vulnerabilidades, analiza externamente e internamente la red teniendo en cuenta los accesos inalámbricos. Además hace monitoreo de servicios de red como el DNS y la disponibilidad de los portales web de las organizaciones.

  • Nessus (UD1 Mesa del alumno Caso Práctico -4-)

Otra herramienta para el análisis de vulnerabilidades es Conan (INTECO-CERN). Conan es una herramienta gratuita de análisis de la configuración del sistema para sistemas Windows. Conan genera un informe inmediato del nivel de seguridad del ordenador de gran utilidad para mejorar la seguridad del equipo de una manera rápida y sencilla. Se recomienda su uso como complemento al antivirus. 

En la carpeta de Guías de la UD1 hay disponible una guía de usuario de Nessus v5.

  • Conan (UD1 Mesa del alumno Caso Práctico -5-)

Esta herramienta lleva a cabo un análisis exhaustivo de los elementos de riesgo del equipo, agrupando y evaluando toda esa información en un informe que refleja el nivel de seguridad del equipo, que podrá consultarse en la web https://conan.cert.inteco.es/, y a partir del cual obtener información de cómo mejorar la seguridad del ordenador.

Para instalarlo hay que registrarse. Se necesita un usuario propio para poder consultar los informes de seguridad.