CN113127880A - 一种一级数据缓存中推测执行侧信道漏洞检测方法 - Google Patents
一种一级数据缓存中推测执行侧信道漏洞检测方法 Download PDFInfo
- Publication number
- CN113127880A CN113127880A CN202110317827.5A CN202110317827A CN113127880A CN 113127880 A CN113127880 A CN 113127880A CN 202110317827 A CN202110317827 A CN 202110317827A CN 113127880 A CN113127880 A CN 113127880A
- Authority
- CN
- China
- Prior art keywords
- white
- branch
- box processor
- processor
- instruction
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000008569 process Effects 0.000 claims description 13
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 2
- 241001074639 Eucalyptus albens Species 0.000 claims 2
- 238000013461 design Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012731 temporal analysis Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本发明提出了一种一级数据缓存中推测执行侧信道漏洞检测方法,主要包含以下步骤:步骤1:扩展指令集架构模拟器使其能够支持分支预测并针对条件分支指令自动生成不同的分支预测方向;步骤2:在白盒处理器中拦截分支预测的结果并使用步骤一中生成的分支预测方向来引导白盒处理器的执行;步骤3:通过分析白盒处理器的执行log信息来判断白盒处理器中是否存在一级数据缓存中的推测执行侧信道漏洞。本发明能够有效地检测出处理器在早期设计阶段可能存在的一级数据缓存中推测执行侧信道漏洞。
Description
技术领域
本发明属于计算机技术领域,涉及推测执行技术、乱序执行以及分支预测技术,涉及到处理器微体系结构的设计,尤其涉及一种数据缓存中推测执行侧信道漏洞检测方法。
背景技术
推测执行(Speculative Execution)是一种用于提升处理器性能的优化技术。该技术通过处理器设计中的分支预测器来推测应用程序中分支指令的跳转方向,并由处理器在计算出真正的跳转方向之前提前执行推测方向上的指令。结合乱序执行,现代处理器设计大多数都使用了推测执行技术,然而该技术存在着一级数据缓存中推测执行侧信道漏洞。
一级数据缓存中的推测执行侧信道漏洞是由谷歌在2018年由一个名为幽灵的攻击(Spectre Attack)而揭露出来。该漏洞的本质在于基于乱序执行,处理器能够推测执行一个错误的预测将内存数据加载到一级数据缓存中,并且在废弃该错误的预测后没有将加载的数据从一级数据缓存中清除。该漏洞通过推测执行和乱序执行影响了大多数的现代处理器,包括AMD、ARM和Intel的很多CPU。幽灵攻击主要是通过精心设计了一个应用程序来训练处理器中的分支预测器并诱导分支预测器给出一个错误的预测方向,然后通过对一级数据缓存进行访问并利用时间分析方法来判断访问缓存是否命中,从而猜测出一级数据缓存中泄露的重要数据。幽灵攻击严重依赖于应用程序对处理器中分支预测器的训练以及在整个运行系统上对一级数据缓存的命中与否进行时间分析。这需要攻击者掌握处理器设计的关键技术,例如分支预测协议、乱序执行以及推测执行。
针对一级数据缓存中推测执行侧信道漏洞,目前大多数研究主要研究了如何在处理器设计中解决该漏洞,没有对如何检测一个处理器设计中是否存在该漏洞进行研究。
发明内容
本发明的目的是针对白盒处理器提出一种一级数据缓存中推测执行侧信道漏洞的检测方法,该方法通过扩展指令集架构模拟器来生成条件分支指令的分支预测方向,由生成的分支预测方向来引导白盒处理器执行给定分支预测方向上的指令,在白盒处理器执行了错误的分支预测方向上的指令并将内存数据加载到一级数据缓存中后,结合一级数据缓存在推测执行中未命中而在推测执行之外直接命中的模式来匹配分析白盒处理器的执行log信息,从而检测出白盒处理器中一级数据缓存中的推测执行侧信道漏洞。
实现本发明目的的具体技术方案是:
一种一级数据缓存中推测执行侧信道漏洞检测方法,包括以下步骤:
步骤1:扩展指令集架构模拟器使其能够支持分支预测并针对条件分支指令自动生成不同的分支预测方向;
步骤2:在白盒处理器中拦截分支预测的结果并使用步骤1中生成的分支预测方向来引导白盒处理器的执行;
步骤3:通过分析白盒处理器的执行log信息来判断白盒处理器中是否存在一级数据缓存中的推测执行侧信道漏洞。
本发明步骤1中扩展指令集架构模拟器是用于使指令集架构模拟器在执行应用程序时能够支持分支预测并针对执行过程中遇到的条件分支指令自动生成不同的分支预测方向。指令集架构模拟器每次执行到条件分支指令时就分叉出一个进程来预测执行分支的另一方向上的指令,同时当前进程和分叉出来的进程分别保存好当前条件分支指令的预测方向。
本发明步骤2中在白盒处理器中拦截分支预测的结果是用于阻断白盒处理器中分支预测器的预测结果。在白盒处理器中分支预测器的输出接口与白盒处理器的核控制接口的连接处阻断白盒处理器中分支预测器的预测结果。当白盒处理器中分支预测器处理的条件分支指令的地址与给定的条件分支指令的地址相同,则将给定的条件分支指令的分支预测方向赋予白盒处理器的核控制接口。
使用步骤1中生成的分支预测方向来引导白盒处理器的执行是使得白盒处理器在执行了错误的分支预测方向上的指令以暴露出一级数据缓存中的推测执行侧信道漏洞。该引导过程是:
首先白盒处理器取到条件分支指令时,拦截分支预测器的预测结果;然后白盒处理器将条件分支指令的分支预测方向替换为步骤1中生成的分支预测方向,且白盒处理器取到的条件分支指令的地址与步骤1中生成的分支预测方向所对应的指令地址相同,否则白盒处理器使用白盒处理器中分支预测器的预测结果。
在使用步骤1中生成的分支预测方向来引导白盒处理器的执行之前,通过在白盒处理器中附加ROM存储空间将步骤1中生成的分支预测方向导入白盒处理器。
本发明的有益效果:本发明能够有效地检测出处理器在早期设计阶段可能存在的一级数据缓存中推测执行侧信道漏洞。本发明通过生成应用程序中条件分支指令的预测方向,并引导白盒处理器分别执行不同预测方向上的指令,特别是执行错误预测方向上的指令以暴露一级数据缓存中推测执行侧信道漏洞,因此,本发明在白盒处理器执行了错误的分支预测方向上的指令并将内存数据加载到一级数据缓存中后,结合一级数据缓存在推测执行中未命中而在推测执行之外直接命中的模式来匹配分析白盒处理器的执行log信息,从而检测出白盒处理器中一级数据缓存中的推测执行侧信道漏洞。由此,处理器设计的安全性能够得到进一步提升。
在本发明中,扩展指令集架构模拟器使其能够支持分支预测并针对条件分支指令自动生成不同的分支预测方向,这是不同于现有的指令集架构模拟器。现有的指令集模拟器执行每一条指令都是瞬时完成并得到下一条待执行指令的确切地址,无法获得白盒处理器对条件分支指令的预测方向。但本发明能够获得白盒处理器对条件分支指令的所有可能预测方向。
在白盒处理器中拦截分支预测的结果并使用本发明生成的分支预测方向来引导白盒处理器的执行,这不同于现有分支预测技术。现有的分支预测技术是将特定分支预测策略设计在处理器中,条件分支指令的预测方向由处理器自身决定,无法由外部的预测方向来控制处理器的执行。但本发明能够通过外部生成的分支预测方向来引导处理器的执行。
附图说明
图1为本发明的总体流程图;
图2为指令集架构模拟器的扩展逻辑样例图;
图3为分支预测导入白盒处理器样例图;
图4为拦截并引导白盒处理器的分支预测样例图;
图5为本发明的总体框架图。
具体实施方式
结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明提供了一种一级数据缓存中推测执行侧信道漏洞检测方法,包括以下步骤:
步骤1:扩展指令集架构模拟器使其能够支持分支预测并针对条件分支指令自动生成不同的分支预测方向;
步骤2:在白盒处理器中拦截分支预测的结果并使用步骤1中生成的分支预测方向来引导白盒处理器的执行;
步骤3:通过分析白盒处理器的执行log信息来判断白盒处理器中是否存在一级数据缓存中的推测执行侧信道漏洞。
为了探索应用程序中条件分支指令不同的预测方向引起的一级数据缓存变化,因此应用程序中条件分支指令不同的预测方向序列需要被保存下来用于指导白盒处理器对同一个应用程序的执行。
本发明通过扩展指令集架构模拟器来保存应用程序在执行时条件分支指令可能的预测方向,如图2所示。定义二元组BD用于保存当前条件分支指令的预测方向及其自身的地址,其中预测方向用数字0表示不跳转(not-taken),用数字1表示跳转(taken);图中的变量BDs用于保存由一串BD构成的序列。指令集模拟器在执行时首先获得指令(用inst表示)和指令自身的地址(保存在pc中),然后计算出下一条指令地址(用npc表示)。若标记inSpec和isBr都为真,即当前处于推测执行环境且当前指令是一个条件分支指令,则指令集模拟器进行推测执行;否则指令集模拟器按图中流程往下执行当前指令。若当前指令是一个条件分支指令但当前不在推测执行环境下,即isBr为真且inSpec为假,则指令级模拟器需要保存当前处理器状态和npc并且置标记inSpec为真。其后若npc是紧邻当前指令的地址,即npc等于pc+4,则当前条件分支指令的地址和使用数字1表示的跳转标记需要被保存在变量BDs中,同时npc指向该跳转地址以便进入推测执行的探索;否则指令集模拟器相对应的需要保存当前条件分支指令的地址和使用数字0表示的不跳转标记在BDs中,并将npc指向紧邻当前指令的下一个地址。
图2中的虚线部分是表示推测执行部分,指令集模拟器通过fork()函数将当前进程分叉为两个进程,分别用于保存跳转(taken)和不跳转(not-taken)两种可能的预测方向。当推测执行的深度达到了设定的上限并且存在已保存的处理器状态时,条件分支指令的预测方向结果序列将从BDs中写入到文件,即File(BDs);同时子进程都将推出,父进程重置相关的变量并恢复处理器状态和npc回到正常执行环境下。
针对白盒处理器中分支预测的拦截和引导,本发明首先是在白盒处理器中附加ROM存储器来加载步骤1生成的分支预测方向(如图3);其次是拦截白盒处理器原设计中分支预测的结果并使用给定的分支预测方向来引导白盒处理器的执行(如图4)。
图3给出了在RISC-V BOOM处理器中附加一个ROM存储器模块的样例。第1至5行给出了用于保存分支预测方向的结构体;第12至17行给出了该模块的IO接口定义;第19至26行展示了将文件中的分支预测方向导入白盒处理器里名为mm的vector结构中。如此,白盒处理器即可通过IO接口来访问分支预测方向。
图4给出了在RISC-V BOOM处理器的BranchPredictionStage模块中拦截并引导白盒处理器的分支预测样例。该样例的取指令宽度为2,因此该白盒处理器的分支预测器用了两个位(bit)来分别代表取的两条指令的预测结果。图4中信号变量io.f3_bpd_resp.bits.takens用于接收两个位的预测结果。当白盒处理器取到指令的地址和结构体变量win中相应的地址相同时,信号变量io.f3_bpd_resp.bits.takens会被赋予给定的分支预测方向,即使用来自于步骤一中生成的分支预测方向作为条件分支指令的预测。
最后针对白盒处理器执行给定应用程序后输出的执行log信息,根据一级数据缓存在推测执行中未命中而在推测执行之外直接命中的模式来匹配分析白盒处理器的执行log信息,从而检测出白盒处理器中一级数据缓存中的推测执行侧信道漏洞。
以上具体实施仅用于说明本发明的技术方案而非对其进行限制,本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本领域技术人员能够想到的变化和优点都被包括在本发明中,本发明的保护范围应以权利要求书所述为准。
Claims (5)
1.一种一级数据缓存中推测执行侧信道漏洞检测方法,其特征在于,包括以下步骤:
步骤1:扩展指令集架构模拟器使其能够支持分支预测并针对条件分支指令自动生成不同的分支预测方向;
步骤2:在白盒处理器中拦截分支预测的结果并使用步骤1中生成的分支预测方向来引导白盒处理器的执行;
步骤3:通过分析白盒处理器的执行log信息来判断白盒处理器中是否存在一级数据缓存中的推测执行侧信道漏洞。
2.如权利要求1所述的推测执行侧信道漏洞检测方法,其特征在于,所述步骤1中扩展指令集架构模拟器是用于使指令集架构模拟器在执行应用程序时能够支持分支预测并针对执行过程中遇到的条件分支指令自动生成不同的分支预测方向;指令集架构模拟器每次执行到条件分支指令时就分叉出一个进程来预测执行分支的另一方向上的指令,同时当前进程和分叉出来的进程分别保存好当前条件分支指令的预测方向。
3.如权利要求1所述的推测执行侧信道漏洞检测方法,其特征在于,所述步骤2中在白盒处理器中拦截分支预测的结果是用于阻断白盒处理器中分支预测器的预测结果;在白盒处理器中分支预测器的输出接口与白盒处理器的核控制接口的连接处阻断白盒处理器中分支预测器的预测结果;当白盒处理器中分支预测器处理的条件分支指令的地址与给定的条件分支指令的地址相同,则将给定的条件分支指令的分支预测方向赋予白盒处理器的核控制接口。
4.如权利要求1所述的推测执行侧信道漏洞检测方法,其特征在于,所述使用步骤1中生成的分支预测方向来引导白盒处理器的执行是使得白盒处理器在执行了错误的分支预测方向上的指令以暴露出一级数据缓存中的推测执行侧信道漏洞;所述引导过程是:
首先白盒处理器取到条件分支指令时,拦截分支预测器的预测结果;然后白盒处理器将条件分支指令的分支预测方向替换为步骤1中生成的分支预测方向,且白盒处理器取到的条件分支指令的地址与步骤1中生成的分支预测方向所对应的指令地址相同,否则白盒处理器使用白盒处理器中分支预测器的预测结果。
5.如权利要求1所述的推测执行侧信道漏洞检测方法,其特征在于,在使用步骤1中生成的分支预测方向来引导白盒处理器的执行之前,通过在白盒处理器中附加ROM存储空间将步骤1中生成的分支预测方向导入白盒处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317827.5A CN113127880A (zh) | 2021-03-25 | 2021-03-25 | 一种一级数据缓存中推测执行侧信道漏洞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317827.5A CN113127880A (zh) | 2021-03-25 | 2021-03-25 | 一种一级数据缓存中推测执行侧信道漏洞检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127880A true CN113127880A (zh) | 2021-07-16 |
Family
ID=76773855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110317827.5A Pending CN113127880A (zh) | 2021-03-25 | 2021-03-25 | 一种一级数据缓存中推测执行侧信道漏洞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127880A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI789183B (zh) * | 2021-09-15 | 2023-01-01 | 瑞昱半導體股份有限公司 | 用於處理器電路之檢測器及檢測方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
WO2019140274A1 (en) * | 2018-01-12 | 2019-07-18 | Virsec Systems, Inc. | Defending against speculative execution exploits |
CN110659071A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 针对推测性执行处理架构的基于边信道的攻击的有效缓解 |
CN110750301A (zh) * | 2018-08-29 | 2020-02-04 | 清华大学无锡应用技术研究院 | 检测处理器安全性的方法、装置、系统及存储介质 |
CN110968349A (zh) * | 2019-12-06 | 2020-04-07 | 海光信息技术有限公司 | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 |
CN111865909A (zh) * | 2020-06-08 | 2020-10-30 | 西安电子科技大学 | Sgx侧信道攻击防御方法、系统、介质、程序及应用 |
-
2021
- 2021-03-25 CN CN202110317827.5A patent/CN113127880A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019140274A1 (en) * | 2018-01-12 | 2019-07-18 | Virsec Systems, Inc. | Defending against speculative execution exploits |
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN110659071A (zh) * | 2018-06-29 | 2020-01-07 | 英特尔公司 | 针对推测性执行处理架构的基于边信道的攻击的有效缓解 |
CN110750301A (zh) * | 2018-08-29 | 2020-02-04 | 清华大学无锡应用技术研究院 | 检测处理器安全性的方法、装置、系统及存储介质 |
CN110968349A (zh) * | 2019-12-06 | 2020-04-07 | 海光信息技术有限公司 | 一种抵御投机执行侧信道攻击的处理器缓存技术方案 |
CN111865909A (zh) * | 2020-06-08 | 2020-10-30 | 西安电子科技大学 | Sgx侧信道攻击防御方法、系统、介质、程序及应用 |
Non-Patent Citations (1)
Title |
---|
HAIFENG GU等: ""SpectreCheck:An Approach to Detecting Speculative Execution Side Channels in Data Cache"", 《IEEE》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI789183B (zh) * | 2021-09-15 | 2023-01-01 | 瑞昱半導體股份有限公司 | 用於處理器電路之檢測器及檢測方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Canella et al. | A systematic evaluation of transient execution attacks and defenses | |
Guarnieri et al. | Hardware-software contracts for secure speculation | |
CN111433740B (zh) | 推测屏障指令 | |
Xiao et al. | SPEECHMINER: A framework for investigating and measuring speculative execution vulnerabilities | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
Zhao et al. | Speculation invariance (invarspec): Faster safe execution through program analysis | |
JP7377211B2 (ja) | 投機的サイド・チャネル・ヒント命令 | |
Wu et al. | Abstract interpretation under speculative execution | |
Ahmad | Real time detection of spectre and meltdown attacks using machine learning | |
KR20090094335A (ko) | 서브루틴 호를 인지하기 위한 방법들 및 장치 | |
Aimoniotis et al. | Reorder buffer contention: A forward speculative interference attack for speculation invariant instructions | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
US7640422B2 (en) | System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache | |
Kvalsvik et al. | Doppelganger loads: A safe, complexity-effective optimization for secure speculation schemes | |
CN113127880A (zh) | 一种一级数据缓存中推测执行侧信道漏洞检测方法 | |
Nemati et al. | Speculative leakage in ARM cortex-a53 | |
CN112596792B (zh) | 分支预测方法、装置、介质及设备 | |
KR20120064446A (ko) | 컴퓨팅 시스템 상의 바이트코드의 분기 처리 장치 및 방법 | |
Milburn et al. | You cannot always win the race: Analyzing mitigations for branch target prediction attacks | |
Rokicki | GhostBusters: mitigating spectre attacks on a DBT-based processor | |
US10871974B1 (en) | Target injection safe method for inlining registration calls | |
KR20180064825A (ko) | 명시적 및 암시적 정보 흐름 추적 방법 및 그 장치 | |
Dong et al. | BTIDEC: A Novel Detection Scheme for CPU Security of Consumer Electronics | |
Aimoniotis et al. | " It's a Trap!"-How Speculation Invariance Can Be Abused with Forward Speculative Interference | |
Gu et al. | SpectreCheck: An Approach to Detecting Speculative Execution Side Channels in Data Cache |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210716 |
|
WD01 | Invention patent application deemed withdrawn after publication |