CN114154163B - 漏洞检测方法和装置 - Google Patents
漏洞检测方法和装置 Download PDFInfo
- Publication number
- CN114154163B CN114154163B CN202111217952.5A CN202111217952A CN114154163B CN 114154163 B CN114154163 B CN 114154163B CN 202111217952 A CN202111217952 A CN 202111217952A CN 114154163 B CN114154163 B CN 114154163B
- Authority
- CN
- China
- Prior art keywords
- virtual memory
- memory
- virtual
- terminal device
- content
- 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.)
- Active
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供一种漏洞检测方法和装置,终端设备可以调用目标TA得到第一虚拟内存中的内容,当终端设备可以将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备可以得到第二虚拟内存中的内容,这样,当终端设备判断第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,由于安全侧的内存地址流向了非安全侧内存中,因此,终端设备可以判断目标TA存在信息泄露漏洞。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种漏洞检测方法和装置。
背景技术
随着终端技术的发展,终端设备在运行过程中会产生不同的数据,终端设备可以对不同的数据进行处理,例如,终端设备可以通过处理器处理数据,其中,处理器处理数据时的运行环境包括富执行环境(rich execution environment,REE)和可信执行环境(rusted execution environment,TEE),客户端应用程序(client application,CA)运行在REE中,可信应用程序(trusted application,TA)运行在TEE中,因此,终端设备获取数据后,终端设备可以在REE中处理数据,或者,终端设备可以通过CA调用TA,使得TA在TEE中处理数据。
可能的情况中,当终端设备获取的数据为敏感数据时,终端设备可以通过CA调用TA,使得TA在TEE中对敏感数据进行处理,TA将处理结果写入到REE侧,这样,终端设备在REE侧调用结果后,可以执行相应的操作。
但是,由于终端设备无法发现TA的漏洞,使得终端设备调用TA处理敏感数据时,可能会泄露TEE侧存储的敏感数据。
发明内容
本申请实施例提供一种漏洞检测方法和装置,终端设备可以调用目标TA得到第一虚拟内存中的内容,当终端设备可以将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备可以得到第二虚拟内存中的内容,这样,当终端设备判断第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,由于安全侧的内存地址流向了非安全侧内存中,因此,终端设备可以判断目标TA存在信息泄露漏洞。
第一方面,本申请实施例提供一种漏洞检测方法,该方法包括:终端设备调用目标可信应用程序TA得到第一虚拟内存中的内容;其中,第一虚拟内存为可信执行环境TEE中的内存,TEE包括目标TA;当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备得到第二虚拟内存中的内容;其中,第二虚拟内存为富执行环境REE中的内存;当终端设备确定第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,终端设备确定目标TA存在漏洞。这样,终端设备通过判断虚拟地址的方式,确定目标TA存在漏洞。
在一种可能的实现方式中,当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备得到第二虚拟内存中的内容之前,还包括:终端设备设置第二虚拟内存的访问权限为不可访问;其中,不可访问用于指示终端设备无法向第二虚拟内存写入内容;当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备得到第二虚拟内存中的内容,包括:终端设备触发转译错误;其中,转译错误用于指示终端设备无法向第二虚拟内存写入第一虚拟内存中的内容;终端设备记录向第二虚拟内存写入的内容,终端设备得到第二虚拟内存中的内容。这样,终端设备可以通过设置第二虚拟内存的访问权限为不可访问的方式,使得终端设备可以监控第二虚拟内存的访问情况,这样,当终端设备向第二虚拟内容写入内容时,终端设备触发转译错误,进而,终端设备可以记录向第二虚拟内存写入的内容。
在一种可能的实现方式中,当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备得到第二虚拟内存中的内容之后,还包括:终端设备将第二虚拟内存的访问权限由不可访问设置为可访问;终端设备将第一虚拟内存中的内容写入到第二虚拟内存。这样,终端设备通过第二虚拟内存中的内容,可以判断目标TA是否存在漏洞。
在一种可能的实现方式中,终端设备将第一虚拟内存中的内容写入到第二虚拟内存,包括:终端设备获取第一虚拟内存对应的虚拟地址和第二虚拟内存对应的虚拟地址;终端设备将第一虚拟内存对应的虚拟地址转成第一虚拟内存对应的物理地址;终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址;终端设备将第一虚拟内存对应的物理地址中的内容写入到第二虚拟内存对应的物理地址。这样,终端设备可以实现将第一虚拟内存中的内容写入到第二虚拟内存。
在一种可能的实现方式中,终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址,包括:当终端设备在第一对应关系中查询到与第二虚拟内存对应的虚拟地址匹配的地址时,终端设备从第一对应关系中得到第一页表项;其中,第一对应关系包括虚拟内存对应的虚拟地址与页表项的关系;终端设备从第一页表项得到第二虚拟内存对应的物理地址。这样,终端设备通过第一页表项可以得到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址,包括:终端设备将第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA;当终端设备在第二对应关系中查询到与第一IPA匹配的地址时,终端设备从第二对应关系中得到第二页表项;其中,第二对应关系包括IPA和页表项的对应关系;终端设备从第二页表项得到第二虚拟内存对应的物理地址。这样,终端设备通过第二页表项,可以将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址。
在一种可能的实现方式中,终端设备将第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA,包括:终端设备确定第二虚拟内存对应的虚拟地址指示的第一非安全NS内存标志位;当终端设备在第三对应关系中查询到与第一NS内存标志位相同的标志位时,终端设备从第三对应关系中得到第一IPA;其中,第三对应关系包括NS内存标志位和IPA的对应关系,第一非安全NS内存标志位用于指示第二虚拟内存对应的物理地址指示的内存的属性。这样,终端设备通过第三对应关系,可以将第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA。
在一种可能的实现方式中,终端设备调用目标可信应用程序TA得到第一虚拟内存中的内容,包括:终端设备获取第一数据;其中,第一数据用于测试目标TA的安全性;终端设备将第一数据写入目标客户端应用程序CA进程;其中,目标客户端应用程序CA进程为REE中的进程;终端设备调用目标TA在第一虚拟内存处理目标CA进程中的第一数据;终端设备调用目标TA得到第一虚拟内存中的内容;其中,第一虚拟内存中的内容还包括第一数据的处理结果。这样,终端设备通过非安全侧数据注入的方法,从而能够简单且高效地对安全侧的TA进行安全测试。
第二方面,本申请实施例提供一种漏洞检测装置,该漏洞检测装置可以是终端设备,也可以是终端设备内的部件、芯片或者芯片系统。该漏洞检测可以包括处理单元。当该漏洞检测装置是终端设备时,该处理单元可以是处理器。该漏洞检测装置还可以包括存储单元,该存储单元可以是存储器。该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的方法。当该漏洞检测装置是终端设备内的部件、芯片或者芯片系统时,该处理单元可以是处理器,该处理单元执行存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的方法。该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该终端设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
示例性的,处理单元,用于调用目标可信应用程序TA得到第一虚拟内存中的内容;其中,第一虚拟内存为可信执行环境TEE中的内存,TEE包括目标TA;处理单元,还用于当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,得到第二虚拟内存中的内容;其中,第二虚拟内存为富执行环境REE中的内存;处理单元,还用于当终端设备确定第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,确定目标TA存在漏洞。
在一种可能的实现方式中,处理单元,还用于:设置第二虚拟内存的访问权限为不可访问;其中,不可访问用于指示终端设备无法向第二虚拟内存写入内容;处理单元,具体用于:触发转译错误;其中,转译错误用于指示终端设备无法向第二虚拟内存写入第一虚拟内存中的内容;记录向第二虚拟内存写入的内容;得到第二虚拟内存中的内容。
在一种可能的实现方式中,处理单元,具体还用于:将第二虚拟内存的访问权限由不可访问设置为可访问;将第一虚拟内存中的内容写入到第二虚拟内存。
在一种可能的实现方式中,处理单元,具体用于:获取第一虚拟内存对应的虚拟地址和第二虚拟内存对应的虚拟地址;将第一虚拟内存对应的虚拟地址转成第一虚拟内存对应的物理地址;将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址;将第一虚拟内存对应的物理地址中的内容写入到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元,具体用于:当终端设备在第一对应关系中查询到与第二虚拟内存对应的虚拟地址匹配的地址时,从第一对应关系中得到第一页表项;其中,第一对应关系包括虚拟内存对应的虚拟地址与页表项的关系;从第一页表项得到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元,具体用于:将第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA;当终端设备在第二对应关系中查询到与第一IPA匹配的地址时,从第二对应关系中得到第二页表项;其中,第二对应关系包括IPA和页表项的对应关系;从第二页表项得到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元,具体用于:确定第二虚拟内存对应的虚拟地址指示的第一非安全NS内存标志位;当终端设备在第三对应关系中查询到与第一NS内存标志位相同的标志位时,从第三对应关系中得到第一IPA;其中,第三对应关系包括NS内存标志位和IPA的对应关系,第一非安全NS内存标志位用于指示第二虚拟内存对应的物理地址指示的内存的属性。
在一种可能的实现方式中,处理单元,具体用于:获取第一数据;其中,第一数据用于测试目标TA的安全性;将第一数据写入目标客户端应用程序CA进程;其中,目标客户端应用程序CA进程为REE中的进程;调用目标TA在第一虚拟内存处理目标CA进程中的第一数据;调用目标TA得到第一虚拟内存中的内容;其中,第一虚拟内存中的内容还包括第一数据的处理结果。
第三方面,本申请实施例提供一种漏洞检测装置,包括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第六方面,本申请实施例提供一种漏洞检测系统,该系统包括:第二方面及第二方面的各种可能的实现方式中描述的装置。
第七方面,本申请提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的方法;其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片系统还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第七方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种ARM中央处理器(central processing unit,CPU)的架构示意图;
图2为本申请实施例提供的一种终端设备的硬件结构示意图;
图3为本申请实施例提供的一种处理器的架构示意图;
图4为本申请实施例提供的一种漏洞检测方法的流程示意图;
图5为本申请实施例提供的一种第一页表项的示意图;
图6为本申请实施例提供的一种地址转译的示意图;
图7为本申请实施例提供的一种漏洞检测装置的结构示意图;
图8为本申请实施例提供的一种漏洞检测装置的硬件结构示意图;
图9为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
随着终端技术的发展,终端设备在运行过程中会产生不同的数据,终端设备可以对不同的数据进行处理,例如,终端设备可以通过处理器处理数据,其中,处理器处理数据时的运行环境环境包括REE和TEE,其中,CA运行在REE中,TA运行在TEE中,因此,终端设备获取数据后,终端设备可以在REE中处理数据,或者,终端设备可以通过CA调用TA,使得TA在TEE中处理数据。
示例性的,图1为本申请实施例提供的一种ARM CPU的架构示意图,如图1所示,ARMCPU的运行环境包括REE和TEE,ARM CPU在REE中和TEE中分别划分了4个特权级(exceptionlevel,EL),分别为EL0、EL1、EL2以及EL3,其中,EL0对应ARM CPU的用户模式,EL1对应ARMCPU的内核模式,EL2对应ARM CPU的虚拟机监控程序(hypervisor)模式,EL3对应ARM CPU的监控(monitor)模式。
其中,REE也可称为ARM CPU的正常世界(normal world),TEE也可称为ARM CPU的安全世界(secure world),当CA运行在ARM CPU的正常世界的用户模式下时,CA用于接收终端设备中的应用的输入数据,并将接收到的数据传递给运行在ARM CPU的安全世界的用户模式下的TA,使得TA进行关键的操作,例如,TA可以进行指纹验证、个人识别号码(personalidentification number,PIN)验证、私钥或证书等安全存储等。
在图1中,TA从CA获取数据后,ARM CPU可以通过TA对获取的数据进行处理。例如,在ARM CPU的EL0中,CA发起调用TA流程,CA可以将调用TA的请求消息发送到应用层TEE守护进程(teed),应用层TEE守护进程通过系统调用(supervisor call,SVC)指令触发CPU从EL0进入到EL1,这样,应用层TEE守护进程可以转发请求消息给EL1的内核态驱动程序(teedriver),内核态驱动程序用于处理用户态程序的请求消息,由于请求消息中包括TA需处理的数据,因此,ARM CPU通过内核态驱动程序可以从请求消息获取数据,内核态驱动程序通过安全监视调用(secure monitor call,SMC)指令触发CPU从EL1进入到EL3时,CPU触发了EL3的ARM可信固件(arm trusted firmware,ATF),由于ARM可信固件包括ATF SMC处理程序(handler),CPU可以通过ATF SMC处理程序可以将数据返回给TEE内核(kernel),使得CPU的特权级由安全世界的EL3切换到EL1,例如,CPU可以通过ERET指令由安全世界的EL3切换到EL1,进而,CPU调用ERET指令,使得CPU通过TEE内核将数据返回TA,从而TA可以对数据进行处理;其中,ARM可信固件可以为BL31。
其中,当TA对数据进行处理后,TA可以按照图1所示的流程将处理后的结果返回给CA,图1中未示出将处理后的结果返回给CA的流程。
其中,SVC指令用于CPU由用户模式进入内核模式,例如,结合图1,在REE侧,SVC指令用于CPU从EL0进入到EL1;SMC指令用于CPU由内核模式进入到监控模式,例如,结合图1,在REE侧,SMC指令用于CPU从EL1进入到EL3,ERET指令用于CPU由监控模式进入到内核模式,例如,结合图1,在TEE侧,ERET指令用于CPU从EL3进入到EL1,ERET指令还用于CPU由内核模式进入到用户模式,例如,结合图1,在TEE侧,ERET指令用于CPU从EL1进入到EL0。
可以理解的是,在REE侧的用户模式下,处理器可以包括多个CA,处理器中的多个CA处理数据是并行的执行过程,同样地,在TEE侧的用户模式下,处理器可以包括多个TA,处理器中的多个TA处理数据也是并行的执行过程。
可能的情况中,当终端设备获取的数据为敏感数据时,终端设备可以通过CA调用TA,使得TA在TEE中对敏感数据进行处理,并将处理结果写入到REE侧,这样,终端设备在REE侧调用处理结果后,可以执行相应的操作;其中,敏感数据可以包括指纹数据、人脸数据、屏幕密码数据或个人识别号码(personal identification number,PIN)数据等。
例如,用户通过屏幕密码解锁终端设备时,终端设备可以通过CA获取用户输入的屏幕密码,终端设备可以通过CA将用户输入的屏幕密码等信息进行处理,并将处理后的密码信息发送给TA进行验证,终端设备通过TA接收到CA发送的密码信息,并通过TA与TEE中根据设备唯一密钥派生的密钥计算出的哈希值进行对比,若两者相同,则终端设备通过TA将验证信息返回至REE侧,这样,终端设备通过CA从REE侧获取验证结果后,终端设备可以根据验证结果进行解锁,从而使得用户通过屏幕密码实现对终端设备的解锁。
可以理解的是,当终端设备通过TEE中的TA处理敏感数据时,由于TEE与REE的物理资源隔离,因此,即使攻击者获取了终端设备的ROOT权限,攻击者也无法获取TEE侧与敏感数据相关的数据。
但是,由于终端设备无法发现TA的漏洞,使得终端设备调用TA处理敏感数据时,可能会泄露TEE侧存储的敏感数据,也可能会泄露TEE侧的地址信息,TEE侧的地址信息用于指示TA的内存地址空间布局,这样,无法保证终端设备在TEE中处理敏感数据时的安全性,例如,结合上述用户通过屏幕密码解锁终端设备时,若TA存在程序漏洞,在终端设备通过TA验证密码的过程中,攻击者可以对TA植入恶意代码,使得攻击者可以获取TEE侧的用于计算哈希值的密钥,进而可以解锁终端设备。
需要说明的是,结合图1,ARM CPU在TEE侧处理数据时的操作系统可以称为TEE操作系统(operating system,OS),由于TA不具有Linux等常规操作系统的运行环境,TA的运行依赖于TEE,因此,模糊(fuzz)测试手段不能直接测试TA的程序安全,或者理解为,目前没有针对TA的有效测试手段。
有鉴于此,本申请实施例提供一种漏洞检测方法和装置,终端设备可以调用目标TA得到第一虚拟内存中的内容,当终端设备可以将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备可以得到第二虚拟内存中的内容,这样,当终端设备判断第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,由于安全侧的内存地址流向了非安全侧内存中,因此,终端设备可以判断目标TA存在信息泄露漏洞。
本申请实施例的方法可以应用于集成ARM处理器的设备,例如,该设备可以是终端设备,也可以是其他集成ARM处理器的设备,本申请实施例不作限定;为了便于描述,后续以终端设备为例进行示例性说明。
需要说明的是,本申请实施例提供的方法是基于硬件虚拟化技术的方法,虚拟化技术是在ARMv7-A引入的,在ARMv7-A中,虚拟化技术可以称为hypervisor模式(mode),Hypervisor模式相当于AArch32架构的EL2,Hypervisor模式在非安全(non-secure)状态下可用;其中,在非安全状态下,终端设备中的处理器的运行环境为REE。
在特权级为EL2,且终端设备为手机的情况下,在手机产品中通常被用于运行内核监控保护模块,例如,内核监控保护模块可以为实时内核保护(real-time kernelprotection,RKP)模块。
需要说明的是,在Armv8.4时,引入了安全(secure)状态下的EL2,用于支持安全状态下的hypervisor,其中,当终端设备中的处理器支持安全(secure)状态下的EL2时,需要在处理器的EL3设置SCR_EL3.EEL2位,使得设置后的SCR_EL3.EEL2位指示处理器可以支持安全状态下的EL2。
示例性的,图2为本申请实施例提供的一种终端设备100的硬件结构示意图,如图2所示,终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块180,按键190,摄像头193,显示屏194,用户接口130以及充电管理模块140等;其中,传感器模块180可以包括:压力传感器180A,加速度传感器180E,指纹传感器180H和触摸传感器180K等。
需要说明的是,本申请实施例示意的结构并不构成对终端设备100的具体限定;可以理解的是,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置;其中,图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以为ARM处理器,其中,处理器110包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等;其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器可以为高速缓冲存储器,该存储器可以保存处理器110刚用过或循环使用的指令或数据。
在一些实施例中,处理器110可以包括一个或多个接口,接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integratedcircuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
本申请实施例中,终端设备可以通过处理器处理第一数据,使得终端设备可以通过第一数据测试TA的安全性。
用户接口130用于终端设备100与外围设备之间传输数据,也可以用于连接耳机,通过耳机播放音频;用户接口130还可以用于连接其他设备,例如,增强现实(augmentedreality,AR)设备等。
电源管理模块141接收充电管理模块140的输入,电源管理模块141为处理器110,内部存储器121,显示屏194,摄像头193和无线通信模块160等供电。
终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块150以及无线通信模块160等实现;其中,天线1和天线2用于发射和接收电磁波信号。终端设备100中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如,可以将天线1复用为无线局域网的分集天线。
移动通信模块150可以提供应用在终端设备100上的包括2G/3G/4G/5G等无线通信的解决方案;无线通信模块160可以提供应用在终端设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,终端设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端设备100可以通过无线通信技术与网络以及其他设备通信;其中,无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。
终端设备100通过显示屏194实现显示功能,显示屏194用于显示图像,视频等,显示屏194包括显示面板。在一些实施例中,终端设备100可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备100可以通过摄像头193等实现拍摄功能,摄像头193用于捕获静态图像或视频。
外部存储器接口120可以用于连接外部存储卡,实现扩展终端设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
加速度传感器180E可检测终端设备100在各个方向上(一般为三轴)加速度的大小;指纹传感器180H用于采集指纹。终端设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。
结合图2,示例性的,图3为本申请实施例提供的一种处理器的架构示意图,如图3所示,与图1不同的是,在图3中,当ARM CPU的运行环境为REE且ARM CPU的工作模式为用户模式时,该用户模式下新增日志分析模块和数据变异注入模块,该模式下还包括目标CA,当ARM CPU的运行环境为TEE且ARM CPU的工作模式为hypervisor模式时,该hypervisor模式下新增内存访问拦截模块。
可能的实现中,数据变异注入模块用于终端设备获取第一数据,并将第一数据写入目标CA进程中;内存访问拦截模块用于终端设备记录第一虚拟内存的地址以及向非安全内存写入的内容,例如,终端设备可以记录向第二虚拟内存写入的内容;日志分析模块用于分析内存访问拦截模块记录的内容,例如,日志分析模块可以分析第二虚拟内存中的内容和第一虚拟内存对应的虚拟地址之间的关系,具体的内容将在后续进行描述,在此不再赘述。
其中,REE侧和TEE侧的EL之间的交互过程,可以参考图1所示的内容适应描述,在此不再赘述。
结合图3所示的内容,示例性的,图4为本申请实施例提供的一种漏洞检测方法的流程示意图,如图4所示,可以包括以下步骤:
S401:终端设备获取第一数据。
本申请实施例中,第一数据用于测试目标TA的安全性,其中,第一数据可以是正常数据,第一数据也可以是异常数据,第一数据的具体内容,本申请实施例不作限定。
当终端设备是异常数据时,结合图3,终端设备可以通过数据变异注入模块生成第一数据,例如,终端设备通过数据变异注入模块对测试数据进行数据变异后,终端设备可以得到第一数据;其中,数据变异可以理解为终端设备修改测试数据中的全部或部分参数。
S402:终端设备将第一数据写入目标CA进程。
本申请实施例中,结合图3,终端设备可以通过数据变异注入模块将第一数据写入目标CA进程,其中,目标CA进程为REE中的进程,目标CA进程可以是预先设置的用于测试目标TA的CA进程,也可以是白名单中的其中一个CA进程,其中,白名单包括支持调用TA的CA进程。
可以理解的是,目标CA进程的具体内容,也可以根据实际应用场景设定,本申请实施例不作限定。
结合S401和S402,可以理解的是,终端设备可以利用数据变异注入模块,并通过ptrace机制将测试数据写入目标CA进程,并对TEEC_InvokeCommand函数进行拦截,从而可以将测试数据的operation参数进行变异,从而得到第一数据;其中,operation参数为TEEC_Operation指针类型的参数。
可以理解的是,终端设备将第一数据写入目标CA进程的具体实现方式,也可以根据实际应用场景设定,本申请实施例不作限定。
S403:终端设备调用目标TA在第一虚拟内存处理目标CA进程中的第一数据。
本申请实施例中,第一虚拟内存为目标TA处理第一数据时占用的内存,第一虚拟内存为TEE侧的内存,从而使得目标TA可以在第一虚拟内存中处理第一数据。
需要说明的是,第一虚拟内存可以理解为安全内存地址空间,该安全内存地址空间包括处理第一数据时所调用的代码的地址以及所调用的变量的地址,代码的地址以及变量的地址的具体内容,可以根据实际应用场景设定,本申请实施例不作限定。
S404:当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备得到第二虚拟内存中的内容。
本申请实施例中,第二虚拟内存用于存储第一虚拟内存中的内容,第二虚拟内存为终端设备监控的REE侧的内存,第二虚拟内存为非安全侧的内存,该内存可以是REE与TEE的共享内存,为了使得终端设备可以得到第二虚拟内存中的内容,终端设备需要先设置第二虚拟内存的访问权限为无效,无效可以理解为不可访问,这样,当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,终端设备会触发转译故障(translation fault),终端设备可以通过内存访问拦截模块拦截该转译故障,进而,终端设备可以记录向第二虚拟内存写入的内容,从而终端设备可以得到第二虚拟内存中的内容。
可以理解的是,终端设备还可以通过内存访问拦截模块记录第一虚拟内存对应的虚拟地址,第一虚拟内存对应的虚拟地址的具体内容,可以根据实际应用场景设定,本申请实施例不作限定。
可以理解的是,结合图3,终端设备通过内存访问拦截模块还可以记录第一虚拟内存的大小,这样,终端设备可以选择与第一虚拟内存的大小相近的第二虚拟内存,以通过第二虚拟内存存储第一虚拟内存中的内容,从而可以充分利用第二虚拟内存,节省内存空间。
需要说明的是,终端设备可以通过配置HCR_EL2的方式拦截转译故障,进而,终端设备可以通过异常处理程序记录第一虚拟内存对应的虚拟地址以及向第二虚拟内存写入的内容,异常处理程序的具体内容,可以根据实际应用场景设定,本申请实施例不作限定。
可以理解的是,由于目标TA是在第一虚拟内存中处理第一数据,因此,目标TA处理第一数据后的结果也保存在第一虚拟内存,因此,第一虚拟内存中的内容可以包括第一数据的处理结果;其中,第一虚拟内存中的具体内容,可以根据实际应用场景设定,本申请实施例不作限定。
本申请实施例中,终端设备可以得到第二虚拟内存中的内容之后,终端设备可以将第二虚拟内存的访问权限由不可访问设置为可访问,这样,终端设备可以将第一虚拟内存中的内容写入到第二虚拟内存;其中,第一虚拟内存中的内容与向第二虚拟内容写入的内容相同,转译故障也可以称为转译错误,转译错误用于指示终端设备无法向第二虚拟内存写入第一虚拟内存中的内容。
其中,终端设备将第一虚拟内存中的内容写入到第二虚拟内存,包括:终端设备获取第一虚拟内存对应的虚拟地址和第二虚拟内存对应的虚拟地址,终端设备将第一虚拟内存对应的虚拟地址转成第一虚拟内存对应的物理地址,以及终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址,终端设备将第一虚拟内存对应的物理地址中的内容写入到第二虚拟内存对应的物理地址中。
其中,终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址,包括以下几种可能实现方式:
在第一种实现方式中,当终端设备在第一对应关系中查询到与第二虚拟内存对应的虚拟地址匹配的地址时,终端设备从第一对应关系中得到第一页表项。
由于第一页表项中包括第二虚拟内存的访问权限和第二虚拟内存对应的物理地址,因此,终端设备可以从第一页表项中得到第二虚拟内存对应的物理地址;其中,第一对应关系包括虚拟内存对应的虚拟地址与页表项的关系。
示例性的,图5为本申请实施例提供的一种第一页表项的示意图,如图5所示,当终端设备将第一虚拟内存中的内容写入第二虚拟内存的过程中,终端设备会根据第二虚拟内存对应的虚拟地址查询到第一页表项,进而,终端设备可以从第一页表项中得到第二虚拟内存对应的物理地址。
可以理解的是,当终端设备根据第二虚拟内存对应的虚拟地址匹配到第一页表项时,由于第二虚拟内存的访问权限为无效,因此,终端设备会触发转译故障,这样,终端设备可以记录第一虚拟内存对应的虚拟地址以及向第二虚拟内存写入的内容。
需要说明的是,终端设备可以将第二虚拟内存的访问权限指示的bit0设置为0,从而使得第二虚拟内存的访问权限为无效,当终端设备记录第一虚拟内存对应的虚拟地址以及向第二虚拟内存写入的内容时,终端设备可以将第二虚拟内存的访问权限由无效变为有效,例如,终端设备可以将第二虚拟内存的访问权限指示的bit0由0设置为1,从而使得终端设备可以将第一虚拟内存中的内容写入到第二虚拟内存中;其中,有效可以理解为可访问,可访问用于指示终端设备可以将第一虚拟内存中的内容写入到第二虚拟内存。
可以理解的是,上述描述的终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址的实现方式可以理解为,一种没有虚拟机监控程序(hypervisor)层的实现方式;图5为第一页表项的一种示例,第一页表项也可以包括除图5所示的其他内容,本申请实施例不作限定。
可以理解的是,第一页表项也可以为DDI0487G_a_armv8_arm形式的页表项,第一页表项的具体内容,可以根据实际应用场景设定,本申请实施例不作限定。
在第二种实现方式中,终端设备可以将第二虚拟内存对应的虚拟地址转成第一中间物理地址(intermediate Physical Address,IPA),当终端设备在第二对应关系中查询到与第一IPA匹配的地址时,终端设备从第二对应关系中得到第二页表项,由于第二页表项中包括第二虚拟内存的访问权限和第二虚拟内存对应的物理地址,因此,终端设备可以从第二页表项中得到第二虚拟内存对应的物理地址;其中,第二对应关系包括IPA和页表项的对应关系。
其中,终端设备根据第一IPA,将第一虚拟内存对应的虚拟地址转成第一虚拟内存对应的物理地址的实现方式,可以理解为,一种包含虚拟机监控程序(hypervisor)层的实现方式;第二页表项可以为Stage 2Table的页表项,其中,VTTBR_EL2寄存器指向的Stage2Table用来实现第一IPA对第二虚拟内存对应的物理地址的转译,可以将Stage 2Table的页表项中的第二虚拟内存的访问权限设置为无效,这样,终端设备将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址时,终端设备会触发转译故障,进而,终端设备可以监控对第二虚拟内存的访问,使得终端设备可以记录第一虚拟内存对应的虚拟地址以及向第二虚拟内存写入的内容。
其中,第二页表项的具体内容可以参考第一页表项的具体内容适应描述,第二页表项的具体内容,也可以根据实际应用场景设定,本申请实施例不作限定。
其中,终端设备将第二虚拟内存对应的虚拟地址转成第一IPA的实现方式为:终端设备确定第二虚拟内存对应的虚拟地址指示的第一非安全NS内存标志位,当终端设备在第三对应关系中查询到与第一NS内存标志位相同的标志位时,终端设备从第三对应关系中得到第一IPA;其中,第三对应关系包括NS内存标志位和IPA的对应关系。
其中,第一NS内存标志位用于指示第二虚拟内存对应的物理地址指示的内存的属性,例如,第一NS内存标志位为1时,第二虚拟内存对应的物理地址指示的内存为非安全侧的内存,或者理解为,第二虚拟内存对应的物理地址指示的内存为REE侧的内存;第一NS内存标志位为0时,第二虚拟内存对应的物理地址指示的内存为安全侧的内存,或者理解为,第二虚拟内存对应的物理地址指示的内存为TEE侧的内存。
示例性的,图6为本申请实施例提供的一种地址转译的示意图,如图6所示,当第二虚拟内存对应的虚拟地址指示的第一NS内存标志位为1,终端设备可以根据第一NS内存标志位确定第一IPA,进一步地,终端设备可以根据第一IPA确定第二页表项,由于第二页表项包括第一虚拟内存对应的物理地址,从而终端设备实现将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址。
S405:当终端设备判断第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,终端设备确定目标TA存在漏洞。
本申请实施例中,结合图3,终端设备可以通过日志分析模块判断目标TA是否存在漏洞,例如,当终端设备通过日志分析模块判断第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,这说明目标TA处理第一数据时存在信息泄露漏洞,使得TEE侧的数据流向了非安全侧的内存中,例如,TEE侧的第一虚拟内存对应的虚拟地址流向了非安全侧的内存中;当终端设备通过日志分析模块判断第二虚拟内存中的内容不包括第一虚拟内存对应的虚拟地址时,这说明TEE侧的数据没有流向非安全侧的内存中,因此,终端设备判断目标TA不存在漏洞。
可以理解的是,第二虚拟内存中的内容还可以包括第一数据的处理结果,第二虚拟内存中的具体内容,也可以根据实际应用场景设定,本申请实施例不作限定。
可以理解的是,当终端设备确定目标TA存在漏洞时,终端设备可以修复目标TA,从而可以提高终端设备使用目标TA处理数据的安全性;其中,终端设备修复目标TA的实现方式,可以根据实际应用场景设定,本申请实施例不作限定。
结合上述内容,可以理解的是,本申请实施例提供了一种针对终端设备中的TA进行模糊测试的方法,该方法是一种基于非安全侧数据注入和安全侧内存访问监控相结合的方法,可以对TEE侧的TA进行指令级监控,并通过记录内存访问日志以进行有效地模糊测试,从而能够简单且高效地对安全侧的TA进行安全测试。
需要说明的是,在攻击者利用程序漏洞的过程中,攻击者会首先尝试获取一个程序内代码段的内存基址,然后根据内存基址进行代码片段重用攻击,为了防止攻击者获取内存基址,在终端设备的操作系统中会引入地址空间布局随机化(address space layoutrandomization,ASLR)技术,这样,终端设备对程序加载时会将程序映象和代码段的内存基址进行随机化处理,从而使得攻击者无法准确获得程序内代码段的内存基址,从而提高终端设备运行程序时的安全性。
在上述描述的代码中,log_output会将变量bb的地址泄露给攻击者,攻击者通过变量bb的地址减去偏移值,从而可以计算出该代码运行时的地址,进而,攻击者根据该地址可以构造出攻击代码片段。
结合上述内容,变量bb的地址即为第一虚拟内存的虚拟地址,结合图3,当终端设备通过日志分析模块识别出变量bb的地址写入到非安全内存时,终端设备可以判断上述代码存在程序问题,会导致出现信息泄露漏洞,因此,可以通过修改上述代码的方式,减少出现信息泄露漏洞的概率,改善程序的安全性。
上面结合图3-图6,对本申请实施例的方法进行了说明,下面对本申请实施例提供的执行上述方法的装置进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的漏洞检测装置可以执行上述漏洞检测方法中的步骤。
示例性的,图7为本申请实施例提供的一种漏洞检测装置的结构示意图,如图7所示,该装置700可以为终端设备,也可以为应用于终端设备中的芯片或芯片系统;该装置700包括:处理单元701,处理单元701用于支持漏洞检测装置执行信息处理的步骤。
示例性的,处理单元701,用于调用目标可信应用程序TA得到第一虚拟内存中的内容;其中,第一虚拟内存为可信执行环境TEE中的内存,TEE包括目标TA;处理单元701,还用于当终端设备将第一虚拟内存中的内容向第二虚拟内存写入时,得到第二虚拟内存中的内容;其中,第二虚拟内存为富执行环境REE中的内存;处理单元701,还用于当终端设备确定第二虚拟内存中的内容包括第一虚拟内存对应的虚拟地址时,确定目标TA存在漏洞。
在一种可能的实现方式中,处理单元701,还用于:设置第二虚拟内存的访问权限为不可访问;其中,不可访问用于指示终端设备无法向第二虚拟内存写入内容;处理单元701,具体用于:触发转译错误;其中,转译错误用于指示终端设备无法向第二虚拟内存写入第一虚拟内存中的内容;记录向第二虚拟内存写入的内容;得到第二虚拟内存中的内容。
在一种可能的实现方式中,处理单元701,具体还用于:将第二虚拟内存的访问权限由不可访问设置为可访问;将第一虚拟内存中的内容写入到第二虚拟内存。
在一种可能的实现方式中,处理单元701,具体用于:获取第一虚拟内存对应的虚拟地址和第二虚拟内存对应的虚拟地址;将第一虚拟内存对应的虚拟地址转成第一虚拟内存对应的物理地址;将第二虚拟内存对应的虚拟地址转成第二虚拟内存对应的物理地址;将第一虚拟内存对应的物理地址中的内容写入到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元701,具体用于:当终端设备在第一对应关系中查询到与第二虚拟内存对应的虚拟地址匹配的地址时,从第一对应关系中得到第一页表项;其中,第一对应关系包括虚拟内存对应的虚拟地址与页表项的关系;从第一页表项得到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元701,具体用于:将第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA;当终端设备在第二对应关系中查询到与第一IPA匹配的地址时,从第二对应关系中得到第二页表项;其中,第二对应关系包括IPA和页表项的对应关系;从第二页表项得到第二虚拟内存对应的物理地址。
在一种可能的实现方式中,处理单元701,具体用于:确定第二虚拟内存对应的虚拟地址指示的第一非安全NS内存标志位;当终端设备在第三对应关系中查询到与第一NS内存标志位相同的标志位时,从第三对应关系中得到第一IPA;其中,第三对应关系包括NS内存标志位和IPA的对应关系,第一非安全NS内存标志位用于指示第二虚拟内存对应的物理地址指示的内存的属性。
在一种可能的实现方式中,处理单元701,具体用于:获取第一数据;其中,第一数据用于测试目标TA的安全性;将第一数据写入目标客户端应用程序CA进程;其中,目标客户端应用程序CA进程为REE中的进程;调用目标TA在第一虚拟内存处理目标CA进程中的第一数据;调用目标TA得到第一虚拟内存中的内容;其中,第一虚拟内存中的内容还包括第一数据的处理结果。
在一种可能的实施例中,漏洞检测装置还可以包括:存储单元702。处理单元701、存储单元702通过通信总线相连。
存储单元702可以包括一个或者多个存储器,存储器可以是一个或者多个设备、电路中用于存储程序或者数据的器件。
存储单元702可以独立存在,通过通信总线与漏洞检测装置具有的处理单元701相连;存储单元702也可以和处理单元701集成在一起。
漏洞检测装置可以用于漏洞检测设备、电路、硬件组件或者芯片中。
示例性的,图8为本申请实施例提供的一种漏洞检测装置的硬件结构示意图,如图8所示,该漏洞检测装置包括处理器801,通信线路804以及至少一个通信接口(图8中示例性的以通信接口803为例进行说明)。
处理器801可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路804可包括在上述组件之间传送信息的电路。
通信接口803,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线局域网(wireless local area networks,WLAN)等。
可能的,该漏洞检测装置还可以包括存储器802。
存储器802可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器802可以是独立存在,通过通信线路804与处理器801相连接。存储器802也可以和处理器801集成在一起。
其中,存储器802用于存储执行本申请方案的计算机执行指令,并由处理器801来控制执行。处理器801用于执行存储器802中存储的计算机执行指令,从而实现本申请实施例所提供的方法。
可能的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器801可以包括一个或多个CPU,例如,图8中的CPU0和CPU1。
在具体实现中,作为一种实施例,漏洞检测装置可以包括多个处理器,例如,图8中的处理器801和处理器805。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
示例性的,图9为本申请实施例提供的一种芯片的结构示意图。芯片900包括一个或两个以上(包括两个)处理器910和通信接口930。
在一些实施方式中,存储器940存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
本申请实施例中,存储器940可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。存储器940的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。
本申请实施例中,存储器940、通信接口930以及存储器940通过总线系统920耦合在一起。其中,总线系统920除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。为了便于描述,在图9中将各种总线都标为总线系统920。
上述本申请实施例描述的方法可以应用于处理器910中,或者由处理器910实现。处理器910可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器910中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器910可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器910可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
结合本申请实施例的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electrically erasableprogrammable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器940,处理器910读取存储器940中的信息,结合其硬件完成上述方法的步骤。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供了一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
上述的组合也应包括在计算机可读介质的范围内。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种漏洞检测方法,其特征在于,所述方法包括:
终端设备调用目标可信应用程序TA得到第一虚拟内存中的内容;其中,所述第一虚拟内存为可信执行环境TEE中的内存,所述可信执行环境TEE包括所述目标可信应用程序TA;
当所述终端设备将所述第一虚拟内存中的内容向第二虚拟内存写入时,所述终端设备得到所述第二虚拟内存中的内容;其中,所述第二虚拟内存为富执行环境REE中的内存;
当所述终端设备判断所述第二虚拟内存中的内容包括所述第一虚拟内存对应的虚拟地址时,所述终端设备确定所述目标可信应用程序TA存在漏洞;
当所述终端设备将所述第一虚拟内存中的内容向第二虚拟内存写入时,所述终端设备得到所述第二虚拟内存中的内容之后,还包括:
所述终端设备将所述第二虚拟内存的访问权限由不可访问设置为可访问;
所述终端设备将所述第一虚拟内存中的内容写入到所述第二虚拟内存;
所述终端设备将所述第一虚拟内存中的内容写入到所述第二虚拟内存,包括:
所述终端设备获取所述第一虚拟内存对应的虚拟地址和所述第二虚拟内存对应的虚拟地址;
所述终端设备将所述第一虚拟内存对应的虚拟地址转成所述第一虚拟内存对应的物理地址;
所述终端设备将所述第二虚拟内存对应的虚拟地址转成所述第二虚拟内存对应的物理地址;
所述终端设备将所述第一虚拟内存对应的物理地址中的内容写入到所述第二虚拟内存对应的物理地址。
2.根据权利要求1所述的方法,其特征在于,当所述终端设备将所述第一虚拟内存中的内容向第二虚拟内存写入时,所述终端设备得到所述第二虚拟内存中的内容之前,还包括:
所述终端设备设置所述第二虚拟内存的访问权限为不可访问;其中,所述不可访问用于指示所述终端设备无法向所述第二虚拟内存写入内容;
当所述终端设备将所述第一虚拟内存中的内容向第二虚拟内存写入时,所述终端设备得到所述第二虚拟内存中的内容,包括:
所述终端设备触发转译错误;其中,所述转译错误用于指示所述终端设备无法向所述第二虚拟内存写入所述第一虚拟内存中的内容;
所述终端设备记录向所述第二虚拟内存写入的内容;
所述终端设备得到所述第二虚拟内存中的内容。
3.根据权利要求1所述的方法,其特征在于,所述终端设备将所述第二虚拟内存对应的虚拟地址转成所述第二虚拟内存对应的物理地址,包括:
当所述终端设备在第一对应关系中查询到与所述第二虚拟内存对应的虚拟地址匹配的地址时,所述终端设备从所述第一对应关系中得到第一页表项;其中,所述第一对应关系包括虚拟内存对应的虚拟地址与页表项的关系;
所述终端设备从所述第一页表项得到所述第二虚拟内存对应的物理地址。
4.根据权利要求1所述的方法,其特征在于,所述终端设备将所述第二虚拟内存对应的虚拟地址转成所述第二虚拟内存对应的物理地址,包括:
所述终端设备将所述第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA;
当所述终端设备在第二对应关系中查询到与所述第一中间物理地址IPA匹配的地址时,所述终端设备从所述第二对应关系中得到第二页表项;其中,所述第二对应关系包括IPA和页表项的对应关系;
所述终端设备从所述第二页表项得到所述第二虚拟内存对应的物理地址。
5.根据权利要求4所述的方法,其特征在于,所述终端设备将所述第二虚拟内存对应的虚拟地址转成第一中间物理地址IPA,包括:
所述终端设备确定所述第二虚拟内存对应的虚拟地址指示的第一非安全NS内存标志位;
当所述终端设备在第三对应关系中查询到与第一NS内存标志位相同的标志位时,所述终端设备从所述第三对应关系中得到所述第一中间物理地址IPA;其中,所述第三对应关系包括NS内存标志位和IPA的对应关系,所述第一非安全NS内存标志位用于指示所述第二虚拟内存对应的物理地址指示的内存的属性。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述终端设备调用目标可信应用程序TA得到第一虚拟内存中的内容,包括:
所述终端设备获取第一数据;其中,所述第一数据用于测试所述目标可信应用程序TA的安全性;
所述终端设备将所述第一数据写入目标客户端应用程序CA进程;其中,所述目标客户端应用程序CA进程为所述REE中的进程;
所述终端设备调用所述目标可信应用程序TA在所述第一虚拟内存处理所述目标CA进程中的第一数据;
所述终端设备调用所述目标可信应用程序TA得到所述第一虚拟内存中的内容;其中,所述第一虚拟内存中的内容还包括所述第一数据的处理结果。
7.一种漏洞检测装置,其特征在于,包括处理器和存储器,所述存储器用于存储代码指令;所述处理器用于运行所述代码指令,以执行如权利要求1-6中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111217952.5A CN114154163B (zh) | 2021-10-19 | 2021-10-19 | 漏洞检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111217952.5A CN114154163B (zh) | 2021-10-19 | 2021-10-19 | 漏洞检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114154163A CN114154163A (zh) | 2022-03-08 |
CN114154163B true CN114154163B (zh) | 2023-01-10 |
Family
ID=80462821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111217952.5A Active CN114154163B (zh) | 2021-10-19 | 2021-10-19 | 漏洞检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114154163B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109460373A (zh) * | 2017-09-06 | 2019-03-12 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN109670312A (zh) * | 2017-10-13 | 2019-04-23 | 华为技术有限公司 | 安全控制方法及计算机系统 |
CN110245001A (zh) * | 2019-05-05 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 数据隔离方法及装置、电子设备 |
WO2021023052A1 (zh) * | 2019-08-05 | 2021-02-11 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移方法、装置、电子设备及计算机存储介质 |
CN113434288A (zh) * | 2021-06-16 | 2021-09-24 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
-
2021
- 2021-10-19 CN CN202111217952.5A patent/CN114154163B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109460373A (zh) * | 2017-09-06 | 2019-03-12 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN109670312A (zh) * | 2017-10-13 | 2019-04-23 | 华为技术有限公司 | 安全控制方法及计算机系统 |
CN110245001A (zh) * | 2019-05-05 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 数据隔离方法及装置、电子设备 |
WO2021023052A1 (zh) * | 2019-08-05 | 2021-02-11 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移方法、装置、电子设备及计算机存储介质 |
CN113434288A (zh) * | 2021-06-16 | 2021-09-24 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114154163A (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11443034B2 (en) | Trust zone-based operating system and method | |
US20220222387A1 (en) | Methods and Systems to Restrict Usage of a DMA Channel | |
CN106605233B (zh) | 使用处理器提供可信执行环境 | |
CN109918919B (zh) | 认证变量的管理 | |
US7237081B2 (en) | Secure mode for processors supporting interrupts | |
US20160350534A1 (en) | System, apparatus and method for controlling multiple trusted execution environments in a system | |
US9606940B2 (en) | Methods and apparatus to utilize a trusted loader in a trusted computing environment | |
KR101483839B1 (ko) | 가상화를 이용한 비디오 컨텐츠 보호 | |
WO2008127470A2 (en) | Automatic bus encryption and decryption | |
JP2013539106A (ja) | セキュア環境における高速不揮発性ストレージの提供 | |
US10068068B2 (en) | Trusted timer service | |
US20160283409A1 (en) | Apparatus and Method for Implementing A Forked System Call In A System With A Protected Region | |
CN111124664A (zh) | 第一操作系统访问第二操作系统资源的方法和装置 | |
WO2015048922A1 (en) | Trusted boot and runtime operation | |
US11899781B2 (en) | Processing apparatus, embedded system, system-on-chip, and a security control method for inter-enclave data transmission | |
CN107301082A (zh) | 一种实现操作系统完整性保护的方法和装置 | |
CN114707140A (zh) | 一种基于pks体系的内核架构 | |
CN111783165B (zh) | 一种基于硬件隔离调用模式的安全可信系统芯片架构 | |
CN114154163B (zh) | 漏洞检测方法和装置 | |
CN117150478A (zh) | 一种基于片上系统的信任根、芯片以及数据校验方法 | |
CN114996719B (zh) | 可信处理单元的隐私数据及金融隐私数据的安全分析方法 | |
CN113868673B (zh) | 漏洞检测方法和装置 | |
WO2023123850A1 (zh) | 一种固件可信根的实现方法、装置、设备和可读存储介质 | |
CN114443147B (zh) | 基于可信硬件技术的超级监控式无人飞行器可信检测方法 | |
CN111666579B (zh) | 计算机设备及其访问控制方法和计算机可读介质 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220610 Address after: 100095 floors 2-14, building 3, yard 5, honeysuckle Road, Haidian District, Beijing Applicant after: Beijing Honor Device Co.,Ltd. Address before: Unit 3401, unit a, building 6, Shenye Zhongcheng, No. 8089, Hongli West Road, Donghai community, Xiangmihu street, Futian District, Shenzhen, Guangdong 518040 Applicant before: Honor Device Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |