本来的目的是看sgx引入lfence的目的是不是为了防SGX下Spectre。不过最终只找到相关时间,不好下结论。此处做一个Mark。
SGX的Lfence相关时间记录
lfence就是Load指令的fence,就是load的栅栏、篱笆。
https://github.com/intel/linux-sgx/
Sgx v1.8(2017.3) 引入page_fence 防止缓冲区溢出。
Sgx v1.9(2017.7) 引入thread_fence、signal_fence,防止线程间、线程与信号处理程序间不同步。
Sgx 2.1.1(2018.2) 引入__builtin_ia32_lfence(Intel SSE2中定义),这是sgx_lfence的前身,当时旨在执行ECALL前先检查程序传参合法性(user_check标志)。
Sgx 2.1.2(2018.3) 引入sgx_lfence,本质是__builtin_ia32_lfence
SGX下Spectre攻击出现时间
SgxSpectre(2018.1.9)出现
SgxPectre(2018.2.27)出现(https://github.com/OSUSecLab/SgxPectre)