CN112256332A - 一种处理器芯片假安全依赖冲突的识别方法及系统 - Google Patents

一种处理器芯片假安全依赖冲突的识别方法及系统 Download PDF

Info

Publication number
CN112256332A
CN112256332A CN202010973779.0A CN202010973779A CN112256332A CN 112256332 A CN112256332 A CN 112256332A CN 202010973779 A CN202010973779 A CN 202010973779A CN 112256332 A CN112256332 A CN 112256332A
Authority
CN
China
Prior art keywords
branch
security
false
instruction
dependency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010973779.0A
Other languages
English (en)
Other versions
CN112256332B (zh
Inventor
侯锐
孟丹
李沛南
赵路坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Publication of CN112256332A publication Critical patent/CN112256332A/zh
Application granted granted Critical
Publication of CN112256332B publication Critical patent/CN112256332B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明提出一种处理器芯片假安全依赖冲突的识别方法及系统,属于处理器芯片微体系结构设计领域,基于安全依赖,在程序执行过程中动态地识别出推测执行的分支指令,并分析存在泄露敏感信息风险的分支指令,并动态地建立安全依赖关系,防止攻击者通过后续的资源竞争获得敏感信息。本发明在微体系结构层级实现,对上层应用软件透明,无需对现有的软件进行重新编译,且用户程序无法控制该安全依赖建立、消除的逻辑。本发明可以在保证推测敏感分支安全性的同时,减少由于流水线堵塞产生的性能损失。

Description

一种处理器芯片假安全依赖冲突的识别方法及系统
技术领域
本发明属于处理器芯片微体系结构设计领域,涉及一种基于推测执行分支相关指令序列的处理器芯片假安全依赖冲突的识别方法及系统。
背景技术
分支预测是高性能处理器中的核心性能优化技术之一,应用于几乎所有的商用处理器中。但“幽灵”漏洞的披露揭示了分支预测技术存在严重的安全隐患。利用推测执行窃取敏感信息的相关变种层出不穷。攻击者利用程序在错误推测执行过程中访问敏感信息,并抢占微体系结构资源或改变部分结构的状态。而这些资源的抢占与状态改变能被攻击者用来分析出敏感信息。目前已有方法防止错误推测过程中将敏感信息相关的状态改变,然而对于敏感信息相关的资源抢占却还未解决。
攻击者通常利用推测执行中的资源抢占来分析敏感信息相关的分支信息。具体地,攻击者首先诱导受害者程序错误推测执行特定的代码片段;紧接着,由敏感信息决定跳转方向的分支在解析后,推测执行后续的代码,不同的跳转方向将占用不同的微体系结构资源。与此同时,攻击者利用处理器提供的超线程机制,在受害者所在物理核上运行另外一个线程,实时地监听敏感分支相关路径上访问的资源。当受害者程序占用相关资源时,攻击者监听线程的执行时间相比受害者程序未占用资源时较长。攻击者利用此时间差分析受害者程序是否执行具体占用资源指令所在的分支路径,继而知悉受害者程序的跳转方向,最终得到敏感信息。
为了防止敏感信息相关的分支指令泄露信息,可以通过软件的方法对敏感的分支指令加以标记,避免此类分支的推测执行。但软件的方法存在两个缺陷:一方面,手动或通过编译器自动的方法找寻敏感分支也无法保证完全覆盖,仍面临安全问题;另一方面,重新编译已有的软件并不现实。通过硬件的方法,完全停止分支后指令的执行必然会导致性能的严重下降。基于安全依赖,通过动态地识别可疑的分支指令,再对这些分支后续的指令选择性地执行。在保证安全性的同时,保障性能。
发明内容
错误推测的窗口内,攻击者通过监听敏感分支相关后续的指令是否占用了特定的功能执行单元,分析时间差进而推出敏感信息的值。为了防止此类攻击的产生,本发明基于安全依赖的定义,在程序执行过程中动态地识别出推测执行的分支指令,并分析存在泄露敏感信息风险的分支指令,并动态地建立安全依赖关系,防止攻击者通过后续的资源竞争获得敏感信息。本发明在微体系结构层级实现,对上层应用软件透明,无需对现有的软件进行重新编译,且用户程序无法控制该安全依赖建立、消除的逻辑。该方法可以在保证推测敏感分支安全性的同时,减少由于流水线堵塞产生的性能损失。
为实现上述目的,本发明采用以下技术方案:
一种处理器芯片假安全依赖冲突的识别方法,包括以下步骤:
在处理器流水线中,判断当前的分支指令是否带有标识推测执行的安全依赖标记,若带有,则认为该分支处于推测执行状态;
对于存在安全依赖标记的无条件分支,判定为假安全依赖;
对于存在假安全依赖的分支指令,使其按照正常分支指令执行,在其源操作被解析后,如果该指令被错误推测,则立即恢复现场,重定向后继续执行后续指令。
进一步地,根据分支指令的源操作数类型,判断该分支是否存在隐含敏感信息的可能,如果不存在,则判定为存在安全依赖标记的无条件分支。
进一步地,对于存在安全依赖标记的条件分支,直接判定全部为真安全依赖,或者进一步判断安全依赖的真假。
进一步地,进一步判断安全依赖真假的方法为:对于存在安全依赖标记的条件分支,在该分支前有推测地访问数据,如果该数据作为判断条件,则判定为真安全依赖,否则判定为假安全依赖。
进一步地,所述数据作为判断条件包括该数据直接作为判断条件,或者该该数据通过计算后作为判断条件两种情况。
进一步地,通过缓冲区或存储单元记录真假安全依赖的判定结果。
进一步地,对于存在真安全依赖的分支指令,停止后续指令执行,或者进行固定跳转,或者根据预测表中的跳转方向跳转。
进一步地,对于固定跳转和根据预测表中的跳转方向跳转,当发生错误预测时进行标记,并在表中记录正确的跳转方向;当安全依赖被解除后,依据分支在被推测执行期间是否发生错误预测来决定是否需要恢复现场和跳转至目标地址,如果发生错误预测,则恢复现场,并根据跳转判断决定跳转至目标地址或不跳转而执行后续指令。
一种处理器芯片假安全依赖冲突的识别系统,包括存储器和处理器,该存储器存储计算机程序,该计算机程序被配置为由该处理器执行上述方法中各步骤。
一种计算机可读存储介质,包含计算机程序,当由服务器的处理器执行所述计算机程序时使得该服务器执行上述方法中的各个步骤。
与现有处理器结构相比,本发明的积极效果是:
本发明在微体系结构层级实现,对上层引用透明,已有的软件库、操作系统等无需重新修改,也无需编译。攻击者无法通过软件干预分支指令假安全依赖的判定。该方法在保证推测执行的分支不泄露敏感信息的前提下,保证安全指令的正常执行,从而达到安全与性能的平衡。
附图说明
图1为针对示例攻击代码,在发射队列中实现假安全依赖的检测示例图。
具体实施方式
为使本发明的技术方案能更明显易懂,特举实施例并结合附图详细说明如下。
安全依赖关系是指在程序执行序中,当前一条指令尚未被解析,即还未确定该指令是否会由于发生错误而重新执行时,后续指令被超前执行,但超前执行的指令对微体系结构的改变可能被其他攻击程序感知到,进而产生信息泄露,即称这两条指令之间存在安全依赖关系。安全依赖对推测执行的指令建立了依赖标识,一条指令在执行前可以知悉之前是否安全依赖于之前的正处于推测状态的指令。基于此,本发明主要包含:1)依据分支指令的源操作数类型,判断该分支是否存在隐含敏感信息的可能,如果不存在,则判定为存在安全依赖标记的无条件分支;2)允许不包含敏感信息的分支(即存在假安全依赖的分支指令)及后续指令的正常执行,但对于可能存在敏感信息的分支(即存在真安全依赖的分支指令),标记其为危险的分支,即使在其源操作数已计算出来,仍不允许其更新分支的跳转方向。在保证安全性的同时,允许安全的分支指令正常执行,保证程序的执行性能。
本发明的方法主要包含以下内容:
一)动态判断假安全依赖:
在处理器流水线中,判断当前的分支指令是否为推测执行,即是否带有标识推测执行的安全依赖标记。对于存在安全依赖标记的无条件分支,因其不存在隐含敏感信息条件的可能,故被判定为假安全依赖;除此以外,对于条件分支,一种方法为直接判定存在真安全依赖;也可以依据以下条件,进一步判断该安全依赖是否真实存在安全隐患。
1)在该分支前有推测地访问数据,该数据可能为错误推测地读取到敏感信息;
2)该数据直接作为判断条件或者通过计算后作为判断条件时,后续指令执行时占用的资源有可能反映该分支条件,存在信息泄露的可能,判定其安全依赖为真。否则当其判断条件并非为推测执行期间访问的数据时,判定其为假安全依赖。
实际应用中,可以采用将所有条件分支判定为真安全依赖,也可以采用上述的判定方法。本发明不限定微体系结构中的实现方式。本发明依据现有的微体系结构状态信息,通过特殊的缓冲区或其他存储结构记录判定结果。本方法包括但不限于采用缓冲区结构来记录,也不限于记录最终依赖关系的判定信息。
二)处理存在安全依赖的分支指令:
对于存在假安全依赖的分支指令,允许其按正常分支指令执行,在其源操作被解析后,一旦发现该指令被错误推测,可以进行现场恢复,重新执行。但当存在真安全依赖时,即使源操作数被解析,且发生错误预测,仍不能立刻恢复现场,防止信息泄露;只有当该分支前的推测状态被接触后,才恢复错误预测现场,继续执行。
在发现真安全依赖的分支指令后,可以停止后续指令的执行,也可以采用上述方法。本发明不限定微体系结构中采用哪种实现方法。
本发明方法如图1所示,检测推测执行过程中敏感分支真假安全依赖,图1左侧为攻击代码示例图,在第一条分支(jmp)错误推测执行的窗口内,程序可能将敏感信息取回,示例中取回至r2,并作为条件分支(jbe)的判断条件决定是否跳转至跳转目标(gadget);攻击者通过监听该分支后续执行过程中是否由于左移指令(shl)触发占用移位功能单元,从而推出该敏感信息r2的值。图1右侧为在微体系结构的发射队列中引入哪些信息以支持假安全依赖的判断与处理。主要有以下内容:
一)推测执行分支指令的安全依赖判断
在发射队列中,依据安全依赖信息,以及指令被译码后的信息,判断一条分支指令是否为可疑的、存在安全风险的条件分支指令。对存在安全依赖的分支指令进行真假安全依赖的判断,一种方法为直接判断为真安全依赖,见公式(1);另一种方法为检测该条件分支的源操作数或判断条件是否依赖于当前推测窗口内取回的敏感数据,见公式(2)。其中,is_s为1时标识存在真安全依赖,否则为假安全依赖。本发明包含但不限于这两种判断方法。
is_s=SD&is_cond ⑴
is_s=SD&is_cond&is_spec_cond ⑵
二)对存在真安全依赖的分支指令的处理
当一条推测的条件分支指令存在假安全依赖时,后续的指令可以正常执行,且当发生错误预测时,可以及时地恢复现场,并重定向执行后续命令。
当该分支指令存在真安全依赖时,
1)通过阻止后续指令的执行;
2)也可以通过采用固定的跳转方向,避免信息泄露;
3)另一种方法是若分支预测表中有对应项,采用预测表中的跳转方向作为目标地址预测。
对于2)与3)方案,当发生错误预测时标记该分支错误预测,将表中的is_misp标记为1,但并不即时恢复现场与重定向。另外,为及时提供正确的跳转方向,可以将正确的方向记录于表中(taken)。这使得攻击者无法观察到真实的敏感信息决定的跳转方向,从而保证安全性。
当安全依赖被解除后,依据该分支在被推测执行期间是否发生错误预测(is_misp)来决定是否需要恢复现场、跳转至目标地址。例如图1中,存在真安全依赖的分支指令jbe在安全依赖解除后,发现期间错误推测执行(is_misp为真),需要恢复现场;此时,如果是否跳转(taken)也为真,则直接跳转至目标地址gadget;否则不跳转,执行后续指令。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,本发明的保护范围以权利要求所述为准。

Claims (10)

1.一种处理器芯片假安全依赖冲突的识别方法,其特征在于,包括以下步骤:
在处理器流水线中,判断当前的分支指令是否带有标识推测执行的安全依赖标记,若带有,则认为该分支处于推测执行状态;
对于存在安全依赖标记的无条件分支,判定为假安全依赖;
对于存在假安全依赖的分支指令,使其按照正常分支指令执行,在其源操作被解析后,如果该指令被错误推测,则立即恢复现场,重定向后继续执行后续指令。
2.如权利要求1所述的方法,其特征在于,根据分支指令的源操作数类型,判断该分支是否存在隐含敏感信息的可能,如果不存在,则判定为存在安全依赖标记的无条件分支。
3.如权利要求1所述的方法,其特征在于,对于存在安全依赖标记的条件分支,直接判定全部为真安全依赖,或者进一步判断安全依赖的真假。
4.如权利要求3所述的方法,其特征在于,进一步判断安全依赖真假的方法为:对于存在安全依赖标记的条件分支,在该分支前有推测地访问数据,如果该数据作为判断条件,则判定为真安全依赖,否则判定为假安全依赖。
5.如权利要求4所述的方法,其特征在于,所述数据作为判断条件包括该数据直接作为判断条件,或者该该数据通过计算后作为判断条件两种情况。
6.如权利要求4所述的方法,其特征在于,通过缓冲区或存储单元记录真假安全依赖的判定结果。
7.如权利要求4所述的方法,其特征在于,对于存在真安全依赖的分支指令,停止后续指令执行,或者进行固定跳转,或者根据预测表中的跳转方向跳转。
8.如权利要求7所述的方法,其特征在于,对于固定跳转和根据预测表中的跳转方向跳转,当发生错误预测时进行标记,并在表中记录正确的跳转方向;当安全依赖被解除后,依据分支在被推测执行期间是否发生错误预测来决定是否需要恢复现场和跳转至目标地址,如果发生错误预测,则恢复现场,并根据跳转判断决定跳转至目标地址或不跳转而执行后续指令。
9.一种处理器芯片假安全依赖冲突的识别系统,其特征在于,包括存储器和处理器,该存储器存储计算机程序,该计算机程序被配置为由该处理器执行权利要求1-8任一所述方法中各步骤。
10.一种计算机可读存储介质,其特征在于,包含计算机程序,当由服务器的处理器执行所述计算机程序时使得该服务器执行权利要求1-8任一所述方法中的各个步骤。
CN202010973779.0A 2020-06-01 2020-09-16 一种处理器芯片假安全依赖冲突的识别方法及系统 Active CN112256332B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010484679 2020-06-01
CN2020104846791 2020-06-01

Publications (2)

Publication Number Publication Date
CN112256332A true CN112256332A (zh) 2021-01-22
CN112256332B CN112256332B (zh) 2024-06-25

Family

ID=74232559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010973779.0A Active CN112256332B (zh) 2020-06-01 2020-09-16 一种处理器芯片假安全依赖冲突的识别方法及系统

Country Status (1)

Country Link
CN (1) CN112256332B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223201A1 (en) * 2004-03-30 2005-10-06 Marc Tremblay Facilitating rapid progress while speculatively executing code in scout mode
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050223201A1 (en) * 2004-03-30 2005-10-06 Marc Tremblay Facilitating rapid progress while speculatively executing code in scout mode
CN108427576A (zh) * 2018-02-12 2018-08-21 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PEINAN LI等: ""Conditional Speculation: An Effective Approach to Safeguard Out-of-Order Execution Against Spectre Attacks"", 《2019 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》, pages 268 *

Also Published As

Publication number Publication date
CN112256332B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
JP7377211B2 (ja) 投機的サイド・チャネル・ヒント命令
Wang et al. oo7: Low-overhead defense against spectre attacks via binary analysis
KR101740224B1 (ko) 불법 모드 변경처리
KR102075369B1 (ko) 데이터 처리장치와, 안전한 도메인 및 덜 안전한 도메인 사이에서 전환될 때 데이터 및 프로그램 코드를 안전하지 않은 액세스로부터 보호하는 방법
CN111936980A (zh) 用于控制将数据分配到缓存存储中的装置和方法
US11663034B2 (en) Permitting unaborted processing of transaction after exception mask update instruction
JP2019197442A (ja) 演算処理装置及び演算処理装置の制御方法
KR20210021521A (ko) 트랜잭션 메모리를 지원하는 장치에서의 로드 전용 명령 처리
Aimoniotis et al. Reorder buffer contention: A forward speculative interference attack for speculation invariant instructions
CN111241599B (zh) 一种处理器芯片安全依赖的动态识别及维护方法
Atkey et al. Threadsafe: Static analysis for java concurrency
CN110709817B (zh) 用于控制指令集中改变的设备与方法
TW201939272A (zh) 帶鏈結分支指令的分支目標變體
Choudhari et al. SpecDefender: Transient Execution Attack Defender using Performance Counters
CN112256332A (zh) 一种处理器芯片假安全依赖冲突的识别方法及系统
US10871974B1 (en) Target injection safe method for inlining registration calls
KR101014814B1 (ko) 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법
US11347539B2 (en) Checking lock variables for transactions in a system with transactional memory support
CN111241551B (zh) 基于缓存命中状态的处理器芯片假安全依赖冲突的识别方法
Aimoniotis et al. “It’sa Trap!”—How Speculation Invariance Can Be Abused with Forward Speculative Interference
Ahmad Detecting Spectre and Meltdown Attacks Using Hardware Performance Counters and Machine Learning
CN111274573B (zh) 一种基于访存请求序列的处理器芯片假安全依赖冲突的识别方法
Shirai et al. Monitoring Instruction-based Intrusion Detection and Self-healing System
Guanhua Defense against Micro-Architecture Level Transient Execution Based Attacks via Program Analysis
Aimoniotis et al. " It's a Trap!"-How Speculation Invariance Can Be Abused with Forward Speculative Interference

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant