En informática , los patrones de ataque son un conjunto de métodos rigurosos para encontrar fallos o errores en el código relacionados con la seguridad informática .
Los patrones de ataque se utilizan a menudo para realizar pruebas y son fundamentales para prevenir posibles vulnerabilidades . Estos patrones permiten identificar áreas que requieren mayor atención para reforzar la seguridad de una aplicación de software . Además, proporcionan, ya sea de forma explícita o implícita, el patrón de solución común para prevenir el ataque. Esta práctica se conoce como patrones de codificación defensiva .
Los patrones de ataque definen una serie de pasos repetibles que se pueden aplicar para simular un ataque contra la seguridad de un sistema .
Categorías
Existen varias formas de categorizar los patrones de ataque.
Categorías generales
Los patrones de ataque arquitectónico se utilizan para explotar fallos en el diseño arquitectónico del sistema. Estos incluyen debilidades en protocolos , estrategias de autenticación y modularización del sistema. Se trata de ataques basados en la lógica, más que de ataques de manipulación de bits. La diferencia entre el momento de la verificación y el momento del uso puede considerarse un fallo arquitectónico.
Análisis y validación . Los ataques de inyección SQL y los ataques de secuencias de comandos entre sitios (XSS) entran en esta categoría.
Seguridad de la memoria . En los lenguajes de programación que no son seguros para la memoria , se pueden explotar problemas de bajo nivel, como desbordamientos de búfer y condiciones de carrera, para tomar el control parcial o total del software.
Suplantación de identidad y similares . A menudo se dirigen a nombres de dominio web con ataques como phishing , suplantación de identidad y typosquatting .
Ataques a la interfaz gráfica de usuario ( GUI ) . Estos ataques se basan en primitivas de la interfaz gráfica de usuario (GUI): clickjacking , mousetrapping , trucos de superposición de iframes HTML .
Multiplicadores . Malvertising , ataques "virales" que se propagan a través de las redes sociales, patrón de "gusano", preparación de una lista de hosts vulnerables antes de liberar un gusano.
Mediante la tecnología
Otra forma es agruparlos en categorías generales. Otra manera de categorizar los patrones de ataque es agruparlos por una tecnología o tipo de tecnología específica (por ejemplo, patrones de ataque a bases de datos, patrones de ataque a aplicaciones web, patrones de ataque a redes, etc.; o patrones de ataque a SQL Server, patrones de ataque a Oracle, patrones de ataque a .NET, patrones de ataque a Java, etc.).
Estructura
Los patrones de ataque tienen una estructura muy similar a la de los patrones de diseño . Este formato resulta útil para estandarizar el desarrollo de patrones de ataque y garantiza que cierta información sobre cada patrón se documente siempre de la misma manera.
La estructura recomendada para registrar los patrones de ataque es la siguiente:
- Nombre del patrón
La etiqueta que se le da al patrón y que se usa comúnmente para referirse al patrón en cuestión.
- Tipos y subtipos
El tipo de patrón y sus subtipos asociados facilitan su clasificación. Esto permite a los usuarios localizar e identificar rápidamente los grupos de patrones con los que tendrán que lidiar en sus esfuerzos de seguridad.
Cada patrón tendrá un tipo y uno o más subtipos que identifican la categoría del patrón de ataque. Los tipos típicos incluyen Ataque de inyección , Ataque de denegación de servicio , Ataque de criptoanálisis , etc. Ejemplos de subtipos típicos para Denegación de Servicio, por ejemplo, serían: DOS - Agotamiento de recursos , DOS - Fallo del sistema, DOS - Abuso de políticas.
Otro uso importante de este campo es asegurar que los patrones verdaderos no se repitan innecesariamente. A menudo es fácil confundir un nuevo exploit con un nuevo ataque. Constantemente se crean nuevos exploits para los mismos patrones de ataque. El patrón de ataque de desbordamiento de búfer es un buen ejemplo. Existen muchos exploits y virus conocidos que aprovechan una vulnerabilidad de desbordamiento de búfer. Pero todos siguen el mismo patrón. Por lo tanto, el mecanismo de clasificación de tipo y subtipo proporciona una forma de clasificar un patrón. Si el patrón que está creando no tiene un tipo y subtipo únicos, es probable que sea un nuevo exploit para un patrón existente.
Esta sección también se utiliza para indicar si es posible automatizar el ataque. Si es posible automatizarlo, se recomienda proporcionar un ejemplo en la sección "Código de ataque de ejemplo", que se describe a continuación.
- También conocido como
Algunos ataques pueden ser conocidos por varios nombres diferentes. Este campo se utiliza para enumerar esos otros nombres.
- Descripción
Esta es una descripción del ataque en sí y de su posible origen. Se trata esencialmente de un campo de texto libre que permite registrar información que no se ajusta fácilmente a los demás campos.
- Intención del atacante
Este campo identifica el resultado previsto por el atacante. Indica el objetivo principal y la finalidad del ataque. Por ejemplo, la intención del atacante en un ataque de denegación de servicio (DoS) por saturación de ancho de banda es impedir el acceso al sitio web objetivo para el tráfico legítimo.
- Motivación
Este campo registra el motivo del atacante para intentar este ataque. Puede ser para colapsar un sistema y causar daños económicos a la organización, o para robar datos críticos y obtener un beneficio económico.
Este campo es ligeramente diferente del campo Intención del Atacante, ya que describe por qué el atacante podría querer lograr la intención que figura en el campo Intención del Atacante, en lugar del resultado físico del ataque.
- Vulnerabilidad explotable
Este campo indica el tipo específico de vulnerabilidad que origina la oportunidad de ataque. Un ejemplo de esto en un ataque de desbordamiento de enteros sería que el campo de entrada de enteros no verifica el tamaño del valor de los datos entrantes para asegurar que la variable objetivo pueda manejar dicho valor. Esta es la vulnerabilidad que el exploit asociado aprovechará para llevar a cabo el ataque.
- Participantes
Los participantes son una o más entidades necesarias para que este ataque tenga éxito. Esto incluye los sistemas de la víctima, así como el atacante y sus herramientas o componentes del sistema. El nombre de cada entidad debe ir acompañado de una breve descripción de su función en el ataque y de cómo interactúan entre sí.
- Diagrama de proceso
Estos son uno o más diagramas del ataque para explicar visualmente cómo se ejecuta. Este diagrama puede adoptar cualquier formato que se considere apropiado, pero se recomienda que sea similar a un diagrama de sistema o de clases que muestre los flujos de datos y los componentes involucrados.
- Dependencias y condiciones
Todo ataque debe tener un contexto para operar y las condiciones que lo hacen posible. Esta sección describe las condiciones necesarias y los sistemas o situaciones adicionales que deben estar presentes para que el ataque tenga éxito. Por ejemplo, para que el atacante pueda ejecutar un ataque de desbordamiento de enteros, debe tener acceso a la aplicación vulnerable. Esto es común en la mayoría de los ataques. Sin embargo, si la vulnerabilidad solo se manifiesta cuando el objetivo se ejecuta en un servidor RPC remoto, también se debe tener en cuenta esta condición.
- Código de ataque de ejemplo
Si es posible demostrar el código de explotación, esta sección proporciona un lugar para almacenar dicho código. En algunos casos, como en un ataque de denegación de servicio, puede que no sea posible proporcionar un código específico. Sin embargo, en ataques de desbordamiento y secuencias de comandos entre sitios (XSS) , un código de ejemplo sería muy útil.
- Exploits existentes
Las vulnerabilidades pueden ser automatizadas o manuales. Las automatizadas suelen presentarse como virus, gusanos y herramientas de hacking. Si se conocen vulnerabilidades para este ataque, esta sección debe utilizarse para incluir referencias a las mismas. Estas referencias pueden ser internas, como bases de conocimiento corporativas, o externas, como las bases de datos de CERT y virus.
No hay que confundir los exploits con las vulnerabilidades. Un exploit es un ataque automatizado o manual que aprovecha una vulnerabilidad. No se trata, por ejemplo, de una lista de vulnerabilidades encontradas en un producto específico.
- Ataques posteriores
Los ataques posteriores son cualquier otro ataque que pueda ser posibilitado por este patrón de ataque en particular. Por ejemplo, un ataque de desbordamiento de búfer suele ir seguido de ataques de escalada de privilegios, ataques de subversión o la preparación para ataques de troyano/puerta trasera. Este campo puede ser particularmente útil al investigar un ataque e identificar qué otros ataques potenciales se pudieron haber llevado a cabo o preparado.
- Tipos de mitigación
Los tipos de mitigación son las estrategias básicas que se utilizan para prevenir el patrón de ataque. Generalmente, se hace referencia a los patrones de seguridad y a los patrones de codificación defensiva. Los tipos de mitigación también sirven para clasificar diversos patrones de ataque. Al clasificar los patrones de ataque de esta manera, se pueden desarrollar bibliotecas para implementar tipos de mitigación específicos, las cuales se pueden usar para mitigar clases completas de patrones de ataque. Estas bibliotecas se pueden usar y reutilizar en diversas aplicaciones para garantizar una cobertura consistente y confiable contra tipos de ataques específicos.
- Medidas de mitigación recomendadas
Dado que se trata de un patrón de ataque, aquí se presenta brevemente la mitigación recomendada. Idealmente, esto guiará al usuario hacia un patrón de mitigación más completo para este tipo de ataque.
- Patrones relacionados
Esta sección incluirá varias subsecciones, como Patrones relacionados, Patrones de mitigación, Patrones de seguridad y Patrones arquitectónicos. Estas son referencias a patrones que pueden respaldar, relacionarse o mitigar el ataque, y la descripción del patrón relacionado debe indicarlo.
Un ejemplo de patrones relacionados con un patrón de ataque de desbordamiento de enteros es:
Patrones de mitigación: patrón de entrada filtrada, patrón de propiedades de autodefensa.
Patrones relacionados: Patrón de desbordamiento de búfer
- Alertas, listados y publicaciones relacionadas
Esta sección incluye todas las referencias a alertas y publicaciones relacionadas, como las de la lista de Vulnerabilidades y Exposiciones Comunes (CERT), SANS y cualquier otra alerta de proveedores. Estas referencias deben incluir enlaces a las alertas y listas en línea para garantizar que se incluya la información más actualizada posible.
- CVE:
- CWE:
- CERTIFICADO:
Diversos sitios de notificación de proveedores.
Véase también
Lecturas adicionales
- Alexander, Christopher; Ishikawa, Sara; y Silverstein, Murray. Un lenguaje de patrones . Nueva York, NY: Oxford University Press , 1977.
- Gamma, E.; Helm, R.; Johnson, R.; y Vlissides, J. Patrones de diseño: Elementos de software orientado a objetos reutilizable ISBN 0-201-63361-2Addison -Wesley , 1995
- Thompson, Herbert; Chase, Scott, Guía de vulnerabilidades de software ISBN 1-58450-358-0Charles River Media, 2005
- Gegick, Michael y Williams, Laurie . « Coincidencia de patrones de ataque con vulnerabilidades de seguridad en diseños de sistemas intensivos en software ». ACM SIGSOFT Software Engineering Notes, Actas del taller de 2005 sobre ingeniería de software para sistemas seguros: creación de aplicaciones confiables SESS '05, Volumen 30, Número 4, ACM Press , 2005.
- Howard, M.; y LeBlanc, D. Escritura de código seguro ISBN 0-7356-1722-8, Microsoft Press , 2002.
- Moore, AP; Ellison, RJ; y Linger, RC Modelado de ataques para la seguridad y la supervivencia de la información , Software Engineering Institute , Universidad Carnegie Mellon , 2001
- Hoglund, Greg y McGraw, Gary. Explotación de software: Cómo romper el código ISBN 0-201-78695-8Addison-Wesley, 2004
- McGraw, Gary. Seguridad del software: Construyendo seguridad en ISBN 0-321-35670-5Addison-Wesley, 2006
- Viega, John y McGraw, Gary. Creación de software seguro: Cómo evitar problemas de seguridad de la manera correcta. ISBN 0-201-72152-XAddison-Wesley, 2001
- Schumacher, Markus; Fernández-Buglioni, Eduardo; Hybertson, Duane; Buschmann, Frank; Sommerlad, Peter Patrones de seguridad ISBN 0-470-85884-2John Wiley & Sons , 2006
- Koizol, Jack; Litchfield, D.; Aitel, D.; Anley, C.; Eren, S.; Mehta, N.; y Riley, H. Manual del Shellcoder: Descubriendo y explotando vulnerabilidades de seguridad ISBN 0-7645-4468-3Wiley, 2004
- Schneier, Bruce. Árboles de ataque: modelado de amenazas a la seguridad. Dr. Dobb's Journal, diciembre de 1999.
Referencias
- fuzzdb:
- Pruebas de software
- Piratería informática (seguridad informática)