Pasar al contenido principal

Vulnerabilidad

En seguridad informática, una vulnerabilidad es una debilidad existente en un sistema que puede ser utilizada por un atacante para comprometer su seguridad.

Las vulnerabilidades pueden ser de varios tipos: software, hardware, procedimentales o humanas. Algunos ejemplos de sistemas vulnerables serían:

  • Aplicaciones desactualizadas u obsoletas
  • La utilización de un mecanismo de cifrado inseguro
  • Un control de acceso insuficiente
  • La inexistencia de una política de gestión de contraseñas
  • Una persona, vulnerable a ingeniería social

En el caso específico de las vulnerabilidades que afectan al software, algunos de los tipos más conocidos son los siguientes:

  • Inyección SQL
  • Cross-site scripting
  • Desbordamiento de buffer
  • Condiciones de carrera
  • Cross-Site Request Forgery

En general se suelen diferenciar varias etapas en la vida de una vulnerabilidad software. Aunque su orden puede variar o puede haber casos donde no se den todas las etapas, se suelen considerar las siguientes:

  • Nacimiento: Durante el desarrollo de un sistema se pueden producir defectos en el diseño, implementación o gestión del sistema. Un defecto se considera una vulnerabilidad, si este puede ser utilizado para que el sistema realice funciones para las que no fue diseñado, como conseguir acceso no autorizado, elevación de privilegios o una denegación de servicio.
  • Descubrimiento: Esta etapa se produce cuando se tiene conocimiento de la existencia de la vulnerabilidad.
  • Comunicación: Se da cuando el descubridor notifica la vulnerabilidad, normalmente al desarrollador del sistema.
  • Corrección: El desarrollador del sistema corrige la vulnerabilidad, normalmente, publicando un parche o una nueva versión del producto.
  • Publicación: Cuando la existencia de la vulnerabilidad se hace pública.
  • Explotación: Cuando se desarrolla un exploit funcional que se aprovecha de la existencia de esa vulnerabilidad para realizar funciones para las que el sistema no fue desarrollado.
  • Muerte: Se da cuando el número de sistemas vulnerables al exploit es insignificante

Para identificar las vulnerabilidades, el sistema más utilizado actualmente es el definido por CVE (Common Vulnerabilities and Exposures). Este sistema consiste en un registro de información sobre las vulnerabilidades de seguridad conocidas. Para cada referencia, ofrece información como un número de identificación CVE-ID, una descripción de la vulnerabilidad, indica que versiones del software están afectadas o la posible solución al fallo, si es que existe. Este registro es mantenido por MITRE con fondos del gobierno de EEUU, y está relacionado con la base de datos de vulnerabilidades del NIST (NVD), en la que pueden conseguirse más detalles sobre las vulnerabilidades y su valoración.

Para realizar el análisis del estado de seguridad de una red de una entidad se suelen utilizar herramientas para la gestión de vulnerabilidades. Estas herramientas interactúan con los sistemas para analizar si tienen vulnerabilidades conocidas que puedan ser explotadas por un posible atacante. Estas herramientas se suelen utilizar en ámbitos empresariales para poder tener una imagen del estado de la seguridad de los sistemas desplegados en una entidad.