Intel管方对5月15号曝光的CPU侧信道木马病毒“ZombieLoad”的详尽技术指标分析(下)
堆栈遮盖的系统序列
在沒有枚举MD_CLEAR作用的Cpu上,一些命令序列可用以遮盖受MDS危害的堆栈。你能点此,详尽查询这种序列。
不一样的Cpu将会必须不一样的序列来遮盖受MDS危害的堆栈,系统序列的某些规定给出:
1.在适用同歩多线程(SMT)的Cpu上,相同数学操作系统上的别的进程应在序列期内中止,那样他们就不容易分派添充堆栈。这容许当今进程遮盖全部添充堆栈,非常是,这种中止的进程不可实行将会擦肩而过L1D内存的一切载入或储存。中止进程应当对PAUSE命令开展循坏,以限定序列期内的交差进程干挠。
2.针对依靠REP字符串命令的序列,MSR位IA32_MISC_ENABLES [0]务必设定为1,便于开启迅速字符串。
堆栈什么时候会被遮盖
不管怎样转换到之前不信赖的系统,都应遮盖储存堆栈、添充堆栈和载入网关。假如系统保证一切这种堆栈上都找不到受维护的统计资料,则能够防止堆栈被遮盖。
OS
当从ring0变换到ring3时,OS能够实行VERW命令来遮盖受危害堆栈中的一切受维护统计资料。这将遮盖将会应属操作系统或别的程序运行的堆栈中的受维护统计资料,当SMT处在活动状态时,也应在进到C情况以前及其撤出C情况和变换为不能信编码中间实行此命令。
Intel ®系统维护拓展(Intel ®SGX)
当进到或撤出Intel ®系统维护拓展(Intel ®SGX)缓冲区(enclave)时,枚举对MD_CLEAR适用的Cpu将自動遮盖受危害的统计资料堆栈。
虚拟机管理器(VMM)
VMM能够在进到客户VM以前实行VERW命令或L1D_FLUSH指令,这将遮盖将会应属VMM或别的vm的堆栈中的受维护统计资料。除开载入枚举MD_CLEAR的微编码升级,在进到客户虚拟机以减轻L1TF以前早已应用L1D_FLUSH指令的VMM将会不用开展大量升级。
尽管VMM将会只在1个进程上传出L1D_FLUSH来更新L1D中的统计资料、添充堆栈和操作系统中的全部进程载入网关,但只消除当今进程的储存堆栈。当另外进程接着进到用户端时,将会必须VERW来遮盖应属另外进程的储存堆栈。
体系管理机制(SMM)
将体系管理机制(SMM)统计资料曝露给接着在同样思维Cpu上进到的系统,能够根据在撤出SMM时遮盖堆栈来减轻这种情况。在枚举MD_CLEAR2的Cpu上,Cpu将在实行RSM命令时自動遮盖受危害的堆栈。
程序内的安全域
应用应用场景語言的安全系数的系统能够在不一样的信赖域中间开展变换,在信赖域中间开展变换时,能够应用VERW命令消除堆栈。
如Deep Dive:Managed Runtime Speculative Execution Side Channel Mitigations 中常探讨的,站名防护将会是这种更合理的工艺,一般用以解决推断实行端入口。
应用同歩多线程(SMT)的坏境开展减轻
OS
服务器系统务必应用二种不一样的方式来避免进程应用MDS来推论弟兄进程应用的统计资料值,第一位(组调度)可避免客户对客户的进攻。当1个进程在另外进程内以客户方式进到的网络攻击实行操作系统编码时,下一个(同歩内容)能够维护操作系统统计资料免遭进攻。
组调度
当今进程超越安全域时,服务器系统能够避免弟兄进程进到恶意代码。 OS调度系统能够根据保证分享同样数学操作系统的系统工做荷载相互相互尊重(比如,假如他们坐落于同样的运用程序定义的安全域中)或保证别的进程处在空余情况来减轻对弟兄进程的操纵。
服务器系统能够外部地(比如,根据任務关系或cpuset)在工做载入中间强制执行这类信赖关联,或是根据OS中的组调度系统(偶尔称之为操作系统调度系统)静态地强制执行。组调度系统应当选用弟兄操作系统上具备同样信赖域的程序,但条件是沒有别的空余操作系统能用。这将会会危害操作系统中间的载入均衡战略。假如来源于适配信赖域的程序无效,则调度系统将会必须使弟兄进程空余出来。
1.png
沒有组调度的体系
2.png
具备组调度的体系
图1显视了1个三核体系,列举Core 2进到来源于不一样安全域的程序。这种程序将可以应用MDS推测受维护的统计资料。图2显视了组调度系统怎样根据保证沒有操作系统一起进到来源于不一样安全域的程序,以减轻程序到程序进攻的概率。
应用IPI同歩ring 0的进到和撤出
当当今系统配置进程从客户编码(运用编程代码)变换到操作系统编码(ring0方式)时,OS必须付诸行动。这将会是系统调用或终断异步事的一小部分,因而将会不容许弟兄进程在客户方式下实行,由于操作系统编码将会不信赖客户编码。在服务器系统的简单化视图中,人们能够觉得每一进程处在下列几种情况之首:
1.空置情况;
2.Ring 0(操作系统编码)情况;
3.客户(运用编程代码)情况;
图为显视了维持操作系统安会状况下,没受故意程序运行进攻
SMM
SMM是BIOS应用的这种独特的Cpu方式,枚举MD_CLEAR并受MDS危害的Cpu将在撤出SMM的RSM命令期内自动刷新受危害的微系统架构构造。
SMM系统务必在进到和撤出SMM时对全部思维Cpu开展交合,以保证弟兄思维Cpu在自动刷新后不容易将统计资料再次载入到微系统架构构造中。现阶段,大部分SMM系统早已保证了这一些。这保证了在应属SMM的统计资料坐落于微系统架构构造为光,非SMM系统不容易进到,这类SMM保持不用对MDS开展一切系统变更。
CPUID枚举
CPUID.(EAX=7H,ECX=0):EDX[MD_CLEAR=10] 罗列了对额外作用的适用,这种作用将更新下边列举的微系统架构。
1.实行(目前的)VERW命令时,其叁数是1个运存使用标值;
2.在IA32_FLUSH_CMD MSR中设定L1D_FLUSH指令位;
3.实行RSM命令;
4.进到或撤出Intel SGX缓冲区。
用以遮盖堆栈的系统序列
针对沒有枚举MD_CLEAR作用的Cpu,能够应用下列命令序列遮盖受MDS危害的堆栈。在枚举MD_CLEAR的Cpu上,应当应用VERW命令或L1D_FLUSH command4来替代这种系统序列。
系统序列在每一Cpu建模上应用最时兴的可用内存使用方法,以保证遮盖全部的进阶位。在这种序列里面产生的数据管理终断(SMI)、终断或不正常将会造成实行较小的运存浏览,而这种浏览只遮盖堆栈的较底位。在这种情况下,当序列过去进行时,某些堆栈内容将会被遮盖2次,而只能别的堆栈条目地底位被遮盖。列举某些序列应用%xmm0遮盖微系统架构堆栈,能够安会地假定这一值不包括受维护的统计资料,由于Intel在回到客户方式(能够立即浏览%xmm0)以前实行这一序列。尽管遮盖使用根据MDS木马病毒使弟兄进程可以看到%xmm0值,但Intel假定组调度保证弟兄进程上的程序在回到客户方式的进程上被程序信赖。
温馨提醒,在虚拟化坏境中,VMM将会没法为客户服务器系统出示相关已经应用的具体数学Cpu建模的真實消息。在这种坏境中,Intel提议客户服务器系统自始至终应用VERW。
Nehalem,Westmere,Sandy Bridge和Ivy Bridge
下边的序列能够遮盖Cpu系类编码Nehalem、Westmere、Sandy Bridge或Ivy Bridge中受危害的统计资料堆栈。
相关文章
- 2条评论
- 绿邪拔弦2022-06-02 14:39:17
- (比如,根据任務关系或cpuset)在工做载入中间强制执行这类信赖关联,或是根据OS中的组调度系统(偶尔称之为操作系统调度系统)静态地强制执行。组调度系统应当选
- 离鸢莣萳2022-06-03 01:37:57
- EAR=10] 罗列了对额外作用的适用,这种作用将更新下边列举的微系统架构。1.实行(目前的)VERW命令时,其叁数是1个运存使用标值;2.在IA32_FLUSH_CMD MSR中设定L1D_FLUSH指令位;3.实行RSM命令;4.进到或撤出Intel SGX缓