ven*_*ngy 5 x86 assembly cpu-architecture speculative-execution
最近遇到了SERIALIZE指令。
串行化指令执行。在获取并执行下一条指令之前,SERIALIZE 指令可确保完成先前指令对标志、寄存器和内存的所有修改,从而耗尽对内存的所有缓冲写入。
这是一个示例 masm64 程序,其扩展名为Secret Key. 在访问密钥之前,它会通过调用包围敏感代码,SERIALIZE以期防止任何类型的推测执行。
option casemap:none
includelib kernel32.lib
includelib libcmt.lib
.data
sensitiveData db "My Secret Key", 0
.code
main proc
SERIALIZE
lea eax, [sensitiveData]
SERIALIZE
ret
main endp
end
Run Code Online (Sandbox Code Playgroud)
问题
可以SERIALIZE用来缓解推测执行漏洞,例如Meltdown吗?
更新
刚刚发现这篇文章解释了这个新指令。
Linux 内核准备使用英特尔的新 SERIALIZE 指令
...英特尔 Linux 工程师发送了一系列补丁,以在内核的sync_core() 函数中使用英特尔 SERIALIZE 指令。Linux 的sync_core 函数被调用来停止推测执行和预取修改后的代码。...