¿Es posible planificar las condiciones de la carrera?

1

¿Es posible planificar las condiciones de carrera para que pueda ejecutar comandos específicos en un momento específico?

Por ejemplo, el siguiente código es vulnerable a una condición de carrera. ¿Es posible modificar el archivo / reemplazarlo con un enlace simbólico exactamente cuando aparece la ventana de carrera y sin intentarlo continuamente (como con while True )?

if (access("file", W_OK) != 0) {
   exit(1);
}

fd = open("file", O_WRONLY);
write(fd, buffer, sizeof(buffer));

¿Puedo explotar esta vulnerabilidad con un intento o un intento? Si la respuesta es verdadera, ¿cómo puedo escribir un exploit para hacer esto?

¿Es posible sincronizar el flujo de ejecución con la función C sleep(seconds); ?

    
pregunta user104787 24.03.2016 - 21:32
fuente

2 respuestas

0

Necesitaría poder rastrear la ejecución del programa vulnerable de alguna manera para detectar cuándo se ejecuta el código en cuestión. Una posibilidad sería un debugger o ptrace. Pero para rastrear el programa de esta manera, necesitaría tener los permisos adecuados, es decir, privilegios iguales o superiores a los del usuario que ejecuta el programa. Pero en este caso, no tendría que explotar la vulnerabilidad en absoluto porque ya tiene los mismos privilegios o uno más alto.

Otra forma sería observar eventos específicos que generalmente se ejecutan poco antes del código vulnerable y que son visibles con privilegios más bajos. Esto podría incluir la creación de archivos en directorios públicos o similares. Los detalles de estos eventos y, si existen, dependen en gran medida del programa que intenta explotar, es decir, no existe una forma general independiente de la aplicación para detectar el momento en que se podría aprovechar la vulnerabilidad.

    
respondido por el Steffen Ullrich 24.03.2016 - 21:56
fuente
0

Variará según una serie de factores, incluidos el sistema operativo y el sistema de archivos. Por ejemplo, si su código está usando un montaje NFS y el hack está en el servidor de archivos, entonces hay una posibilidad razonable de que un evento de inotificación haga el truco. El DFS puede introducir estados extraños en los que falta un archivo recién escrito para las lecturas. He visto que al azar elimina un trabajo de BI que había estado estable durante años.

Por supuesto, en su ejemplo, sería mejor intentar abrir el archivo para escribirlo y probar su éxito, en lugar de una comprobación explícita antes de abrirlo.

    
respondido por el Phil Lello 24.03.2016 - 23:57
fuente

Lea otras preguntas en las etiquetas