seccomp 可以用来强制执行确定性执行吗?

seccomp 可以用来强制执行确定性执行吗?

seccomp(2)可用于严格限制特定进程可以进行的系统调用,包括引入不确定性的系统调用,例如getrandom(2)gettimeofday(2)。有没有办法强制进程执行完全确定性的?

至少,我猜我需要阻止该进程使用RDTSC.我发现这篇旧博文描述prctl(PR_SET_TSC)x86_64 上的实际损坏情况。是否有一种现代方法可以解决这个问题,或者是否不可能强制执行完美的确定性执行?

答案1

非决定论有很多来源,而不仅仅是 RDTSC。一方面,如果程序是多线程的,它将能够从调度决策中获取熵,尤其是在 SMP 系统上。如果我们谈论的是 IPC 受到严格限制的单线程程序,那么限制性的 seccomp 监狱可能就可以解决问题。

您始终可以修补内核以修复 RDTSC 缺陷。正如@Gilles 提到的,您可能还需要禁用 ASLR。

相关内容