Vulnerabilidades de condición de carrera en aplicaciones web

Vulnerabilidades de condición de carrera en aplicaciones web
Cuando se requiere una aplicación web configurada para administrar funciones en una secuencia fija para ejecutar dos o más operaciones simultáneamente, se produce un ataque de condición de carrera. Esta técnica aprovecha un retraso de tiempo entre cuándo se introduce un servicio y cuándo ocurre un control de seguridad. Este ataque puede llevarse a cabo de cualquiera de las dos maneras, basadas en aplicaciones multiproceso: intrusión incurrida por procesos no confiables e intrusión incurrido por un proceso confiable que podría tener los mismos e igualdad de derechos.

Diferentes procesos pueden interactuar entre sí sin medidas adecuadas. Estos ataques también se conocen como tiempo de ataque de cheque, ataque de tiempo de uso o ataques de TOC/TOU. Las vulnerabilidades de la condición de la carrera están allí en primer lugar debido a los errores de programación básicos que los desarrolladores suelen crear, y estas fallas han demostrado ser costosas. Las entidades maliciosas han explotado las condiciones de la carrera para muchos propósitos maliciosos, yo.mi., Desde obtener cupones gratuitos para robar dinero de cuentas en línea y empresas de inversión.

Supongamos que dos hilos de ejecución paralelos intentan aumentar el valor de una variable global en 5. En última instancia, entonces, la variable global tendría un valor de 10. Sin embargo, si todos los hilos se ejecutan simultáneamente, la ejecución puede ser incorrecta sin bloqueos de recursos o sincronización. Cuando el primer hilo está haciendo algunas manipulaciones a esa variable global, el segundo hilo lo lee y comienza a hacer otras manipulaciones. En este caso, el valor final no sería el esperado.

Esto ocurre ya que el efecto de la terminación de un hilo depende del resultado de la otra. Cuando los dos hilos se ejecutan simultáneamente, habrá consecuencias no deseadas.

Alcance de los ataques de condición racial:

Imagine que cualquier cosa un poco más crítica está siendo ejecutado por los dos hilos del ejemplo anterior, como intercambiar dinero entre cuentas bancarias. Para enviar el dinero correctamente, el programa deberá ejecutar estas tareas en esta secuencia; Compruebe si hay suficiente saldo en la cuenta del remitente, agregue dinero a la cuenta del receptor y luego deduzca la cuenta del remitente. Pero si presenta simultáneamente dos solicitudes, es posible que pueda activar una condición en la que cambia la secuencia de ejecución de subprocesos. En una situación como esta, terminará con una cantidad diferente a la esperada.

Egor Homakov encontró la vulnerabilidad de la condición de la carrera en el sitio web de Starbucks. Descubrió una forma de crear una cantidad infinita de crédito en los cupones de regalo de Starbucks de forma gratuita usando diferentes navegadores con diferentes galletas.

El ataque destacado de Meltdown es un ejemplo de vulnerabilidad de la condición racial. En el ataque de colapso, la debilidad se desencadena por el procesamiento paralelo de la recuperación de datos de la memoria y la autenticación de si un usuario puede acceder o no a la memoria o no. Esta falla hace posible que una herramienta evite las verificaciones de privilegios estándar que separan el mecanismo de ataque para acceder a los datos del sistema operativo. Esta laguna da como resultado que cualquier proceso no autorizado vea datos e información de cualquier otra dirección conectada al estado del progreso actual en la memoria. En el proceso de ejecución defectuosa, la información de una dirección no aprobada con frecuencia se apilará rápidamente en el caché de la CPU, de la cual se puede recuperar la información.

Escenarios de ataque de la vida real:

Al enviar numerosas solicitudes al servidor web continuamente, puede buscar y manipular condiciones de carrera en aplicaciones web. Si desea ver si puede retirar más dinero del que tiene en su cuenta bancaria, utilizando la función curl, puede enviar simultáneamente varias solicitudes de retiro al servidor.

curl (retirada 50000) y (retirar 50000) y (retirar 50000) y (retirar 50000) y (retirar 50000) y (retirar 50000)

Cuantas más demandas se presente en un breve tiempo, mayores serán las posibilidades de que su ataque funcione.

Además, si envía solicitudes de seguimiento asincrónicas, seguirá a un usuario varias veces en lugar de enviar una respuesta de error. I.mi., Si agrega un encabezado falso que contiene %s mientras suelta solicitudes con turbo intruso y pegue el siguiente código de Python:

DEF SEGOTREQS (Target, Listas de palabras):
motor = requestEngine (Endpoint = Target.punto final,
Conconexiones concurrentes = 40,
requestsperconnection = 100,
tubería = falso
)
Para I en el rango (40):
motor.cola (objetivo.req, str (i), gate = 'check')
motor.OpenGate ('verificar')
motor.Complete (Tiempo de espera = 60)
Def RespuestaHandle (Req, interesante):
mesa.ADD (REQ)

Verás un botón de ataque. Después de presionar eso, el turbo intruso presenta 40 consultas y escanea los códigos de estado. Si ve múltiples respuestas con el estado generado 201, eso indica varias veces que ha seguido a la persona.

Hay una vulnerabilidad de condición de carrera en la que puede acceder a múltiples consolas ofrecidas a cuentas gratuitas. La mayoría de los sitios web que proporcionan consolas gratuitas tienen cuentas gratuitas, paquetes estándar y premium. Las cuentas gratuitas proporcionan solo 2 o 3 consolas por usuario. Para romper este límite y usar consolas ilimitadas, intrueve la solicitud GET utilizando cargas útiles nulas varias veces, como 100 o 200. Y luego elimine cualquiera de las consolas manualmente de la interfaz de usuario mientras los hilos se están ejecutando.

Conclusión:

Como medio para socavar los controles de acceso, se incluyen condiciones de carrera. Cualquier programa que dependa de los mecanismos de control de acceso puede ser vulnerable. La mayoría de las veces, en los sitios web de las instituciones financieras, los piratas informáticos explotan las condiciones de carrera. Dado que podría conducir a beneficios financieros ilimitados para el hacker si se pudiera descubrir una condición de carrera en una característica vital como retiro de efectivo, transferencia de dinero o pago con tarjeta de crédito. Las plataformas de comercio electrónico, los videojuegos y los servicios de votación en línea son otras tecnologías de alto riesgo. Implementar una concurrencia segura es el secreto para evitar las condiciones de carreras. Y también puedes usar bloqueos de recursos. También habrá una función de bloqueo incorporada para lenguajes de programación con habilidades de concurrencia que ayudan a prevenir tales condiciones. Además, siguiendo los estándares de codificación seguros, yo.mi., El concepto de menor privilegio y el código de auditoría disminuirán las posibilidades de violación del programa.