it-swarm-es.com

¿Cómo puedo probar mi aplicación web para detectar ataques de tiempo?

condiciones de carrera, etc.

¿Existen herramientas automáticas para esto? ¿Qué técnicas manuales debo utilizar?


Desde el propuesta Area51

16
AviD

Los ataques de tiempo, condición de carrera (CWE-362) las vulnerabilidades no son muy comunes para las aplicaciones web, estos son principalmente problemas de lenguajes de nivel más bajo. Por ejemplo, en CVE-2006-5178 , la condición de carrera se debió a una implementación incorrecta en PHP intérprete en sí. Pero la aplicación que depende de esas funciones también se vuelve vulnerable.

Podría resultar abrumador intentar reproducir tal vulnerabilidad, debido a problemas de tiempo y las necesidades de un entorno específico. Con los escáneres de vulnerabilidades automatizados no es factible realizar dicha prueba, incluso para los humanos no es fácil encontrar tal vulnerabilidad.

En mi opinión, el desarrollador solo debe tener en cuenta cuándo se puede interrumpir el proceso principal. Debe proporcionarse atomicidad cuando la secuencia de acciones no debe ser interrumpible. Principalmente, las acciones de la base de datos son susceptibles a tales ataques. Incluso cuando DBMS admite transacciones y proporciona medios para una sincronización segura, puede haber más acciones globales que estén bajo el control de DBMS para hacerlas atómicas. También se debe prestar atención a las situaciones en las que se utilizan hilos.

En el enlace a CWE-362, hay una lista de artículos que son útiles para leer. Estos proporcionarían mucha más información de la que he dado aquí.

8
anonymous

La discusión y las respuestas aquí parecen estar en torno a condiciones de carrera , a las que generalmente se hace referencia con ese nombre.

Si realmente te refieres a ataques de tiempo , probablemente estés hablando de filtración de información a través de discrepancias en el tiempo de ejecución. na lección sobre ataques de tiempo es una introducción agradable y accesible a esto.

No conozco ninguna herramienta que pueda ayudar específicamente a descubrirlos, pero las herramientas de evaluación web comunes podrían revelar otros problemas que podrían verse agravados por un ataque de sincronización.

Suponga que tiene una vulnerabilidad que permite que una parte externa ejecute código SQL en su base de datos: inyección SQL clásica. Suponga que ha tomado algunas precauciones: no pueden recuperar los datos o escribir información arbitraria en su base de datos, simplemente devuelve un mensaje de error genérico de algún tipo. Sería posible que la parte externa sondeara el esquema de su base de datos usando declaraciones "seleccionar" y cronometrando cuánto tiempo tomó recibir una respuesta; simplemente observando cuánto trabajo está haciendo su sistema de back-end, están aprendiendo algo al respecto que de otra manera no tendrían (si una tabla en particular existe realmente, si hay muchos registros en una tabla, etc.).

6
medina