CN112631661B - 程序安全管控方法、装置、设备及存储介质 - Google Patents
程序安全管控方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112631661B CN112631661B CN202011486789.8A CN202011486789A CN112631661B CN 112631661 B CN112631661 B CN 112631661B CN 202011486789 A CN202011486789 A CN 202011486789A CN 112631661 B CN112631661 B CN 112631661B
- Authority
- CN
- China
- Prior art keywords
- flow
- instruction
- card driver
- running program
- executed
- 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
- 238000000034 method Methods 0.000 title claims abstract description 168
- 230000002159 abnormal effect Effects 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims description 123
- 238000005259 measurement Methods 0.000 claims description 41
- 230000005540 biological transmission Effects 0.000 claims description 29
- 238000012986 modification Methods 0.000 claims description 21
- 230000004048 modification Effects 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 15
- 238000010801 machine learning Methods 0.000 claims description 6
- 238000007726 management method Methods 0.000 description 50
- 230000006870 function Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 13
- 238000004458 analytical method Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000005856 abnormality Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供一种程序安全管控方法、装置、设备及存储介质,涉及计算机安全技术领域。该方法包括:安全管控模块获取运行程序执行的指令流;对所述指令流进行分割,获取指令流单元;根据所述指令流单元获得所述运行程序执行的流程;根据所述运行程序获取指令流程列表;所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理。该方法实现了显卡、网卡等板卡以及虚拟机软件的安全管控。
Description
技术领域
本公开涉及计算机安全技术领域,具体而言,涉及一种程序安全管控方法、装置、设备及可读存储介质。
背景技术
计算机主板上的硬件包括显卡、网卡、声卡等板卡,每个板卡对应的驱动程序在操作系统启动时添加到操作系统中,其中包含对应硬件设备的信息,计算机的中央处理器(Central Processing Unit,CPU)即可通过运行驱动程序与板卡通信,执行程序流程以实现对应的功能。显卡主要由显示控制器(Graphic Processing Unit,GPU)、显存、随机访问存储数模转换(Random Access Memory Digital-to-Analog Converter, RAMDAC)、电源芯片、接口等部分组成。以显示控制器为中心,结合显存,获取CPU及总线数据和命令,实现几何计算、渲染、抗锯齿、光线跟踪等计算任务,得到光栅数据,送到先入先出队列(FirstInput First Output,FIFO)和数模驱动单元显示输出图像。
显卡风险发源地主要与显示控制器和显卡固件有关,危害手段主要是通过显卡驱动程序漏洞、后门等破坏操作系统(Operating System,OS) 内核或系统内存,或通过直接内存访问(Direct Memory Access,DMA) 等方法越过CPU直接访问内存,从而干扰和损坏系统运行、或者搜集内存敏感信息如密钥口令等。
虚拟化主要指的是通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境。常用的虚拟机软件包括KVM、 QEMU等,其中,KVM负责CPU虚拟化与内存虚拟化,但KVM不能模拟其他设备,QEMU是模拟IO设备(如显卡、网卡,磁盘等)等外部设备的虚拟软件。也可能通过虚拟机软件中的漏洞、后门造成风险。
相关技术中对板卡驱动程序的调用、虚拟机软件的运行等无法进行风险管控,导致全系统的不安全、高风险。
如上所述,如何实现程序的安全管控成为亟待解决的问题。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种程序安全管控方法、装置、设备及可读存储介质,可实现程序运行的安全管控。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提供一种程序安全管控方法,包括:安全管控模块获取运行程序执行的指令流;对所述指令流进行分割,获取指令流单元;根据所述指令流单元获得所述运行程序执行的流程;根据所述运行程序获取指令流程列表;所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理。
根据本公开的一实施例,所述运行程序执行的流程包括跳转操作和/ 或返回操作;所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,进行异常处理包括:所述安全管控模块在根据所述指令流程列表确定所述运行程序执行的跳转操作与预期学习记录数据不符时,判定所述运行程序执行的跳转操作为异常,进行异常处理;所述安全管控模块在确定所述运行程序执行的返回操作与跳转操作组成的流程不在所述指令流程列表时,判定所述运行程序执行的流程为异常,进行异常处理。
根据本公开的一实施例,所述运行程序执行时调用显卡驱动程序;所述根据所述运行程序获取指令流程列表包括:根据所述运行程序获取所述显卡驱动程序的所述指令流程列表;所述方法还包括:度量模块获取待调用所述显卡驱动程序的进程的第一标识信息;所述度量模块获取允许调用所述显卡驱动程序的第一进程列表;所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,进行异常处理。
根据本公开的一实施例,所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,进行异常处理包括:所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,所述安全管控模块向操作系统内核发送第一异常通知;所述操作系统内核根据所述第一异常通知调度高速串行总线的控制器中断显卡的数据传输,所述显卡的数据传输为所述显卡驱动程序对应的显卡通过所述高速串行总线进行的数据传输;所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,进行异常处理包括:所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,所述度量模块向所述操作系统内核发送第二异常通知;所述操作系统内核根据所述第二异常通知调度所述高速串行总线的控制器中断所述显卡的数据传输。
根据本公开的一实施例,所述方法还包括:所述度量模块获取待修改操作系统内核关键区域的进程的第二标识信息,所述待修改操作系统内核关键区域的进程运行时调用所述显卡驱动程序;所述度量模块获取允许修改所述操作系统内核关键区域的第二进程列表;所述度量模块在根据所述标识信息判定所述待调用所述显卡驱动程序的进程在所述第二进程列表中时,根据待修改的内核关键区域所对应的内存地址进行处理。
根据本公开的一实施例,所述显卡驱动程序的代码区内存地址的属性为只读或隐含;所述根据待修改的内核关键区域所对应的内存地址进行处理包括:获取在所述显卡驱动程序的代码区内存地址进行写入操作的请求;将所述显卡驱动程序的代码区内存地址的属性设置为可写入;在写入操作结束后将所述显卡驱动程序的代码区内存地址的属性设置为只读或隐含。
根据本公开的一实施例,所述方法还包括:所述待调用所述显卡驱动程序的进程调用所述显卡驱动程序时,所述待调用所述显卡驱动程序申请的堆栈字节数包括第一字节数和第二字节数,其中,所述第一字节数根据所述待调用所述显卡驱动程序的进程获得,所述第二字节数为128的整数倍,所述待调用所述显卡驱动程序的进程获得的与所述第二字节数对应的堆栈空间的属性为只读或隐含。
根据本公开的再一方面,提供一种程序安全管控装置,包括:指令流获取模块,用于安全管控模块获取运行程序执行的指令流;指令流单元获取模块,用于对所述指令流进行分割,获取指令流单元;执行流程获得模块,用于根据所述指令流单元获得所述运行程序执行的流程;常规流程获取模块,用于根据所述运行程序获取指令流程列表;第一异常处理模块,用于所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理。
根据本公开的一实施例,所述运行程序执行的流程包括跳转操作和/ 或返回操作;第一异常处理模块,还用于所述安全管控模块在确定所述运行程序执行的跳转操作不在所述指令流程列表时,判定所述运行程序执行的跳转操作为异常,进行异常处理;所述安全管控模块在根据所述指令流程列表确定所述运行程序执行的返回操作与跳转操作组成的流程与预期学习记录数据不符时,判定所述运行程序执行的流程为异常,进行异常处理。
根据本公开的一实施例,所述运行程序执行时调用显卡驱动程序;所述常规流程获取模块,还用于根据所述运行程序获取所述显卡驱动程序的所述指令流程列表;所述装置还包括:第一进程标识获取模块,用于度量模块获取待调用所述显卡驱动程序的进程的第一标识信息;调用白名单获取模块,用于所述度量模块获取允许调用所述显卡驱动程序的第一进程列表;第二异常处理模块,用于所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,进行异常处理。
根据本公开的一实施例,所述第一异常处理模块包括:第一异常通知发送模块,用于所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,所述安全管控模块向操作系统内核发送第一异常通知;所述装置还包括数据传输中断模块,用于所述操作系统内核根据所述第一异常通知调度高速串行总线的控制器中断显卡的数据传输,所述显卡的数据传输为所述显卡驱动程序对应的显卡通过所述高速串行总线进行的数据传输;所述第二异常处理模块包括:第二异常通知发送模块,用于所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,所述度量模块向所述操作系统内核发送第二异常通知;所述数据传输中断模块,还用于所述操作系统内核根据所述第二异常通知调度所述高速串行总线的控制器中断所述显卡的数据传输。
根据本公开的一实施例,所述装置还包括:第二进程标识获取模块,用于所述度量模块获取待修改操作系统内核关键区域的进程的第二标识信息,所述待修改操作系统内核关键区域的进程运行时调用所述显卡驱动程序;内核修改白名单获取模块,用于所述度量模块获取允许修改所述操作系统内核关键区域的第二进程列表;内核修改模块,用于所述度量模块在根据所述标识信息判定所述待调用所述显卡驱动程序的进程在所述第二进程列表中时,根据待修改的内核关键区域所对应的内存地址进行处理。
根据本公开的一实施例,所述显卡驱动程序的代码区内存地址的属性为只读或隐含;所述内核修改模块包括:操作请求获取模块,用于获取在所述显卡驱动程序的代码区内存地址进行写入操作的请求;属性修改模块,用于将所述显卡驱动程序的代码区内存地址的属性设置为可写入;在写入操作结束后将所述显卡驱动程序的代码区内存地址的属性设置为只读或隐含。
根据本公开的一实施例,所述待调用所述显卡驱动程序的进程调用所述显卡驱动程序时,所述待调用所述显卡驱动程序申请的堆栈字节数包括第一字节数和第二字节数,其中,所述第一字节数根据所述待调用所述显卡驱动程序的进程获得,所述第二字节数为128的整数倍,所述待调用所述显卡驱动程序的进程获得的与所述第二字节数对应的堆栈空间的属性为只读或隐含。
根据本公开的再一方面,提供一种设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,所述处理器执行所述可执行指令时实现如上述任一种方法。
根据本公开的再一方面,提供一种计算机可读存储介质,其上存储有计算机可执行指令,所述可执行指令被处理器执行时实现如上述任一种方法。
本公开的实施例提供的程序安全管控方法,通过安全管控模块获取运行程序执行的指令流,对指令流进行分割获取指令流单元,根据指令流单元获得运行程序执行的流程,然后在根据指令流程列表判定运行程序执行的流程异常时,进行异常处理,从而可实现对运行程序的安全管控。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。
图1示出本公开实施例中一种系统结构的示意图。
图2示出本公开实施例中一种程序安全管控方法的流程图。
图3A示出本公开实施例中一种指令流分析方法的流程图。
图3B是根据本公开实施例示出的指令流分析架构的示意图。
图4示出本公开实施例中一种用于显卡安全管控的调用显卡进程管控方法的流程图。
图5示出本公开实施例中一种用于显卡安全管控的显卡运行管控方法的流程图。
图6示出本公开实施例中一种程序安全管控装置的框图。
图7示出本公开实施例中另一种程序安全管控装置的框图。
图8示出本公开实施例中一种电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施例使得本公开将更加全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现或者操作以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。符号“/”一般表示前后关联对象是一种“或”的关系。
在本公开中,除非另有明确的规定和限定,“连接”等术语应做广义理解,例如,可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
由于我国自主显卡的硬件性能和软件生态与国外还有不小差距,目前国产整机采用国外显卡的整机产品(如超威半导体公司(AMD)、英伟达(Nvida)等的显卡产品)仍占主流,这些显卡的软硬件设计无法掌握,具有随时可能发生通过显卡的系统攻击情况的潜在风险。特别是在关键行业、军队等对安全有较高要求的场合,使用这些显卡的整机,即使CPU与OS是我们完全自主产权,但是安全的木桶效应犹存,显卡的风险能够导致全系统的不安全、高风险。
因此,本公开提供了一种涉及可用于国产整机配置显卡等板卡、虚拟机软件运行时潜在后门及漏洞的安全防护方法,具体涉及一种采用显卡功能接口受限管理、显卡驱动内存受限保护、程序指令流分析、显卡驱动被调用者鉴别、异常行为记录和报警等综合方式,达到既能发挥显卡功能、性能,又能防范潜在安全风险的实现方法。
图1示出了可以应用本公开的程序安全管控方法或程序安全管控装置的示例性系统架构10。
如图1所示,系统架构10可以包括主板144,主板144上可安装有 CPU、内存、显卡和网卡等板卡。显卡中包括显卡固件122、显卡应用程序接口(Application Interface,API)120和显存130,显卡固件122可包括数据124和代码126,显存130用于存储显卡要处理的图形信息。显卡固件、显卡驱动程序可能存在潜在的后门或漏洞。
网卡中包括网卡固件134、网卡API 132和缓存142,网卡固件134 可包括数据136和代码138,缓存130用于数据缓冲。网卡固件、网卡驱动程序可能存在潜在的后门或漏洞。
显卡可通过高速串行计算机扩展总线(Peripheral Component Interconnectexpress,PCIe)116与CPU、内存、网卡等其他安装在主板144上的板卡实现数据传输。PCIe116控制器也提供直接内存访问(Direct Memory Access,DMA)功能,用来实现在占用很小CPU的情况下对内存进行读写访问。在计算机启动后,内存中存储有板卡相应的驱动程序,如显卡驱动104、网卡驱动114等,CPU通过执行显卡驱动104、网卡驱动114等实现对显卡、网卡等对应硬件的控制。在OS运行APP进程102 调用显卡驱动104时,可通过OS内置或可信模块内置的内核白名单或可信白名单106进行管控,防止不在白名单上的进程调用显卡驱动104。在显卡驱动104运行时,可通过内置内存指令流检测108机制进行管控,在异常跳转时进行报警等异常处理;也可通过内置内存物理防护110机制管控程序对内存的修改。
应该理解,图1中的设备、程序的种类和数目仅仅是示意性的,可以根据实现需要具有任意类型和数目的设备和程序。
图2是根据一示例性实施例示出的一种程序安全管控方法的流程图。如图2所示的方法例如可以应用于上述系统架构10中的内存指令流检测108。
参考图2,本公开实施例提供的方法20可以包括以下步骤。
在步骤S202中,安全管控模块获取运行程序执行的指令流。在一些实施例中,运行程序执行时调用显卡驱动程序,虽然显卡产品的驱动程序是黑盒程序,但是在内存中指令流是有规则可寻,可在OS的安全管控模块框架中挂接针对显卡驱动程序的指令流学习分析代码和监控代码,通过获取运行程序调用显卡驱动程序执行的指令流,可获知指令流的执行流程。
在一些实施例中,运行程序执行时调用网卡驱动程序,类似地,网卡驱动程序在内存中指令流是有规则可寻,也可获知指令流的执行流程。
在一些实施例中,运行程序为虚拟机软件,如KVM、QEMU等,类似地,虚拟机软件在内存中指令流是有规则可寻,也可获知指令流的执行流程。
在一些实施例中,例如Linux OS的Linux安全模块(Linux Security Module,LSM)可用于挂接分析和监控指令流的代码。LSM定义了很多钩子函数,安插在内核的关键路径上,当执行到这些关键路径时,调用安插的钩子进行安全检查。每个钩子上安装一个函数指针链,当调用钩子时,依次执行挂载在钩子上的函数,为Linux实现的不同的安全模块实际上就是在这些钩子上安装函数。LSM作为一个安全结构体,可为二维数组形式,数组每一行包括钩子函数的函数名、入口、描述(即该钩子函数实现了什么功能),在OS每装一个杀毒软件(或安全策略机制,例如指令流学习分析和监控)都在这个安全结构体中记录一行。运行时 OS实时询问LSM,LSM会将其中的每一行的软件运行一遍,指令流分析和监控机制也是LSM中的一行,用于记录监控的指令的操作数和操作码,从而记录指令流的执行流程。
在步骤S204中,对指令流进行分割,获取指令流单元。机器指令的格式为二进制代码,由操作码和操作数组成,操作码字段表征指令的操作特征与功能,操作数通常指定参与操作的操作数或地址。指令流中的一条条指令可分割为数个单元。显卡产品的驱动程序运行时执行的指令可实现特定的、有限数量的功能,因此指令流程也是有规律的。
在步骤S206中,根据指令流单元获得运行程序执行的流程。在一些实施例中,例如,显卡驱动程序给显卡发送不同的命令和数据,如渲染、变换等,显卡驱动程序执行的指令会具有相应的流程。风险来源是显卡驱动中可能会有恶意代码。正常情况下,指令流程中函数的调用和跳转是有规律的。若显卡驱动中有恶意代码,则会跳转到恶意代码部分进行执行,如从一个段跳转到另一个段,一个区跳转到另一个区,不是正常的函数返回,则该跳转则为异常跳转。因此可对返回指令和/或跳转指令进行监控,即记录跳转指令或返回指令所在的预定指令段,以将其执行流程与常规流程进行比对判断是否出现异常。
在一些实施例中,例如,显卡驱动程序可包括多个函数调用,通过 API调用函数接口,一个函数嵌套一个函数,堆栈一级一级地压上去,一个函数返回一个函数时,再一级一级地弹回来,压栈和弹栈是有规律的,否则就会压满溢出堆栈。函数之间的调用是相对的,上下之间的偏移量不会很大。若显卡驱动程序出现了漏洞,则有可能跳到了驱动程序 (受保护的内存段)以外的空间,这种跳转则可能是异常跳转。父函数调用子函数等逐级调用时,父函数运行到一半调用子函数时,将父函数的运行环境压到堆栈中,子函数运行完成会有返回指令(例如return 0或指针),该返回指令会触发堆栈操作,恢复父函数的运行线程,即返回到父函数。如果发现不是调用返回指令返回,而是异常跳转返回,则是异常返回。在出现异常跳转或返回时,则需要异常处理。
在步骤S208中,根据运行程序获取指令流程列表。对不同的板卡或虚拟机软件进行管控时,采用对应的指令流程列表。在一些实施例中,例如,显卡驱动程序运行时调用的函数会有正常返回流程和跳转顺序,例如跳转到了显卡驱动程序以外的空间则为异常。显卡驱动程序运行时,对其指令执行流程进行记录,一段时间后,可通过机器学习将所有的分支跳转指令等流程穷举出来,获得所有的排列组合,保存为指令流程列表。
在步骤S210中,安全管控模块在根据指令流程列表判定运行程序执行的流程异常时,进行异常处理。在一些实施例中,例如,运行程序调用显卡驱动程序执行的流程包括跳转操作和/或返回操作;安全管控模块在根据指令流程列表判定运行程序调用显卡驱动程序执行的流程异常时,进行异常处理包括:安全管控模块在根据指令流程列表确定运行程序调用显卡驱动程序执行的跳转操作与预期学习记录数据不符时,判定运行程序调用显卡驱动程序执行的跳转操作为异常,进行异常处理;安全管控模块在确定运行程序调用显卡驱动程序执行的返回操作与跳转操作组成的流程不在指令流程列表时,判定运行程序调用显卡驱动程序执行的流程为异常,进行异常处理,例如可对指令流进行持续监控、异常报警,甚至中断显卡的数据传输等。
在一些实施例中,例如,安全管控模块在根据指令流程列表判定运行程序调用显卡驱动程序执行的流程异常时,安全管控模块向操作系统内核发送第一异常通知,操作系统内核根据第一异常通知调度高速串行总线的控制器中断显卡的数据传输,显卡的数据传输为显卡驱动程序对应的显卡通过高速串行总线进行的数据传输。
在另一些实施例中,例如,安全管控模块在根据指令流程列表判定运行程序调用显卡驱动程序执行的流程异常时,与可信模块、白名单程序通信,发消息通知可信模块、白名单机制引擎,使可信模块对一些内存区域加强保护、进行日志记录、观察监控等处理。
在另一些实施例中,例如,也可以通过分支代码日志记录和动态比对,恶发现意代码在OS的LSM安全框架的挂接和攻击等异常,以及时进行处理和报警。
根据本公开实施例提供的程序安全管控方法,通过安全管控模块获取运行程序执行的指令流,对指令流进行分割获取指令流单元,根据指令流单元获得运行程序执行的流程,然后在根据指令流程列表判定运行程序执行的流程异常时,进行异常处理,通过指令流的动态监控对异常指令流进行监控报警,可有效阻止通过改变运行流程而实现的攻击。
图3A是根据一示例性实施例示出的一种指令流分析方法的流程图。如图3A所示的方法例如可以实施于上述图2中步骤S206之前。
参考图3A,本公开实施例提供的方法30可以包括以下步骤。
在步骤S302中,获取测试程序多次调用显卡驱动程序执行的指令流的流程。大量运行的显卡测试程序和应用程序,获得每次运行时的指令流,将指令流分割为能够实现一功能的指令单元,即获得指令流的流程。
在步骤S304中,通过机器学习方法根据多个指令流的流程获得指令流程列表。可通过跟踪或机器学习将尽可能多的分支跳转指令等流程枚举出来,保存为指令流程列表。
根据本公开实施例提供的指令流分析方法,通过在OS的LSM框架中挂接针对显卡驱动的指令流学习分析代码和监控代码,大量运行的显卡测试程序和应用程序,采用机器学习方法找出显卡驱动的指令流流程规律,实现了在细粒度微观层面上证明漏洞或后门程序。
图3B是根据本公开实施例示出的指令流分析架构的示意图。如图 3B所示,OS内核中可包括OS安全结构体3002、可信软件基代理3001 等安全模块,还可以包括OS系统调用表3003等关键数据。OS核外通过可移植操作系统接口(Portable Operating SystemInterface of UNIX, POSIX)3004实现系统调用,POSIX是为了提高不同操作系统的兼容性和应用程序的可移植性而制定的一套标准。安全引擎3064可为上述的安全管控模块,与OS安全结构体3002、可信软件基代理3001一同处于 OS内核,可互相通信,用于运行指令流分析和监控代码,提供监控、报警等服务。可根据调度策略机制3063调度安全引擎3064,安全引擎3064 还可配置注册服务3075、日志组件3074以及其他基础组件3073等等。
安全引擎3064可包括能力输出层模块3066和能力输出接口层3068。能力输出层模块3066和统一入口调度层3065通过统一调度接口集成所有的能力输出接口3067。能力输出接口层3068包括安全引擎能力模块接口3070、安全引擎能力适配模块层3071和安全引擎能力提供模块3072,可实现升级更新3069、数据运营3077、综合扫描3076。
在OS软件层面,可设置后台安全管控中心3005,其包括管理平台 3052,管理平台3052可包括策略中心3052、终端管理3053、告警统计 3054、报表管理3055、日志管理3056等模块。管理平台3052通过接口管理安全引擎3064。管理平台3052通过消息队列3057发送及接收消息,消息队列3057与存储单元(如云存储3058、高速缓存3059、持久化数据3060)互相通信,并通过服务接口响应3061下发接口请求3062以及接收安全引擎3064的响应。
图4是根据一示例性实施例示出的一种用于显卡安全管控的调用显卡进程管控方法的流程图。如图4所示的方法例如可以应用于上述系统架构10的内置的内核白名单或可信白名单106机制。
参考图4,本公开实施例提供的方法40可以包括以下步骤。
在步骤S402中,度量模块获取待调用显卡驱动程序的进程的第一标识信息。
在步骤S404中,度量模块获取允许调用显卡驱动程序的第一进程列表。可由OS内核白名单或者可信白名单(可信模块中的白名单)确定允许调用显卡驱动的进程列表。
在步骤S406中,度量模块在根据第一标识信息判定待调用显卡驱动程序的进程不在第一进程列表中时,进行异常处理。运行白名单程序,检测获取进程的名称,与白名单中进程列表进行对比,若不在白名单中进行监控等处理。
在一些实施例中,例如,度量模块在根据第一标识信息判定待调用显卡驱动程序的进程不在第一进程列表中时,度量模块向操作系统内核发送第二异常通知;操作系统内核根据第二异常通知调度高速串行总线的控制器中断显卡的数据传输。
在另一些实施例中,例如,度量模块在根据第一标识信息判定待调用显卡驱动程序的进程不在第一进程列表中时,也可进行记录并报警,避免显卡后门程序的运行。
在步骤S408中,在度量模块根据第一标识信息判定待调用显卡驱动程序的进程在第一进程列表中时,待调用显卡驱动程序的进程调用显卡驱动程序。待调用显卡驱动程序的进程调用显卡驱动程序时,待调用显卡驱动程序申请的堆栈字节数包括第一字节数和第二字节数,其中,第一字节数根据待调用显卡驱动程序的进程获得,第二字节数为128的整数倍,待调用显卡驱动程序的进程获得的与第二字节数对应的堆栈空间的属性为只读或隐含。
显卡驱动包括数据区和代码区,显卡驱动程序在OS启动后存在内存中。例如内存中第一块地址,如第200个字节中存放数据为数据区,第二块地址,如第100个字节中存放代码为代码区。可将数据区之外是只读或隐含。OS进程(应用进程,例如如播放视频的进程)调用显卡驱动时,为播放视频申请了10000个字节,OS相对于对程序进程申请的 10000个字节多申请了128个字节,这128个字节的属性是只读或隐含。堆栈溢出之后,攻击进来要在溢出点第0个字节到第128字节之内挂出攻击程序,只要把最开始的挂钩的128个字节(字头)破坏掉,黑客程序就不完整了即无法运行黑客程序。
根据本公开实施例提供的调用显卡进程管控方法,通过对程序模块内的每一个进程来源进行检测和动态度量,且白名单机制动态可变,前一次是白名单访问的进程并不代表下一次仍旧是白名单进程,从而可实现零信任机制。通过OS进程调用显卡驱动API前后申请的堆栈buffer 多申请128(或其整数倍)字节,将该字段与安全内存属性策略关联,避免堆栈溢出漏洞的渗透和利用。
图5是根据一示例性实施例示出的一种用于显卡安全管控的显卡运行管控方法的流程图。如图5所示的方法例如可以应用于上述系统架构 10的内置内存物理防护110机制。
参考图5,本公开实施例提供的方法50可以包括以下步骤。
在步骤S502中,度量模块获取待修改操作系统内核关键区域的进程的第二标识信息,待修改操作系统内核关键区域的进程运行时调用显卡驱动程序。
在步骤S504中,度量模块获取允许修改操作系统内核关键区域的第二进程列表。该第二进程列表可与第一进程列表为同一白名单中的列表,也可为两个不同的白名单的列表。
在步骤S506中,度量模块在根据标识信息判定待调用显卡驱动程序的进程在第二进程列表中时,根据待修改的内核关键区域所对应的内存地址进行处理。显卡驱动程序的代码区内存地址的属性为只读或隐含,获取在显卡驱动程序的代码区内存地址进行写入操作的请求;将显卡驱动程序的代码区内存地址的属性设置为可写入;在写入操作结束后将显卡驱动程序的代码区内存地址的属性设置为只读或隐含。
OS载入显卡驱动时,将显卡驱动程序地址与安全内存属性策略关联,设置成只读模式,避免显卡驱动内存攻击,或非法代码修改。将显卡驱动程序代码区设置成只读或隐含属性,若需要写操作时,需要通过可信程序进程委托瞬间修改属性,待写操作结束后再恢复成只读属性。只读之后,恶意代码无法加载到内存,所以无法运行。OS内核的系统调用表、中断向量表、安全结构体等被漏洞和后门利用的主要入口点与安全内存属性策略关联,通常状态设置为只读模式,仅当白名单(例如在第二进程列表)中的进程有权申请修改上述保护点,并通过内存策略更新机制接口完成修改。
在一些实施例中,例如,度量模块在根据标识信息判定待调用显卡驱动程序的进程在第二进程列表中时,也可向总线驱动程序发送异常通知,使其控制内部控制器中断显卡数据传输。
根据本公开实施例提供的显卡运行管控方法,通过对显卡驱动程序运行时对内存读写的管控,实现关键区域内存物理防护。
图6是根据一示例性实施例示出的一种程序安全管控装置的框图。如图6所示的装置例如可以应用于系统架构10的内存指令流检测108。
参考图6,本公开实施例提供的装置60可以包括指令流获取模块 602、指令流单元获取模块603、执行流程获得模块604、常规流程获取模块606和第一异常处理模块608。
指令地址获取模块602可用于安全管控模块获取运行程序执行的指令流。
指令流单元获取模块603可用于对指令流进行分割,获取指令流单元。
执行流程获得模块604可用于根据指令流单元获得运行程序执行的流程。
常规流程获取模块606可用于根据运行程序获取指令流程列表。
第一异常处理模块608可用于安全管控模块在根据指令流程列表判定运行程序执行的流程异常时,进行异常处理。
图7是根据一示例性实施例示出的一种程序安全管控装置的框图。如图7所示的装置例如可以应用于系统架构10。
参考图7,本公开实施例提供的装置70可以包括指令流获取模块 702、指令流单元获取模块703、执行流程获得模块704、常规流程获取模块706和第一异常处理模块708、第一进程标识获取模块710、调用白名单获取模块712、第二异常处理模块714、数据传输中断模块716、第二进程标识获取模块718、内核修改白名单获取模块720、内核修改模块722,其中,第一异常处理模块708可包括第一异常通知发送模块7082,第二异常处理模块714可包括第二异常通知发送模块7142,内核修改模块722可包括操作请求获取模块7222和属性修改模块7224。
指令流获取模块702可用于安全管控模块获取运行程序调用显卡驱动程序执行的指令流。
指令流单元获取模块703可用于对指令流进行分割,获取指令流单元。
执行流程获得模块704可用于根据指令流单元获得运行程序调用显卡驱动程序执行的流程。运行程序调用显卡驱动程序执行的流程包括跳转操作和/或返回操作。
常规流程获取模块706可用于根据运行程序获取显卡驱动程序的指令流程列表。
第一异常处理模块708可用于安全管控模块在根据指令流程列表判定运行程序调用显卡驱动程序执行的流程异常时,进行异常处理。
第一异常处理模块708还可用于安全管控模块在根据指令流程列表判定运行程序调还可用于安全管控模块在确定运行程序调用显卡驱动程序执行的跳转操作不在指令流程列表时,判定运行程序调用显卡驱动程序执行的跳转操作为异常,进行异常处理;安全管控模块在根据所述指令流程列表确定运行程序调用显卡驱动程序执行的返回操作与跳转操作组成的流程与预期学习记录数据不符时,判定运行程序调用显卡驱动程序执行的流程为异常,进行异常处理。
第一进程标识获取模块710可用于度量模块获取待调用显卡驱动程序的进程的第一标识信息。
第一异常通知发送模块7082可用于安全管控模块在根据指令流程列表判定运行程序调用显卡驱动程序执行的流程异常时,安全管控模块向操作系统内核发送第一异常通知。
调用白名单获取模块712可用于度量模块获取允许调用显卡驱动程序的第一进程列表。
第二异常处理模块714可用于度量模块在根据第一标识信息判定待调用显卡驱动程序的进程不在第一进程列表中时,进行异常处理。待调用显卡驱动程序的进程调用显卡驱动程序时,待调用显卡驱动程序申请的堆栈字节数包括第一字节数和第二字节数,其中,第一字节数根据待调用显卡驱动程序的进程获得,第二字节数为128的整数倍,待调用显卡驱动程序的进程获得的与第二字节数对应的堆栈空间的属性为只读或隐含。
第二异常通知发送模块7142可用于度量模块在根据第一标识信息判定待调用显卡驱动程序的进程不在第一进程列表中时,度量模块向操作系统内核发送第二异常通知。
数据传输中断模块716可用于操作系统内核根据第一异常通知调度高速串行总线的控制器中断显卡的数据传输,显卡的数据传输为显卡驱动程序对应的显卡通过高速串行总线进行的数据传输。
数据传输中断模块716还可用于操作系统内核根据第二异常通知调度高速串行总线的控制器中断显卡的数据传输。
第二进程标识获取模块718可用于度量模块获取待修改操作系统内核关键区域的进程的第二标识信息,待修改操作系统内核关键区域的进程运行时调用显卡驱动程序。
内核修改白名单获取模块720可用于度量模块获取允许修改操作系统内核关键区域的第二进程列表。
内核修改模块722可用于度量模块在根据标识信息判定待调用显卡驱动程序的进程在第二进程列表中时,根据待修改的内核关键区域所对应的内存地址进行处理。显卡驱动程序的代码区内存地址的属性为只读或隐含。
操作请求获取模块7222可用于获取在显卡驱动程序的代码区内存地址进行写入操作的请求。
属性修改模块7224可用于将显卡驱动程序的代码区内存地址的属性设置为可写入;在写入操作结束后将显卡驱动程序的代码区内存地址的属性设置为只读或隐含。
本公开实施例提供的装置中的各个模块的具体实现可以参照上述方法中的内容,此处不再赘述。
图8示出本公开实施例中一种电子设备的结构示意图。需要说明的是,图8示出的设备仅以计算机系统为示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,设备800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在 RAM 803中,还存储有设备800操作所需的各种程序和数据。CPU801、 ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口 805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本公开的系统中限定的上述功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括指令流获取模块、指令流单元获取模块、执行流程获得模块、常规流程获取模块和第一异常处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,指令流获取模块还可以被描述为“用于获取运行程序执行的指令流的模块”。
作为另一方面,本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:安全管控模块获取运行程序执行的指令流;对指令流进行分割,获取指令流单元;根据指令流单元获得运行程序执行的流程;根据运行程序获取指令流程列表;安全管控模块在根据指令流程列表判定运行程序执行的流程异常时,进行异常处理。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (9)
1.一种程序安全管控方法,其特征在于,包括:
安全管控模块获取运行程序执行的指令流;
对所述指令流进行分割,获取指令流单元;
根据所述指令流单元获得所述运行程序执行的流程;
根据所述运行程序获取指令流程列表;
所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理;
所述运行程序执行的流程包括跳转操作和/或返回操作;
根据所述运行程序获取指令流程列表,包括:
根据记录的运行程序的指令执行流程通过机器学习的方式获得多个分支跳转指令的排列组合,以获得所述指令流程列表;
所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理包括:
所述安全管控模块在根据所述指令流程列表确定所述运行程序执行的跳转操作与预期学习记录数据不符时,判定所述运行程序执行的跳转操作为异常,进行异常处理;
所述安全管控模块在确定所述运行程序执行的返回操作与跳转操作组成的流程不在所述指令流程列表时,判定所述运行程序调用执行的流程为异常,进行异常处理。
2.根据权利要求1所述的方法,其特征在于,所述运行程序执行时调用显卡驱动程序;
所述根据所述运行程序获取指令流程列表包括:
根据所述运行程序获取所述显卡驱动程序的所述指令流程列表;
所述方法还包括:
度量模块获取待调用所述显卡驱动程序的进程的第一标识信息;
所述度量模块获取允许调用所述显卡驱动程序的第一进程列表;
所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,进行异常处理。
3.根据权利要求2所述的方法,其特征在于,所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,进行异常处理包括:
所述安全管控模块在根据所述指令流程列表判定所述运行程序调用所述显卡驱动程序执行的流程异常时,所述安全管控模块向操作系统内核发送第一异常通知;
所述操作系统内核根据所述第一异常通知调度高速串行总线的控制器中断显卡的数据传输,所述显卡的数据传输为所述显卡驱动程序对应的显卡通过所述高速串行总线进行的数据传输;
所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,进行异常处理包括:
所述度量模块在根据所述第一标识信息判定所述待调用所述显卡驱动程序的进程不在所述第一进程列表中时,所述度量模块向所述操作系统内核发送第二异常通知;
所述操作系统内核根据所述第二异常通知调度所述高速串行总线的控制器中断所述显卡的数据传输。
4.根据权利要求2所述的方法,其特征在于,还包括:
所述度量模块获取待修改操作系统内核关键区域的进程的第二标识信息,所述待修改操作系统内核关键区域的进程运行时调用所述显卡驱动程序;
所述度量模块获取允许修改所述操作系统内核关键区域的第二进程列表;
所述度量模块在根据所述标识信息判定所述待调用所述显卡驱动程序的进程在所述第二进程列表中时,根据待修改的内核关键区域所对应的内存地址进行处理。
5.根据权利要求4所述的方法,其特征在于,所述显卡驱动程序的代码区内存地址的属性为只读或隐含;
所述根据待修改的内核关键区域所对应的内存地址进行处理包括:
获取在所述显卡驱动程序的代码区内存地址进行写入操作的请求;
将所述显卡驱动程序的代码区内存地址的属性设置为可写入;
在写入操作结束后将所述显卡驱动程序的代码区内存地址的属性设置为只读或隐含。
6.根据权利要求2所述的方法,其特征在于,还包括:
所述待调用所述显卡驱动程序的进程调用所述显卡驱动程序时,所述待调用所述显卡驱动程序申请的堆栈字节数包括第一字节数和第二字节数,其中,所述第一字节数根据所述待调用所述显卡驱动程序的进程获得,所述第二字节数为128的整数倍,所述待调用所述显卡驱动程序的进程获得的与所述第二字节数对应的堆栈空间的属性为只读或隐含。
7.一种程序安全管控装置,其特征在于,包括:
指令流获取模块,用于安全管控模块获取运行程序执行的指令流;
指令流单元获取模块,用于对所述指令流进行分割,获取指令流单元;
执行流程获得模块,用于根据所述指令流单元获得所述运行程序执行的流程,所述运行程序执行的流程包括跳转操作和/或返回操作;
常规流程获取模块,用于根据所述运行程序获取指令流程列表;
所述常规流程获取模块,还用于根据记录的运行程序的指令执行流程通过机器学习的方式获得多个分支跳转指令的排列组合,以获得所述指令流程列表;
第一异常处理模块,用于所述安全管控模块在根据所述指令流程列表判定所述运行程序执行的流程异常时,进行异常处理;
所述第一异常处理模块,还用于所述安全管控模块在根据所述指令流程列表确定所述运行程序执行的跳转操作与预期学习记录数据不符时,判定所述运行程序执行的跳转操作为异常,进行异常处理;所述安全管控模块在确定所述运行程序执行的返回操作与跳转操作组成的流程不在所述指令流程列表时,判定所述运行程序调用执行的流程为异常,进行异常处理。
8.一种设备,包括:存储器、处理器及存储在所述存储器中并可在所述处理器中运行的可执行指令,其特征在于,所述处理器执行所述可执行指令时实现如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机可执行指令,其特征在于,所述可执行指令被处理器执行时实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011486789.8A CN112631661B (zh) | 2020-12-16 | 2020-12-16 | 程序安全管控方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011486789.8A CN112631661B (zh) | 2020-12-16 | 2020-12-16 | 程序安全管控方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631661A CN112631661A (zh) | 2021-04-09 |
CN112631661B true CN112631661B (zh) | 2024-04-02 |
Family
ID=75313892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011486789.8A Active CN112631661B (zh) | 2020-12-16 | 2020-12-16 | 程序安全管控方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631661B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946869B (zh) * | 2021-11-02 | 2022-10-28 | 深圳致星科技有限公司 | 用于联邦学习和隐私计算的内部安全攻击检测方法及装置 |
CN114816813B (zh) * | 2022-03-23 | 2024-06-25 | 苏州浪潮智能科技有限公司 | 一种驱动程序控制方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6496926B1 (en) * | 1997-05-06 | 2002-12-17 | Microsoft Corporation | Computer-implemented paramaterless language with exception handler |
CN102789419A (zh) * | 2012-07-20 | 2012-11-21 | 中国人民解放军信息工程大学 | 一种使用多样本差异比对的软件故障分析方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020152259A1 (en) * | 2001-04-14 | 2002-10-17 | International Business Machines Corporation | Pre-committing instruction sequences |
US20070050848A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Preventing malware from accessing operating system services |
US9916141B2 (en) * | 2015-10-15 | 2018-03-13 | International Business Machines Corporation | Modifying execution flow in save-to-return code scenarios |
US20170185400A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Mode-specific endbranch for control flow termination |
US10956188B2 (en) * | 2019-03-08 | 2021-03-23 | International Business Machines Corporation | Transparent interpretation of guest instructions in secure virtual machine environment |
-
2020
- 2020-12-16 CN CN202011486789.8A patent/CN112631661B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6496926B1 (en) * | 1997-05-06 | 2002-12-17 | Microsoft Corporation | Computer-implemented paramaterless language with exception handler |
CN102789419A (zh) * | 2012-07-20 | 2012-11-21 | 中国人民解放军信息工程大学 | 一种使用多样本差异比对的软件故障分析方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
Non-Patent Citations (3)
Title |
---|
RISC/SPARC指令运行监督与分析的环境与工具;黄国勇;小型微型计算机系统(第10期);3-7+14 * |
Testing Java Exceptions: An Instrumentation Technique;Alexandre L.Martins;《IEEE》;626-631 * |
针对USB接口的安全测试方法研究;陈肖;黄钟;余静;;通信技术(第01期);257-261 * |
Also Published As
Publication number | Publication date |
---|---|
CN112631661A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949247B2 (en) | Systems and methods for auditing a virtual machine | |
CN107690645B (zh) | 使用解释器虚拟机的行为恶意软件检测 | |
KR102297133B1 (ko) | 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 | |
US20190087212A1 (en) | Android simulator and method for implementing android simulator | |
EP1596298B1 (en) | A method and system for enforcing a security policy via a security virtual machine | |
US9158919B2 (en) | Threat level assessment of applications | |
EP2881881B1 (en) | Machine-readable medium, method and system for detecting java sandbox escaping attacks based on java bytecode instrumentation and java method hooking | |
US8438640B1 (en) | Method and apparatus for reverse patching of application programming interface calls in a sandbox environment | |
CN112631661B (zh) | 程序安全管控方法、装置、设备及存储介质 | |
EP3502944B1 (en) | Detecting script-based malware cross reference to related applications | |
CN107949846A (zh) | 恶意线程挂起的检测 | |
CN111427782B (zh) | 安卓动态链接库的运行方法、装置、设备及存储介质 | |
CN113127050A (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
US11308204B2 (en) | Agentless security | |
CN115688106A (zh) | 一种Java agent无文件注入内存马的检测方法及装置 | |
CN112395593B (zh) | 指令执行序列的监测方法及装置、存储介质、计算机设备 | |
US11227052B2 (en) | Malware detection with dynamic operating-system-level containerization | |
US11934534B2 (en) | Vulnerability analysis of a computer driver | |
CN113127051B (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
Zaheri et al. | Preventing reflective dll injection on uwp apps | |
CN110633568B (zh) | 用于主机的监控系统及其方法 | |
US20240354450A1 (en) | Information processing method and apparatus | |
CN109918122B (zh) | 白名单维护方法、装置及终端设备 | |
KR20210054254A (ko) | 랜섬웨어 감지 장치 및 이에 의한 랜섬웨어 감지 방법 | |
CN115470479A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |