CN109918901A - 实时检测基于Cache攻击的方法 - Google Patents
实时检测基于Cache攻击的方法 Download PDFInfo
- Publication number
- CN109918901A CN109918901A CN201910127173.2A CN201910127173A CN109918901A CN 109918901 A CN109918901 A CN 109918901A CN 201910127173 A CN201910127173 A CN 201910127173A CN 109918901 A CN109918901 A CN 109918901A
- Authority
- CN
- China
- Prior art keywords
- queue
- cache
- event data
- window
- hardware event
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明的目的是提供一种实时检测基于Cache攻击的方法,包括两个阶段:在离线分析阶段,监视基于Cache的攻击程序和良性程序样本的运行,收集其运行过程中产生的硬件事件数据,再根据收集到的数据提取并选择特征用来训练机器学习模型,生成能识别多种基于Cache攻击的分类器;在在线检测阶段,监视***中的活动进程并收集其运行时产生的硬件事件数据,实时地将收集到的数据划分成固定大小的窗口,再将每个窗口内的数据进行处理并使用离线分析阶段生成的分类器进行预测,从而实时地判断活动进程是否为基于Cache的攻击。本方案不针对以任何特定的加密算法为攻击对象的基于Cache的攻击,并且能以较低的开销在基于Cache的攻击完成前实时检测到攻击的存在。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种实时检测基于Cache攻击的方法。
背景技术
云计算通过提供计算资源给其租户带来便利,但是由于多个租户共享硬件资源,云计算也存在着巨大的安全风险。例如,攻击者可以利用共享处理器上的高速缓存(Cache)获取到受害者的敏感数据,这就是基于Cache的攻击。为了发起基于Cache的攻击,攻击者通常需要先执行一些操作使得高速缓存达到某一预期的状态,然后等待受害者执行;受害者执行时,不可避免地会使用共享的高速缓存,因此高速缓存的状态可能发生改变;在受害者执行后,攻击者探测高速缓存的状态,然后通过分析受害者执行前后高速缓存状态的变化情况推测到受害者的敏感数据,从而造成信息泄露。基于Cache的攻击可发生在台式机、云服务器和虚拟机、移动设备及浏览器等共享高速缓存、互不可信的软件组件之间,攻击目标包括加密***(如密钥)、计算机***随机性(如地址空间布局)及用户隐私(如键盘监听)等,这给***和信息安全带来了巨大的威胁。
为了抵制基于Cache的攻击,一些防御方案通过划分共享高速缓存的方法来限制攻击者对高速缓存的使用,从而限制其操作高速缓存的能力;一些防御方案通过注入噪声的方法来干扰攻击者对高速缓存状态的分析,从而阻止攻击者准确地推断出受害者的信息;一些检测措施通过分析对特定加密算法实施基于Cache的攻击时产生的硬件事件特征规律,从而利用这些特征来识别基于Cache的针对特定加密算法的攻击。
虽然现有的防御方案和检测措施均取得一定的成效,但是,上述这些方法或者只能防御某些特定的基于Cache的攻击,或者只能检测针对特定加密算法的Cache攻击,并且在遇到新的基于Cache的攻击时无能为力。例如最近爆出的Meltdown和Spectre攻击利用处理器的推测执行特性改变高速缓存的状态从而实现非法越界访问造成信息泄露,依然可以绕过所有现有的防御及检测方案。
发明内容
本发明的一个目的是提供一种实时检测基于Cache攻击的方法。
根据本发明的一个方面,提供了一种实时检测基于Cache攻击的方法,该方法包括两个阶段:离线分析阶段和在线检测阶段,其中,
所述离线分析阶段包括以下步骤:
步骤1,收集基于Cache的攻击程序和良性程序执行时产生的硬件事件数据;
步骤2,处理收集到的硬件事件数据,提取并选择特征用于训练机器学习算法,得到用于识别基于Cache攻击的分类器;
所述在线检测阶段包括以下步骤:
步骤3,实时收集***中活动进程的硬件事件数据,将其进行窗口划分;
步骤4,处理每个窗口内的硬件事件数据,使用分类器检测每个窗口是否存在基于Cache的攻击。
进一步的,上述方法中,所述步骤1中,
所述基于Cache的攻击程序包括:Flush+Reload、Flush+Flush、Prime+Probe、Meltdown、Spectre及XLATE系列攻击;
所述良性程序包括:CPU密集型、IO密集型;所述硬件事件包括Cache命中、TLB命中及分支误测相关事件,使用硬件性能计数器收集;
所述硬件事件数据为具有时序的硬件事件数据序列。
进一步的,上述方法中,所述步骤2中,将收集到的硬件事件数据处理成用于训练的特征的步骤如下:
步骤2-1,将收集到的硬件事件数据使用Attenuation方法进行处理;
步骤2-2,对处理后的数据提取均值、标准差、最大值、分位数、极差的特征;
步骤2-3,使用遗传算法对提取的特征进行选择,选择依据为F-Score。
进一步的,上述方法中,所述Attenuation方法中,将原始硬件事件的时序数列E={x0,x1,...,xt,...,xn}转化为E'={y0,y1,...,yt,...,yn},其中,ht=α×ht-1+(1-α)×xt,h0=x0,其中t为采样时间点,t>0,0<α<1。
进一步的,上述方法中,所述步骤2中,所述机器学习算法包括:决策树算法、多层感知机算法和Xgboost算法;
所述分类器为所述机器学习算法经过训练生成的能识别多种基于Cache攻击的分类模型。
进一步的,上述方法中,所述步骤3中,实时收集***中活动进程的硬件事件数据步骤如下:
步骤3-1,周期性地扫描***中所有活动进程,获取所有活动进程的进程ID列表;
步骤3-2,对比相邻两次获取到的活动进程的进程ID列表,得到新产生的活动进程的进程ID列表;
步骤3-3,从新产生的活动进程的进程ID列表中过滤掉在白名单中的进程ID及其子进程ID,将剩下的活动进程的进程ID加入一个待检测进程ID队列;
步骤3-4,监视所有待检测进程ID队列中的所有活动进程并获取硬件事件数据。
进一步的,上述方法中,所述窗口包含固定数量的硬件事件数据记录,多个窗口之间不存在重叠;
所述白名单为确定为良性进程的进程ID。
进一步的,上述方法中,所述步骤3-4中,所述待检测进程ID队列包括:过滤队列、长进程队列和危险进程队列,
监视时,为所述过滤队列和危险进程队列中的每个进程各分配一个线程用于收集硬件事件数据,为所述长进程队列中的所有进程分配一个线程轮流收集固定窗口数的硬件事件数据;
步骤3-3中,所述待检测进程ID队列为过滤队列。
进一步的,上述方法中,所述活动进程的进程ID在所述过滤队列、长进程队列和危险进程队列之间的流转过程如下:
所述进程ID最初进入所述过滤队列,如果所述活动进程在指定时间内完成且没有检测到异常,那么在所述活动进程完成时,将其进程ID从过滤队列中剔除;
如果所述活动进程在指定时间内没有完成且没有检测到异常,那么将所述进程ID从过滤队列移至长进程队列;
如果所述活动进程在指定时间内检测到异常,那么将所述进程ID从过滤队列移至危险进程队列;
如果所述活动进程在长进程队列中检测到异常,那么将所述进程ID从长进程队列移至危险进程队列。
进一步的,上述方法中,所述步骤4中,
处理窗口内硬件事件数据的方式同步骤2-1和步骤2-2所述的方法;
使用分类器检测窗口内是否存在基于Cache的攻击时,对来自不同进程的窗口采用不同的检测方案:检测来自所述过滤队列和长进程队列中进程的窗口使用Xgboost分类器;对来自所述危险进程队列中进程的窗口使用决策树分类器、多层感知机分类器和Xgboost分类器共同检测。
与现有技术相比,本发明的提供了一种实时检测基于Cache攻击的方法,包括两个阶段:在离线分析阶段,监视基于Cache的攻击程序和良性程序样本的运行,收集其运行过程中产生的硬件事件数据,再根据收集到的数据提取并选择特征用来训练机器学习模型,生成能识别多种基于Cache攻击的分类器;在在线检测阶段,监视***中的活动进程并收集其运行时产生的硬件事件数据,实时地将收集到的数据划分成固定大小的窗口,再将每个窗口内的数据进行处理并使用离线分析阶段生成的分类器进行预测,从而实时地判断活动进程是否为基于Cache的攻击。本方案不针对以任何特定的加密算法为攻击对象的基于Cache的攻击,并且能以较低的开销在基于Cache的攻击完成前实时检测到攻击的存在。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例中实时检测基于Cache攻击的方案概览图;
图2是本发明实施例中实时检测基于Cache攻击的架构图;
图3是本发明实施例中特征选择遗传算法流程图;
图4是本发明实施例中实时检测基于Cache攻击时进程在监视队列中的流转图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本发明提供一种实时检测基于Cache攻击的方法,包括两个阶段:离线分析阶段和在线检测阶段,其中,
所述离线分析阶段包括以下步骤:
步骤1,收集基于Cache的攻击程序和良性程序执行时产生的硬件事件数据;
步骤2,处理收集到的硬件事件数据,提取并选择特征用于训练机器学习算法,得到用于识别基于Cache攻击的分类器;
所述在线检测阶段包括以下步骤:
步骤3,实时收集***中活动进程的硬件事件数据,将其进行窗口划分;
步骤4,处理每个窗口内的硬件事件数据,使用分类器检测每个窗口是否存在基于Cache的攻击。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤1中,
所述基于Cache的攻击程序包括:Flush+Reload、Flush+Flush、Prime+Probe、Meltdown、Spectre及XLATE系列攻击;
所述良性程序包括:CPU密集型、IO密集型;所述硬件事件包括Cache命中、TLB命中及分支误测相关事件,使用硬件性能计数器收集;
所述硬件事件数据为具有时序的硬件事件数据序列。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤2中,将收集到的硬件事件数据处理成用于训练的特征的步骤如下:
步骤2-1,将收集到的硬件事件数据使用Attenuation方法进行处理;
步骤2-2,对处理后的数据提取均值、标准差、最大值、分位数、极差的特征;
步骤2-3,使用遗传算法对提取的特征进行选择,选择依据为F-Score。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤2中,所述机器学习算法包括:决策树算法、多层感知机算法和Xgboost算法;
所述分类器为所述机器学习算法经过训练生成的能识别多种基于Cache攻击的分类模型。
本发明的实时检测基于Cache攻击的方法一实施例中,所述Attenuation方法中,将原始硬件事件的时序数列E={x0,x1,...,xt,...,xn}转化为E'={y0,y1,...,yt,...,yn},其中,ht=α×ht-1+(1-α)×xt,h0=x0,其中t为采样时间点,t>0,0<α<1。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤3中,实时收集***中活动进程的硬件事件数据步骤如下:
步骤3-1,周期性地扫描***中所有活动进程,获取所有活动进程的进程ID列表;
步骤3-2,对比相邻两次获取到的活动进程的进程ID列表,得到新产生的活动进程的进程ID列表;
步骤3-3,从新产生的活动进程的进程ID列表中过滤掉在白名单中的进程ID及其子进程ID,将剩下的活动进程的进程ID加入一个待检测进程ID队列;
步骤3-4,监视所有待检测进程ID队列中的所有活动进程并获取硬件事件数据。
本发明的实时检测基于Cache攻击的方法一实施例中,所述窗口包含固定数量的硬件事件数据记录,多个窗口之间不存在重叠;
所述白名单为确定为良性进程的进程ID。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤3-4中,所述待检测进程ID队列包括:过滤队列、长进程队列和危险进程队列,
监视时,为所述过滤队列和危险进程队列中的每个进程各分配一个线程用于收集硬件事件数据,为所述长进程队列中的所有进程分配一个线程轮流收集固定窗口数的硬件事件数据;
步骤3-3中,所述待检测进程ID队列为过滤队列。
本发明的实时检测基于Cache攻击的方法一实施例中,所述活动进程的进程ID在所述过滤队列、长进程队列和危险进程队列之间的流转过程如下:
所述进程ID最初进入所述过滤队列,如果所述活动进程在指定时间内完成且没有检测到异常,那么在所述活动进程完成时,将其进程ID从过滤队列中剔除;
如果所述活动进程在指定时间内没有完成且没有检测到异常,那么将所述进程ID从过滤队列移至长进程队列;
如果所述活动进程在指定时间内检测到异常,那么将所述进程ID从过滤队列移至危险进程队列;
如果所述活动进程在长进程队列中检测到异常,那么将所述进程ID从长进程队列移至危险进程队列。
本发明的实时检测基于Cache攻击的方法一实施例中,所述步骤4中,
处理窗口内硬件事件数据的方式同步骤2-1和步骤2-2所述的方法;
使用分类器检测窗口内是否存在基于Cache的攻击时,对来自不同进程的窗口采用不同的检测方案:检测来自所述过滤队列和长进程队列中进程的窗口使用Xgboost分类器;对来自所述危险进程队列中进程的窗口使用决策树分类器、多层感知机分类器和Xgboost分类器共同检测。
在此,为了抵制现有的基于Cache的攻击和快速应对新的基于Cache攻击,本申请提供了一种实时检测基于Cache攻击的方法。本申请提供的方案及架构不针对以特定加密算法为攻击对象的基于Cache的攻击,并能够以较低的开销实时检测出现有的基于Cache的攻击。此外,当新的基于Cache的攻击出现时,使用本申请提供的方案训练出有效的分类器,加上本申请提供的架构即可应对新的基于Cache的攻击。
下面结合附图对本申请作进一步详细描述。
本申请的硬件环境配置为一台PC主机,其中,处理器为Intel Core i5-4460,3.2GHz,具有11个硬件性能计数器;内存8GB。软件环境操作***为Centos7.5.1804,64位,内核版本为3.10.0。
本申请的一些实施例提供一种实时检测基于Cache攻击的通用方案及架构,如图1所示,本方案包括离线分析阶段和在线检测阶段。在离线分析阶段,运行并监视基于Cache的攻击程序和良性程序样本,收集其运行过程中产生的硬件事件数据,再根据收集到的数据提取并选择特征用来训练机器学习模型,生成能识别多种基于Cache攻击的分类器;在在线检测阶段,监视***中的活动进程并收集其运行时产生的硬件事件数据,实时地将收集到的数据划分成固定大小的窗口,再将每个窗口内的数据进行处理并使用离线分析阶段生成的分类器进行预测,从而实时地判断活动进程是否为基于Cache的攻击。
具体地,本申请的一些实施例中包含监视模块、学习模块和检测模块三部分,如图2所示,离线分析阶段由监视模块的离线监视器和学习模块组成,其具体流程用实线表示,而在线检测阶段由监视模块的在线监视器和检测模块组成,其具体流程用虚线表示。
监视模块由离线监视器和在线监视器组成,离线监视器负责收集样本程序在执行期间产生的硬件事件数据,在线监视器负责实时收集***中的活动进程产生的硬件事件数据。图2所示的离线监视器的工作步骤如下:
步骤①,运行样本程序;
步骤②,向操作***获取运行的样本程序的进程ID;
步骤③,根据进程ID监视运行的样本程序并收集样本程序运行过程中产生的硬件事件数据;
步骤④,将收集到的硬件事件数据写入文件。
在步骤①中,所述样本程序包括基于Cache的攻击程序和良性程序,其中基于Cache的攻击程序来自Github,包括Flush+Reload、Flush+Flush、Prime+Probe、Meltdown、Spectre及XLATE系列攻击;良性程序来自标准benchmark和Linux的一些基本命令,包括计算密集型和I/O密集型程序。
在步骤②中,通过命令ps根据运行样本程序的名称向操作***获取样本程序的进程ID。
在步骤③中,使用PAPI(Performance Application Programming Interface)提供的接口访问硬件性能计数器获取硬件事件数据,每隔100微秒采样一次,收集到的硬件事件数据是具有时序的序列。样本程序运行完成时,对其监视及收集硬件事件数据的工作也随之终止。所述硬件事件参见下表:
事件名称 | 事件描述 |
PAPI_TOT_CYC | 执行的总周期 |
PAPI_TOT_INS | 执行的总指令 |
PAPI_L3_LDM | L3级缓存加载未命中 |
PAPI_L3_TCA | L3级缓存总访问 |
PAPI_PRF_DM | 数据预取未命中 |
PAPI_TLB_DM | 数据TLB缓存未命中 |
PAPI_BR_CN | 条件分支指令 |
PAPI_BR_MSP | 条件分支错误预测指令 |
本申请提供的一些实施例对每个样本程序重复执行步骤①-④五次,每次用不同的程序与之一起运行。这样一方面可以减少在程序运行过程中的不确定性对硬件事件数据造成的影响,另一方面可以增加用于训练的样本数量。
下表所示的是Spectre攻击程序运行期间收集到的硬件事件数据的一部分,其中PAPI_前缀被省略,每一行代表一次采样的记录,每一列代表对应事件的时序记录:
BR_MSP | BR_CN | PRF_DM | TLB_DM | TOT_CYC | TOT_INS | L3_LDM | L3_TCA |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 3758 | 32 | 7 | 45424 | 36637 | 8 | 61 |
0 | 64180 | 1 | 73 | 509496 | 453733 | 32 | 13 |
34 | 58474 | 19 | 91 | 471392 | 402074 | 79 | 342 |
415 | 20187 | 22 | 5 | 516647 | 151523 | 1109 | 1302 |
230 | 20811 | 4 | 0 | 469192 | 153857 | 1042 | 1012 |
182 | 20258 | 0 | 0 | 543469 | 165991 | 1294 | 1270 |
213 | 24678 | 1 | 0 | 529390 | 176620 | 1292 | 1273 |
175 | 21912 | 0 | 0 | 528615 | 169715 | 1273 | 1254 |
210 | 24738 | 556 | 0 | 530863 | 182552 | 1255 | 1243 |
171 | 21960 | 1 | 0 | 519032 | 166022 | 1271 | 1268 |
178 | 23213 | 0 | 0 | 512900 | 177904 | 1181 | 1172 |
学习模块的目标是根据收集到的硬件事件数据训练出具有很强预测能力的模型,即获得能够检测出基于Cache攻击的分类器。图2所示的学习模块包含以下步骤:
步骤⑤,使用Attenuation方法预处理收集到的硬件事件数据;
步骤⑥,对预处理后的数据进行特征提取,并使用遗传算法进行特征选择;
步骤⑦,将选择的特征喂入机器学习算法进行训练;
步骤⑧,生成并保存分类器。
在步骤⑤中,首先将离线监视器收集到的硬件事件数据中可能存在的无效数据过滤掉,例如上表中的第一行全零的记录。然后使用Attenuation方法将硬件事件数据进行转换。Attenuation方法的转换方式如下:
假设事件e的时序数列是E={x0,x1,...,xt,...,xn},令h0=x0,ht=α×ht-1+(1-α)×xt,其中t为采样点,t>0,0<α<1。那么转化后的序列E'={y0,y1,...,yt,...,yn},其中
经过Attenuation方法处理后的数据与原始数据的数值范围无关,并且保留原始数据的波动情况,这既适用于在不同机器环境下获取到的硬件事件数据,也适用于实时场景。
在步骤⑥中,对预处理后的数据序列提取最值、均值、中位数、标准差、分位数、极差等特征作为候选特征,然后在候选特征中选取子集用于训练。选取子集作为特征既可以降低学习和预测的性能开销,也可以减少无关特征对模型训练造成的干扰。选取特征子集采用遗传算法,如图3所示,其具体过程如下:
在初始化阶段,对基因进行编码,一个基因对应一个特征子集,选择N个基因作为初始化种群。设候选特征集合的长度为L,则每个基因对应一个长为L的二进制串,在任一基因位点上,0表示不选择相应的特征,1表示选择相应的特征。初始化种群时,随机选择N个在1~2L的数,每个数对应的二进制串即为遗传算法中的基因,这N个随机数对应的基因即为初始化的种群。
在评估阶段,选择优秀的基因作为父本使得种群进化。基因优秀与否的评估标准取决于适应度函数,这里适应度函数返回的是每个基因对应的特征子集在多个机器学习模型(多层感知机MLP,决策树DEC和XGBoost)上所得F-Score的均值,适应度越大说明基因越优秀。为了让优秀的基因有更大的繁衍概率,计算出初始化种群中每个个体基因的适应度后,使用轮盘赌选择方法选择n个优秀的基因作为父本:设种群中第i个基因的适应度为fi,则其被选中用于繁衍的概率为
在进化阶段,从n个父本中选择两个父本交叉选择形成新的基因,新的基因有一定概率发生突变。交叉选择时,对比两个父本的基因编码,选择两个父本中的优势基因(即,两个父本中同为1的基因位)遗传给后代,并且非优势基因位(仅有一个父本为1的基因位)也有一定概率遗传给后代。新基因除了遗传父本的基因,也有一定概率发生基因突变(即某些基因位从0变成1,或从1变成0)。
重复进化阶段N次生成n个新基因作为子代,对子代的基因计算适应度,并从子代和父代中选择n个优秀的基因(评估阶段)继续繁衍,不断重复以上步骤。迭代一定次数后,可以得到近似最优的特征子集。
在步骤⑦中,将获得的最优特征子集输入多层感知机(MLP)、决策树(DEC)和XGBoost三个机器学习算法中。在训练中使用五折交叉验证的方法来选择最好的模型:首先将30%的样本作为测试集,70%的样本作为训练集;然后将训练集随机分成五份,其中四份用于训练,剩下的一份用于验证;重复五次,将验证误差最小的模型保存用于实时预测。
图2所示的在线监视器的工作步骤如下:
步骤[1],周期性地向操作***获取当前活动进程的进程ID列表;
步骤[2],根据进程ID监视正在运行的活动进程,并收集活动进程的硬件事件数据;
步骤[3],将收集到的硬件事件数据实时以流的形式传给检测模块。
在步骤[2]中,监视的活动进程并非***中所有的活动进程,因为在任意时刻,***中的大部分活动进程均为良性进程,所以没有必要浪费太多的资源监视确定为良性的进程。本申请的一些实施例采用增量式的监视方案,即比较连续两次获取到的活动进程的进程ID列表,获取新产生的活动进程的进程ID列表。另外,本申请的一些实施例还设置了白名单,白名单内记录确定为良性的进程ID,在监视活动进程时,将在白名单内的进程ID及其子进程ID过滤掉。这样省去了很多不必要的监视,减少了不必要的资源浪费。
检测模块的目标是发现所有可能的Cache攻击,该模块利用学习模块输出的分类器对在线监视器收集的硬件事件特征进行检测。图2所示检测模块的工作步骤如下:
步骤[4],将在线监视器收集到的硬件事件数据进行无效值过滤、Attenuation转换和窗口划分后,对每个窗口计算出选择的特征,将特征作为分类器的输入;
步骤[5],分类器根据特征对窗口进行分类,一旦预测为基于Cache的攻击,则发出警告。
为了进一步提高监视和检测的效率,同时降低误报率,本申请的一些实施例中维护了三个监视队列:过滤队列,长进程队列和危险进程队列。如图4所示,所有新产生的、不在白名单中的活动进程都先进入过滤队列,对于过滤队列中的每个进程,均分配一个线程专用于收集其硬件事件数据;每个进程会被连续监视固定数量的窗口,每个窗口使用XGBoost分类器检测是否存在异常;如果程序在固定的窗口内完成且没有检测到异常,则该进程从过滤队列中移除;如果程序在固定的窗口内检测到异常,则该进程从过滤队列移到危险进程队列;如果程序在固定的窗口内没有完成,同时也没有检测到异常,则该进程从过滤队列移到长进程队列。对于长进程队列中的所有进程,分配一个线程轮流收集固定窗口数的硬件事件数据,每个窗口使用XGBoost分类器检测是否存在异常;如果检测到异常,则将该进程从长进程队列移至危险进程队列;如果没有检测到异常,则等到进程运行完成时将其从长进程队列移除。对于危险进程队列中的每个进程,均分配一个线程专用于收集其硬件事件数据,每个窗口使用XGBoost、决策树和多层感知机三个分类器共同预测是否存在基于Cache的攻击;一旦检测到基于Cache的攻击,则发出警告。本申请的一些实施例采用三个监视队列对不同的进程采用不同的策略进行监视和检测,这在减少开销的同时也降低了误报率。
综上所述,本申请提供了一种实时检测基于Cache攻击的通用方案及架构,包括两个阶段:在离线分析阶段,监视基于Cache的攻击程序和良性程序样本的运行,收集其运行过程中产生的硬件事件数据,再根据收集到的数据提取并选择特征用来训练机器学习模型,生成能识别多种基于Cache攻击的分类器;在在线检测阶段,监视***中的活动进程并收集其运行时产生的硬件事件数据,实时地将收集到的数据划分成固定大小的窗口,再将每个窗口内的数据进行处理并使用离线分析阶段生成的分类器进行预测,从而实时地判断活动进程是否为基于Cache的攻击。本方案不针对以任何特定的加密算法为攻击对象的基于Cache的攻击,并且能以较低的开销在基于Cache的攻击完成前实时检测到攻击的存在。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种实时检测基于Cache攻击的方法,其中,该方法包括两个阶段:离线分析阶段和在线检测阶段,其中,
所述离线分析阶段包括以下步骤:
步骤1,收集基于Cache的攻击程序和良性程序执行时产生的硬件事件数据;
步骤2,处理收集到的硬件事件数据,提取并选择特征用于训练机器学习算法,得到用于识别基于Cache攻击的分类器;
所述在线检测阶段包括以下步骤:
步骤3,实时收集***中活动进程的硬件事件数据,将其进行窗口划分;
步骤4,处理每个窗口内的硬件事件数据,使用分类器检测每个窗口是否存在基于Cache的攻击。
2.根据权利要求1所述的方法,其中,所述步骤1中,
所述基于Cache的攻击程序包括:Flush+Reload、Flush+Flush、Prime+Probe、Meltdown、Spectre及XLATE系列攻击;
所述良性程序包括:CPU密集型、IO密集型;所述硬件事件包括Cache命中、TLB命中及分支误测相关事件,使用硬件性能计数器收集;
所述硬件事件数据为具有时序的硬件事件数据序列。
3.根据权利要求1所述的方法,其中,所述步骤2中,将收集到的硬件事件数据处理成用于训练的特征的步骤如下:
步骤2-1,将收集到的硬件事件数据使用Attenuation方法进行处理;
步骤2-2,对处理后的数据提取均值、标准差、最大值、分位数、极差的特征;
步骤2-3,使用遗传算法对提取的特征进行选择,选择依据为F-Score。
4.根据权利要求3所述的方法,其中,所述Attenuation方法中,将原始硬件事件的时序数列E={x0,x1,...,xt,...,xn}转化为E'={y0,y1,...,yt,...,yn},其中,ht=α×ht-1+(1-α)×xt,h0=x0,其中t为采样时间点,t>0,0<α<1。
5.根据权利要求1所述的方法,其中,所述步骤2中,所述机器学习算法包括:决策树算法、多层感知机算法和Xgboost算法;
所述分类器为所述机器学习算法经过训练生成的能识别多种基于Cache攻击的分类模型。
6.根据权利要求1所述的方法,其中,所述步骤3中,实时收集***中活动进程的硬件事件数据步骤如下:
步骤3-1,周期性地扫描***中所有活动进程,获取所有活动进程的进程ID列表;
步骤3-2,对比相邻两次获取到的活动进程的进程ID列表,得到新产生的活动进程的进程ID列表;
步骤3-3,从新产生的活动进程的进程ID列表中过滤掉在白名单中的进程ID及其子进程ID,将剩下的活动进程的进程ID加入一个待检测进程ID队列;
步骤3-4,监视所有待检测进程ID队列中的所有活动进程并获取硬件事件数据。
7.根据权利要求6所述的方法,其中,所述窗口包含固定数量的硬件事件数据记录,多个窗口之间不存在重叠;
所述白名单为确定为良性进程的进程ID。
8.根据权利要求7所述的方法,其中,所述步骤3-4中,所述待检测进程ID队列包括:过滤队列、长进程队列和危险进程队列,
监视时,为所述过滤队列和危险进程队列中的每个进程各分配一个线程用于收集硬件事件数据,为所述长进程队列中的所有进程分配一个线程轮流收集固定窗口数的硬件事件数据;
步骤3-3中,所述待检测进程ID队列为过滤队列。
9.根据权利要求8所述的方法,其中,所述活动进程的进程ID在所述过滤队列、长进程队列和危险进程队列之间的流转过程如下:
所述进程ID最初进入所述过滤队列,如果所述活动进程在指定时间内完成且没有检测到异常,那么在所述活动进程完成时,将其进程ID从过滤队列中剔除;
如果所述活动进程在指定时间内没有完成且没有检测到异常,那么将所述进程ID从过滤队列移至长进程队列;
如果所述活动进程在指定时间内检测到异常,那么将所述进程ID从过滤队列移至危险进程队列;
如果所述活动进程在长进程队列中检测到异常,那么将所述进程ID从长进程队列移至危险进程队列。
10.根据权利要求1所述的方法,其中,所述步骤4中,
处理窗口内硬件事件数据的方式同步骤2-1和步骤2-2所述的方法;
使用分类器检测窗口内是否存在基于Cache的攻击时,对来自不同进程的窗口采用不同的检测方案:检测来自所述过滤队列和长进程队列中进程的窗口使用Xgboost分类器;对来自所述危险进程队列中进程的窗口使用决策树分类器、多层感知机分类器和Xgboost分类器共同检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910127173.2A CN109918901B (zh) | 2019-02-20 | 2019-02-20 | 实时检测基于Cache攻击的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910127173.2A CN109918901B (zh) | 2019-02-20 | 2019-02-20 | 实时检测基于Cache攻击的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109918901A true CN109918901A (zh) | 2019-06-21 |
CN109918901B CN109918901B (zh) | 2021-10-15 |
Family
ID=66961861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910127173.2A Active CN109918901B (zh) | 2019-02-20 | 2019-02-20 | 实时检测基于Cache攻击的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918901B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221118A (zh) * | 2021-05-11 | 2021-08-06 | 卓尔智联(武汉)研究院有限公司 | 一种缓存侧信道攻击的检测方法、装置和电子设备 |
CN114679315A (zh) * | 2022-03-25 | 2022-06-28 | 中国工商银行股份有限公司 | 攻击检测方法、装置、计算机设备、存储介质和程序产品 |
CN117077152A (zh) * | 2023-10-18 | 2023-11-17 | 中电科申泰信息科技有限公司 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8910280B2 (en) * | 2012-04-30 | 2014-12-09 | At&T Intellectual Property I, L.P. | Detecting and blocking domain name system cache poisoning attacks |
CN105550578A (zh) * | 2015-12-10 | 2016-05-04 | 上海电机学院 | 一种基于特征选择和决策树的网络异常分类规则提取方法 |
CN108629181A (zh) * | 2018-05-11 | 2018-10-09 | 湖南大学 | 基于行为的Cache攻击检测方法 |
US10116436B1 (en) * | 2017-09-26 | 2018-10-30 | Intel Corporation | Techniques for preventing memory timing attacks |
-
2019
- 2019-02-20 CN CN201910127173.2A patent/CN109918901B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8910280B2 (en) * | 2012-04-30 | 2014-12-09 | At&T Intellectual Property I, L.P. | Detecting and blocking domain name system cache poisoning attacks |
CN105550578A (zh) * | 2015-12-10 | 2016-05-04 | 上海电机学院 | 一种基于特征选择和决策树的网络异常分类规则提取方法 |
US10116436B1 (en) * | 2017-09-26 | 2018-10-30 | Intel Corporation | Techniques for preventing memory timing attacks |
CN108629181A (zh) * | 2018-05-11 | 2018-10-09 | 湖南大学 | 基于行为的Cache攻击检测方法 |
Non-Patent Citations (1)
Title |
---|
李晓虹: "基于行为的cache攻击检测***", 《湖南大学工程硕士学位论文》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221118A (zh) * | 2021-05-11 | 2021-08-06 | 卓尔智联(武汉)研究院有限公司 | 一种缓存侧信道攻击的检测方法、装置和电子设备 |
CN114679315A (zh) * | 2022-03-25 | 2022-06-28 | 中国工商银行股份有限公司 | 攻击检测方法、装置、计算机设备、存储介质和程序产品 |
CN114679315B (zh) * | 2022-03-25 | 2024-05-14 | 中国工商银行股份有限公司 | 攻击检测方法、装置、计算机设备、存储介质和程序产品 |
CN117077152A (zh) * | 2023-10-18 | 2023-11-17 | 中电科申泰信息科技有限公司 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
CN117077152B (zh) * | 2023-10-18 | 2024-01-23 | 中电科申泰信息科技有限公司 | 扰乱超标量处理器推测执行Spectre攻击的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109918901B (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108718310B (zh) | 基于深度学习的多层次攻击特征提取及恶意行为识别方法 | |
Murtaza et al. | A host-based anomaly detection approach by representing system calls as states of kernel modules | |
CN109522716B (zh) | 一种基于时序神经网络的网络入侵检测方法及装置 | |
CN105590055B (zh) | 用于在网络交互***中识别用户可信行为的方法及装置 | |
CN106411921B (zh) | 基于因果贝叶斯网络的多步攻击预测方法 | |
CN111428231A (zh) | 基于用户行为的安全处理方法、装置及设备 | |
CN110135157A (zh) | 恶意软件同源性分析方法、***、电子设备及存储介质 | |
CN109918901A (zh) | 实时检测基于Cache攻击的方法 | |
Lima et al. | A comparative study of use of Shannon, Rényi and Tsallis entropy for attribute selecting in network intrusion detection | |
CN109670306A (zh) | 基于人工智能的电力恶意代码检测方法、服务器及*** | |
Ajdani et al. | Introduced a new method for enhancement of intrusion detection with random forest and PSO algorithm | |
Gonaygunta | Machine learning algorithms for detection of cyber threats using logistic regression | |
Dou et al. | Pc 2 a: predicting collective contextual anomalies via lstm with deep generative model | |
CN106792883A (zh) | 传感器网络异常数据检测方法与*** | |
CN109120592A (zh) | 一种基于用户行为的Web异常检测*** | |
Sharma et al. | Layered approach for intrusion detection using naïve Bayes classifier | |
CN116318924A (zh) | 一种小样本入侵检测方法、***、介质、设备及终端 | |
CN110830483A (zh) | 网页日志攻击信息检测方法、***、设备及可读存储介质 | |
CN115001934A (zh) | 一种工控安全风险分析***及方法 | |
Muslihi et al. | Detecting SQL injection on web application using deep learning techniques: a systematic literature review | |
CN112333128B (zh) | 一种基于自编码器的Web攻击行为检测*** | |
CN110598959A (zh) | 一种资产风险评估方法、装置、电子设备及存储介质 | |
Mythreya et al. | Prediction and prevention of malicious URL using ML and LR techniques for network security: machine learning | |
Eldos et al. | On the KDD'99 Dataset: Statistical Analysis for Feature Selection | |
Harbola et al. | Improved intrusion detection in DDoS applying feature selection using rank & score of attributes in KDD-99 data set |
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 |