Pasar al contenido principal

Vulnerabilidad de día cero (vulnerabilidad zero-day)

Una vulnerabilidad de día cero o zero-day, es un tipo de vulnerabilidad que acaba de ser descubierta y que aún no dispone de un parche o actualización que la corrija.

Para entender bien en qué consiste una vulnerabilidad zero-day, primero hay que conocer en qué consiste una vulnerabilidad y cuáles son sus etapas.

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.

Como se ha comentado, puede haber variables en el ciclo de vida de una vulnerabilidad. Hay casos en los que, por ejemplo, la vulnerabilidad no es conocida por el desarrollador del sistema, por lo que no existe parche disponible. En algunos de estos casos, se pueden llegar a desarrollar exploits para aprovecharse de esa vulnerabilidad, conocidas como zero-day o de día 0. En los últimos años se ha desarrollado una industria importante alrededor de este tipo de vulnerabilidades, siendo Zerodium una de las empresas más conocidas. Zerodium paga por el reporte de vulnerabilidades y exploits de día 0, pudiendo llegar al millón de dólares dependiendo del sistema que se explote y el impacto derivado de la explotación.