O seccomp pode ser usado para impor a execução determinística?

1

seccomp(2) pode ser usado para limitar severamente o que o syscalls pode fazer de um processo em particular, incluindo syscalls que introduzem não determinismo, como getrandom(2) e gettimeofday(2) . Existe uma maneira de forçar a execução do processo a ser inteiramente determinista?

No mínimo, suponho que precisaria evitar que o processo use RDTSC . Eu encontrei esta antiga postagem no blog descrevendo como prctl(PR_SET_TSC) está realmente quebrado em x86_64. Existe uma maneira moderna de contornar esse problema, ou é impossível impor uma execução perfeitamente determinista?

    
por Tim McLean 14.12.2016 / 02:41

1 resposta

1

O não-determinismo tem muitas fontes, não apenas RDTSC. Por um lado, se um programa é multi-threaded, será capaz de pegar entropia de decisões de agendamento, especialmente em um sistema SMP. Se estamos falando de programas single-threaded com IPC severamente limitado, pode ser que uma prisão restritiva seja o suficiente.

Você sempre pode corrigir o kernel para corrigir a falha RDTSC. Como mencionado por @Gilles, talvez você precise desativar o ASLR também.

    
por 14.12.2016 / 03:27