Agujero de seguridad
Un agujero de seguridad es una vulnerabilidad de un sistema, una red, una aplicación o cualquier otro componente digital que un atacante puede aprovechar para hacer algo que no debería poder hacer.
Un agujero de seguridad es una vulnerabilidad de un sistema, una red, una aplicación o cualquier otro componente digital que un atacante puede aprovechar para comprometer la seguridad de ese sistema.
Los agujeros de seguridad son puntos de entrada potenciales. Se usan para lanzar ataques, robar datos, interrumpir servicios o, en el peor de los casos, tomar el control completo del sistema afectado.
Encontrarlos y corregirlos es lo que protege la integridad, la confidencialidad y la disponibilidad de la información, y por eso se trata como un trabajo continuo y no como un proyecto.
Salen de varios sitios: errores en cómo se escribió el software, una configuración equivocada, actualizaciones que faltan o un diseño que ya estaba mal desde el principio.
Gestionarlos bien consiste en ir a buscarlos antes de que lo haga otro. Las organizaciones usan evaluaciones de seguridad, análisis de vulnerabilidades y pentesting para encontrar los agujeros de sus propios sistemas y aplicaciones.
Una vez encontrado un agujero hay que parchearlo o corregirlo de otra manera, y hasta que eso ocurre la exposición es real y no teórica.
Dónde leer más
OWASP, Vulnerability Management: el Open Web Application Security Project publica material práctico sobre gestión de vulnerabilidades, incluido cómo encontrar y mitigar agujeros de seguridad en aplicaciones web.
NIST, Guide to Enterprise Patch Management Technologies: una guía detallada sobre tecnología de gestión de parches, que es la parte de la respuesta que cierra los agujeros conocidos.
CVE Details: una base de datos de vulnerabilidades de software conocidas públicamente, útil para consultar un agujero concreto y entender a qué productos y versiones afecta.
Un ejemplo
Una empresa tiene funcionando un sistema de gestión de bases de datos desactualizado con un agujero de seguridad conocido. Un atacante encuentra la vulnerabilidad y usa inyección SQL para llegar a la base de datos y modificarla.
Explotarla le da acceso no autorizado a información confidencial: registros de clientes, datos financieros. Un único componente sin parchear basta para comprometer la integridad y la confidencialidad de todo lo que hay almacenado detrás.
Mitigarlo consiste en aplicar los parches de seguridad y mantener al día el software de base de datos, que suena obvio y es el paso que se salta.
Agujero de seguridad, bug, CVE y superficie de ataque
Los cuatro aparecen en la misma frase en muchos informes, y son cuatro cosas distintas.
El agujero de seguridad es el defecto: algo que alguien puede aprovechar para hacer lo que no debería poder hacer.
Un bug es un error de programación. Todo agujero de seguridad es un defecto, y no todo defecto es un agujero: un botón que se pinta mal es un bug y no cambia nada de la seguridad. El agujero es el defecto que además tiene consecuencias.
Un CVE es el identificador público que se asigna a un defecto concreto de un producto concreto para que todo el mundo esté hablando del mismo. Es un nombre, no una medida: no dice cuánto te importa a ti. Y al revés también vale: tu propio código no tiene identificador ninguno, así que una organización puede tener el parcheo impecable y estar comprometida a través de su propia aplicación. Contar identificadores no mide el riesgo.
La superficie de ataque no es una lista de agujeros: es la lista de sitios donde un agujero contaría. Es más grande, y cambia todos los días.
En una frase: el bug es el error, el agujero es el error que alguien puede aprovechar, el CVE es su nombre público cuando lo tiene, y la superficie de ataque es dónde importaría.