基于硬件性能计数器的可解释机器学习入侵检测

在这里插入图片描述

摘要——过去十年间,恶意软件的指数级增长已威胁到众多物联网(IoT)设备的安全性。此外,计算机架构在分支预测和乱序执行等方面的改进,为攻击者在这些设备中实施微架构攻击创造了新的机会。恶意软件和微架构攻击都是对计算系统的重大威胁,其行为范围从窃取敏感数据到导致系统完全崩溃。在反病毒软件(AVS)与攻击者的“猫鼠游戏”中,频繁增强AVS会带来巨大的计算开销。因此,基于硬件性能计数器(HPC)并结合机器学习(ML)分类器的检测策略,作为一种低开销的恶意威胁识别方案日益受到青睐。然而,ML模型通常作为黑盒运行,导致其决策结果无法被人类理解。模型结果的清晰性有助于开发更健壮的系统。现有的可解释框架仅能确定每个特征对预测的影响,这无法为基于HPC的入侵检测提供有意义的可解释结果。在本文中,我们通过提出一种可解释的基于HPC的双回归(HPCDR)ML框架来解决这一问题。我们的技术通过隔离应用程序中最恶意的瞬态窗口来提供相关的透明度,从而使用户能够高效地定位程序中的有害指令。我们在五种微架构攻击和两种恶意软件上评估了HPCDR。HPCDR成功地在每个入侵应用程序中识别出最恶意的函数。

索引词——可解释机器学习(ML),硬件性能计数器(HPC),恶意软件,系统安全。

I. 引言

在物联网(IoT)时代,计算系统的集成实现了自动化和可控性,已影响到众多领域。然而,虽然IoT设备提供了有益的功能,但它们也容易受到多种安全风险的影响,包括恶意软件和微架构攻击。恶意软件(或称恶意程序)已在大量设备中泛滥。各类恶意软件包括Rootkit、木马、蠕虫、僵尸网络、广告软件等。除恶意软件外,攻击者还开发了利用硬件特性(如分支预测和乱序执行)的微架构攻击。常见的微架构攻击包括Spectre、Meltdown、Rowhammer、Flush+Flush和ZombieLoad [1]–[3]。恶意软件和微架构攻击都试图窃取敏感信息、劫持系统、破坏功能等。

传统上,反病毒软件(AVS)是应对上述恶意威胁的常见解决方案。然而,AVS对新攻击的鲁棒性不强[4]。因此,随着攻击者制造更复杂的攻击,AVS必须加强其系统,从而导致巨大的计算开销,这对于能量受限的IoT边缘设备而言不切实际。这促使人们探索替代安全解决方案,如硬件辅助入侵检测(HAID)。

HAID利用硬件特性,这些特性比其软件等效物更难被攻破。其中最有前景的硬件特性之一是硬件性能计数器(HPC)[5]。HPC是现代大多数处理器中可用的特殊寄存器,用于跟踪低级微架构事件,例如分支缺失次数。机器学习(ML)分类器与HPC结合,已能准确检测恶意软件和微架构攻击[1],[5]。图1概述了基于HPC的入侵检测。

虽然硬件辅助检测已被证明具有鲁棒性和高效性,但这些分类器产生的结果缺乏可解释性。换言之,虽然分类器将应用程序标记为恶意,但决策背后没有人类可读的解释。这部分是由于ML模型被当作黑盒使用,即仅利用输出结果而不清楚模型的决策过程。在分析IoT设备安全风险时,可解释的结果有助于理解特定程序的恶意组件。此外,定位有害指令将有助于理解标签背后的确切原因。并且,这些获得的知识可被研究人员和开发人员用于构建健壮的系统,尤其是在系统安全至关重要的领域。本文的主要贡献如下。

  1. 本文提出了一种可解释的HPCDR框架,用于具有人类可解释结果的入侵检测。
  2. HPCDR在真实恶意软件上进行了评估,实现了透明的硬件辅助恶意软件检测。
  3. HPCDR被用于微架构攻击检测,并提供了恶意来源的确定。
局部最优原理图
图1. 基于HPC的入侵检测。

本文组织如下。第二节讨论基于HPC的检测和先前可解释框架的相关工作。第三节提供HPC和可解释ML的背景信息。第四节概述我们提出的可解释HPC框架的HPCDR方法。第五节介绍我们的实验结果。第六节对提出的HPCDR进行讨论。最后,第七节总结本文。

II. 相关工作

恶意软件以及微架构攻击,通过未经授权访问来修改、破坏或窃取敏感信息,从而危害系统安全。基于静态和动态AVS的检测技术已被证明在识别具有混淆和变异能力的恶意软件方面效率低下[6]–[8]。为克服AVS的缺点,文献[9]首次提出了基于HPC的检测技术,以硬件作为信任根。在收集的HPC数据上应用机器学习分类器、人工神经网络(NN)和K近邻算法,以增强检测器区分恶意软件与良性软件的性能[5]。最近,提出了一种两阶段ML分类器,通过特征选择挑选最佳HPC,并将其输入分类器以高效检测恶意软件[10]。基于HPC训练的支持向量机等监督学习算法已被用于在各种系统负载下检测面向缓存的微架构攻击[11]。此外,利用逻辑回归和NN分类器,通过在不同特征和采样周期下随机切换检测器组,监测HPC所反映的微架构事件偏差,来检测Spectre攻击[12]。基于HPC数据提取的复杂执行模式,采用无监督循环神经网络(RNN)对Meltdown、Spectre、Rowhammer和ZombieLoad等微架构攻击进行检测[1]。尽管现有方法取得了良好效果,但均未提供ML分类器决策背后的人类可理解解释。可解释性将有助于定位架构中表现出的恶意指令,并进一步提升HAID的性能。

在可解释AI方向上,已开发了Shapley加性解释(SHAP)[13]和局部可解释模型无关解释(LIME)[14]框架,通过识别与预测正相关最强的特征来为分类器决策提供透明度。然而,这些框架对于基于HPC的入侵检测并不充分,因为识别最重要的特征并不能提供任何有意义的解释,我们将在第三节-D中详细说明。此外,Pan等人[15]提出了一种可解释ML框架,使用基于嵌入式跟踪缓冲(ETB)数据训练的RNN分类器来识别恶意软件。尽管该框架在ETB跟踪数据上提供了有前景的恶意软件检测可解释性,但其适用性受限,因为并非所有架构都提供对调试硬件的访问。此外,从跟踪缓冲区收集数据相比HPC数据收集带来显著开销。而且,RNN模型的执行带来巨大的面积和功耗开销,因此不适合部署在资源受限的IoT设备中。最后,Pan等人[15]并未在实际系统上展示其框架在微架构攻击下的效率和可解释性。

III. 背景

A. 用于应用程序分析的硬件性能计数器

HPC是集成在当前大多数处理器中的特殊寄存器。它们能够跟踪低级微架构事件,例如总线周期、缓存引用和最后一级缓存未命中。因此,从程序执行捕获的HPC值可用于性能调优和软件优化。可用HPC的数量取决于处理器。例如,Raspberry Pi 3 Model B+包含一个Arm Cortex A53处理器,支持多达20个HPC。然而,同时观测的HPC数量有限,通常最多四个,具体取决于处理器架构[4],[5],[16]。HPC可与ML模型结合用于恶意软件和微架构攻击检测[5],[16],[17]。

B. 入侵检测数据集

虽然HPC已被证明能够区分应用程序,但必须使用包含微架构攻击和恶意软件两者的合适数据集来训练鲁棒分类器。

  1. 微架构攻击数据集:本文重点关注以下流行的微架构攻击。

  2. Rowhammer攻击利用DRAM中的漏洞,重复访问一行内存可能导致相邻行的比特翻转。这些诱导的比特翻转绕过CPU内存保护。Rowhammer攻击使用clflush指令来增加DRAM访问量。刷新缓存会引发对DRAM的内存访问[18]。

  3. Flush+Flush攻击利用clflush执行时间对于未缓存数据更短、对于已缓存数据更长这一特性[3]。它通过clflush指令反复刷新缓存行并测量其执行时间来工作。Flush+Flush攻击使攻击者能够监视用户按键。

  4. Spectre攻击允许从不属于攻击者的内存地址读取数据。它诱使处理器推测性地执行本不该执行的指令,并通过微架构隐蔽信道泄露受害者数据[2]。

  5. Meltdown利用乱序执行来泄露目标物理内存。该攻击基于以下事实:产生故障的指令会导致已执行的乱序指令被放弃[2]。

  6. ZombieLoad攻击使攻击者能够观察CPU核心上内存存储和加载的内容[19]。攻击者无法控制通过目标地址泄露什么值,而是泄露当前存储在物理CPU核心中或加载的值。

  7. 恶意软件数据集:本文利用开源恶意软件来识别正在执行的指令。开源恶意软件包括以下内容。

  8. Bashlite是一个僵尸网络,试图奴役设备以进行恶意活动。常见的僵尸网络用途包括分布式拒绝服务(DDoS)攻击、发送垃圾邮件以及为恶意目的窃取敏感信息[20]。

  9. PNScan能够扫描IPv4 TCP网络服务。因此,它可以观察SSH、FTP、IDENT的已安装版本、IP地址和其他服务。此外,PNScan木马能够劫持路由器以执行ACK/SYN/UDP洪水攻击以及基于字典的攻击[21]。

C. 可解释机器学习

ML模型被用于许多应用领域,如自动驾驶、社交媒体、推荐系统、语音识别和医疗解决方案。然而,在大多数应用中,ML模型作为黑盒运行,其输出缺乏人类可读的透明度[22]。在基于HPC的入侵检测与ML结合中,预测标签被直接使用,而不了解标签决策的原因。人类友好的可解释结果能够更好地理解输出。此外,理解模型行为及其输出推理有助于构建更健壮的系统。例如,一个可解释的ML模型既产生标签又给出分类原因(如最重要的样本),可为用户提供关键信息,用于系统改进。在基于HPC的检测中,设计者可以通过透明ML识别出恶意函数,从而纳入更多恶意样本。在网络安全等领域,准确结果至关重要,人类可读的输出为开发更强大的防御提供了有益的反馈循环。

D. 现有可解释框架

先前的可解释框架,如LIME和SHAP,已被开发用于为分类器决策提供透明度。SHAP框架使用博弈论方法通过Shapley值解释输出[13]。因此,它可以分配特征重要性值。更具体地说,它提供SHAP幅度特征值,使用户能够确定应使用哪些特征。

LIME框架为任何ML模型提供可解释性。例如,对于基于图像的分类,LIME提供预测结果以及促成该结果的图像部分。然而,本文主要关注传统分类的可解释结果,因为其他能力超出范围。与SHAP类似,LIME框架也识别对输出最重要的特征。它通过对样本进行扰动生成新样本及其对应预测,并按与初始实例的接近度加权[14]。然后,使用这些新生成的样本训练一个可解释模型,并通过解释局部模型来解释预测。

当期望的人类可解释性是阐明特征对输出的影响时,SHAP和LIME都是有益的。例如,对于一个预测流感的ML模型,在包含打喷嚏、发烧、咳嗽、体重和年龄的特征列表中,SHAP和LIME会确定发烧和打喷嚏与流感预测呈正相关。同时,它们会识别体重和年龄为负相关,因为这些特征无关。在这种情况下,用户可以获得预测结果以及对模型决策的人类可读解释。

虽然这些框架为原本黑盒的模型提供了一定程度的可解释性,但SHAP和LIME产生的人类可读结果对于特定分类问题(如入侵检测)并无助益。对于入侵检测,在许多情况下,用户已经知道程序是恶意的。因此,虽然LIME和SHAP提供幅度值来确定对预测贡献最大的特征,但这并不能提供任何有意义的解释。当将这些框架与HPC结合使用时,识别哪些HPC最重要几乎不提供可解释性,因为预测的根本原因并未给出。虽然这向用户显示了哪些HPC可考虑用于检测攻击,但人们完全可以利用各种特征选择技术来确定最佳HPC。也可能存在一个数据集的最优HPC对另一个数据集不足的情况。更合适的解决方案应是产生最恶意指令的HPC样本。这种时间隔离将阐明预测推理,因为用户可以监控在此瞬态期间执行的指令。此外,SHAP框架提供全局和局部可解释性,但代价是速度,因为需考虑所有可能的排列。因此,SHAP框架的计算带宽很大,因为Shapley值是所有排列下边际贡献的平均值[23]。

为解决这些挑战,我们开发了HPCDR框架,可在通过HPC识别恶意程序后使用。具体而言,安全研究人员可以在离线环境中确定新程序中最恶意的HPC样本。HPCDR的恶意时间隔离为用户提供了程序中清晰的有害瞬态点。对于入侵检测,隔离最恶意指令有助于研究人员更好地理解新型恶意软件和微架构攻击。此外,所提供的可解释性有助于加强当前安全方案,而使用LIME和SHAP框架则难以实现。因此,虽然当前可解释框架提供人类可读结果并在其他分类场景中有其价值,但它们并未产生入侵检测所需的期望透明度。另外,使用HPC可最小化特征开销,因为它们集成在大多数现代处理器中,如第三节-A所述。最后,我们提出的HPCDR计算开销低,因为它利用岭回归(RR),相比Shapley值需要更少的计算资源来提供可解释结果。

E. 岭回归

目前,ML中的透明度存在于回归模型中,其中权重系数表示特定特征对输出的重要性。为了在基于HPC的检测中精确定位恶意特征,可利用RR中的权重系数来识别程序中的恶意成分。RR是线性回归的扩展,采用改进的最小二乘法。在常规线性回归中,模型可能过拟合并具有高方差。RR通过引入偏差来降低方差,使用一个lambda (λ)(\lambda)(λ)。该lambda对优化问题引入惩罚项,表示为

B^Ridge=argminB∈R∥y−XB∥22+λ∥B∥22.(1)\hat{B}^{\mathrm{Ridge}} = \underset {B\in R}{\mathrm{argmin}}\| y - XB\| _2^2 +\lambda \| B\| _2^2. \quad (1)B^Ridge=BRargminyXB22+λB22.(1)

在这里插入图片描述

图2. 提出的HPCDR技术概览。

在(1)中,第一个向量范数是线性回归,第二个范数是λ\lambdaλ惩罚项。此外,当特征高度相关时(如HPC情况),线性回归不可靠。权重系数可能相互抵消。相反,RR对相关数据具有更好的适应性。因此,从RR获得的系数更可靠,可用于解释。

IV. 基于硬件性能计数器的双回归

为实现透明ML以帮助研究人员理解新型威胁,我们提出HPCDR方法。图2展示了我们提出方法的概览。首先,训练一个ML分类器分别对恶意软件和微架构攻击进行分类。接下来,在测试数据中引入扰动,并由我们的模型进行分类。这些数据用于训练RR模型,从而产生系数,用于转置HPC数据。随后,在此转置数据上训练另一个RR模型,该模型的系数可实现输出解释。

A. 训练模型

在我们方法的第一步(图2所示),训练一个能够准确分类恶意软件和微架构攻击的ML模型。为实现鲁棒系统,我们选择性能最佳的ML算法。我们省略深度学习模型,因为我们希望所提技术在硬件实现时具有低开销。为评估最优ML模型,我们测试了三种流行的算法:1)随机森林(RF);2)决策树(DT);3)神经网络(NN)。我们使用一组分类器在良性数据和微架构攻击上训练,另一组在良性数据和恶意软件上训练。我们使用80%80\%80%的数据进行训练,20%20\%20%用于测试,以验证模型能力。HPCDR使用的HPC数量取决于获得高性能分类器所需的HPC数量。但是,我们将可用HPC数量限制为四个,因为这是可并发读取的HPC数量。数据集和所用HPC的具体细节在第五节-A中进一步说明。图3-5展示了每个分类器在使用四个HPC时的准确率、精确率和召回率。

RF分类器提供了最佳准确率,对微架构攻击为89.9%89.9\%89.9%,对恶意软件为89.45%89.45\%89.45%。此外,我们特别关注召回率,因为它表示正确识别的恶意样本百分比。因此,高召回率表明模型识别恶意样本的能力。类似地,RF模型在微架构攻击上提供90.58%90.58\%90.58%的召回率,在恶意软件上为88.94%88.94\%88.94%,均取得最佳结果。因此,我们在HPCDR中使用RF分类器。也可使用其他分类器,但性能指标会有差异。然而,我们提出的HPCDR框架要求所用分类器具有高性能。在我们方法的后续步骤中,我们利用该模型的分类能力来隔离最恶意样本。因此,弱分类器会产生错误结果,导致不正确的可解释解释。

在这里插入图片描述

图3. ML分类器的准确率。

在这里插入图片描述

图4. ML分类器的精确率。

在这里插入图片描述

图5. ML分类器的召回率。

在这里插入图片描述

图6. 扰动对HMD预测的影响。

在将我们的检测结果与现有技术比较时,Bahador等人[17]开发了一个用于恶意软件检测的RF模型,准确率为91.91%91.91\%91.91%。此外,文献[24]使用RF分类器进行恶意软件检测,精确率为86.4%86.4\%86.4%,与我们模型89.97%89.97\%89.97%的精确率相近。其他相关研究中,基于HPC的RF分类器用于恶意软件检测,报告检测准确率在75%−83%75\%-83\%75%83%范围内[5],[25]。RF模型之间分类准确率的差异归因于用于训练的不同恶意软件和良性程序。值得注意的是,我们使用的RF模型准确率为89.9%89.9\%89.9%,是最高的之一。因此,我们使用的基于HPCD的模型在性能指标上与现有恶意软件检测方法相当。

B. 数据扰动引入

选定训练模型后,在测试数据集中引入扰动(P)(P)(P)。输入数据是用户希望获得可解释结果的程序的HPC收集数据。给定测试输入数据xxxMMMNNN列不同的HPC数据组成,其中NNN是HPC数量,MMM是周期数。此外,xxx包含一个应用程序多次HPC收集运行,每次运行具有等量样本。输入数据格式不总相同。行数MMM取决于收集了多少HPC样本。NNN取决于使用的特征数,即HPC数量。本文中NNN固定为四,因为我们总是使用四个HPC。但由于不同程序执行时间不同,每次收集的HPC样本数,即MMM会变化。

我们可以扰动xxx以产生新数据集XXX。在初始测试数据中引入扰动,因为这有助于隔离算法中最恶意部分,如图6所示。由于我们的ML模型是二分类,模型根据分类边界确定标签。当引入扰动时,决策边界附近的样本将被推出,留下最具影响力的样本。此前,这一概念已被用于对HAID进行对抗性攻击,因为样本特定扰动会产生导致错误分类的逃避样本[26]。

在我们的技术中,我们仅对每个样本扰动20%20\%20%,即PPP为待扰动样本的20%20\%20%。我们采用百分比扰动是因为固定值并不普适。对于大的HPC值,加上固定值可能变化极小。例如,如果两个HPC值分别为55和20000,固定值10对第二个HPC值来说微不足道。因此,通过使用固定百分比,我们确保每个HPC样本都被修改了可观的大小。我们选择20%20\%20%的扰动率,因为我们实验观察到该百分比能确保处于恶意与良性决策边界上的有害样本被标记为良性。在上述情况下,第一个HPC值增加10变为60,第二个增加4000变为24000。通过固定百分比技术,我们能够对每个HPC值进行有意义且适当的改变。也可以使用其他百分比值,但准确率会有所不同。然而,如果扰动百分比太小,几乎不会有边界样本被推入良性区域。反之,如果百分比太大,我们可能将最恶意样本推入良性决策边界。引入一个小但显著的扰动保证我们只移除边界样本。我们将此计算表示为

Xmn=xmn+Pmn(2)X_{mn} = x_{mn} + P_{mn} \quad (2)Xmn=xmn+Pmn(2)

其中mmmnnn分别表示被修改的具体行和列,xxx是初始测试数据,PPP是索引特定的附加扰动,XXX是生成的扰动数据集。一旦获得XXX,将该新测试数据输入到第四节-A中获得的训练模型。提供的标签成为输出YYY。获得XXXYYY后,可应用RR获得系数。我们注意到,通过在测试数据中引入这些扰动,分类器会将边界样本错误分类为良性。必须理解,虽然这看似错误,但我们的目的是隔离最恶意样本。由于提供的分类标签与输入数据一起用于训练第一个RR模型,我们必须至少有两个类别存在。通过过滤掉最不恶意样本,获得的RR系数更为精细,这有利于确保准确的HPCDR结果,因为它们将在后续步骤中使用。

在这里插入图片描述

C. 在HPC上应用岭回归

如第三节-E所述,RR是一种利用额外惩罚项防止过拟合且处理相关数据更好的技术。算法1概述了通过RR实现可解释性的过程。获得XXXYYY(如第四节-B所述)后,我们应用第一个RR。由于XXXNNN列,我们期望从第一个RR模型获得NNN个权重系数。利用这些权重系数,我们可以将XXX从二维矩阵转换为一列矩阵。对于XXX中的每一行,我们将每列乘以对应的权重系数。然后将这些值相加,形成一维矩阵X^\hat{X}X^。如第四节-B所述,xxx(我们的初始输入数据)包含多次等量HPC样本收集运行。如果每次运行包含SSS个样本,我们将一维矩阵X^\hat{X}X^SSS个样本分割,形成1×S1 \times S1×S矩阵。如果X^\hat{X}X^LLL个索引,我们期望矩阵数量为(L/S)(L / S)(L/S)。这些矩阵现在可用于训练第二个RR模型。在第一个RR模型中,HPC作为特征,我们得到它们的权重系数。然而,在第二个RR模型中,转置X^\hat{X}X^确保周期性收集的HPC迹的时间顺序成为特征。因此,我们可以从第二个RR获得周期性收集的HPC样本的权重系数。通过这种双RR方法获得的系数,可以实现结果的解释。

D. 可解释结果的解释

利用第四节-C中获得的系数,现在可以对结果的可解释性进行分析。第二个RR的权重系数将识别最恶意样本,从而确定最恶意指令的时间位置,因为我们知道HPC的周期性收集速率。例如,第一个权重系数代表收集的第一个HPC样本。因此,最大的系数对应影响最大的HPC样本,即最恶意样本。因此,可以追溯恶意测试数据的源代码,观察在此期间执行的具体指令。图7展示了一个示例,其中HPCDR将第四个样本提供为最恶意样本。追溯应用程序的执行显示Execute_Attack()函数正在此时间段运行。因此,研究人员可以确定相应程序恶意行为的来源。此外,通过在最有害瞬态窗口追溯代码,可理解前后指令,从而实现定位。我们提出的HPCDR框架隔离最恶意样本的能力有助于研究人员检查和调查新型恶意软件。此外,研究人员可将这些发现作为有益反馈,开发强大的预防技术并加强当前安全方案。

在这里插入图片描述

图7. 利用HPCDR输出进行可解释解释的流程。

E. HPCDR的鲁棒性

由于HPCDR是为待解释威胁的离线分析而开发的,我们假设用户拥有攻击源代码的副本。此外,我们假定他们能够为程序的完整执行收集HPC,并且用户已知该程序是恶意的。拥有源代码确保最恶意指令会被执行,从而使HPCDR能够识别最有害的HPC样本。此外,如果恶意活动被混淆(如定时炸弹的情况),收集的HPC仍会捕获有害事件。如果源代码运行虚拟语句,如随机循环或使程序休眠,这些样本在我们扰动数据时很容易被分类器标记为良性。更具体地说,由于这些虚拟语句与良性指令同义,它们属于边界样本,从而使引入的扰动将其推入良性边界。因此,一旦定时炸弹触发条件,最恶意样本(即执行的指令)将被隔离并通过HPCDR识别。

我们的ML模型在HPC数据上训练,这可能存在假阳性和假阴性问题。这是由于恶意软件中包含良性命令。例如,PNSCAN恶意软件使用ping命令,该命令是良性的。因此,当收集恶意程序的HPC时,可能有少数样本的HPC计数与良性程序相似。但这不会影响HPCDR方法,因为这些被错误分类的样本永远不会成为最恶意样本。我们假设HPCDR中使用的模型能够胜任攻击分类。因此,如果样本被误分类,表明它具有一定良性特征。在测试数据中引入扰动的目的是将边界样本推入良性区域。这有助于隔离并仅过滤出恶意边界中最有害的样本。如果样本已被分类为良性,我们隔离恶意样本的任务就简化了。我们假设提供预测的模型是胜任的,因为低指标的分类器不可信。性能差的模型可能将最恶意样本误分类为良性,这将造成灾难性后果。在我们的RF具有约90%90\%90%召回率的情况下,我们有信心被误分类的恶意样本不是最恶意的。

如第四节-B所述,文献[26]和[27]已提出了针对基于HPC的分类器的对抗性攻击。这些攻击通过在同一线程中并发运行虚拟程序或在源代码中插入随机良性指令来扰动HPC迹。然而,考虑针对HPCDR的任何利用或恶意对抗性攻击并不相关,因为用户必须在离线环境中执行这些攻击。由于用户试图获得合法的人类可解释结果,考虑安全性没有意义。

在攻击由多个连续指令组成的情况下,HPCDR识别的是最恶意的HPC样本。因此,当提供该样本时,我们可以分析前后样本,从而实现定位。因此,即使恶意攻击不包含在单个HPC样本中,通过识别最有害的时间点,像Flush+Flush这样的攻击仍能确定其可解释结果。由于我们每1ms收集一次HPC,如果确定第五个样本最恶意,检查第四和第六个样本时段将有助于理解攻击,因为攻击准备需要一些前置指令。后续指令将展示攻击如何利用其恶意活动。在Flush+Flush的情况下,HPCDR识别出flushandreload()函数,该函数调用clflush命令并分析执行时间。因此,虽然这种行为不包含在单个HPC样本中,但识别最恶意样本(即启动有害行为的函数)为检查附近时间邻域提供了定位。

V. 实验结果

A. 实验设置

现有研究表明,从虚拟机环境收集的HPC与裸机上获得的不同[28]。因此,为评估HPCDR,我们从真实硬件设备收集HPC,包括用于恶意软件的Raspberry Pi 3 Model B(采用ARM Cortex处理器)和用于微架构攻击的64位Intel i5-4210U处理器。HPC通过Linux的perf stat命令从两个处理器以1ms的采样周期收集。恶意软件样本来自Virusshare [29]和开源IoT恶意软件GitHub [30]。微架构攻击来自多个GitHub,包括Google的[31]以及应用信息处理与通信研究所[32]-[35]。良性程序包括计算算法、MiBench基准和Phoronix基准,代表实际应用。如第四节-A所述,我们使用RF模型,因为它通过使用以下HPC获得最佳结果:分支指令数、分支缺失数、总线周期数和CPU周期数。我们建立了两个框架,一个用于恶意软件,一个用于微架构攻击。我们的ML模型使用Python3和scikit-learn库[36]开发。对于第一个HPCDR框架,我们的训练数据包含30 000个恶意软件样本和30 000个良性样本。对于测试数据集,我们对每个恶意软件使用50次运行。在第二个HPCDR框架中,我们的训练数据包含90 000个微架构攻击样本和90 000个良性样本。类似地,我们的测试集也包含每个攻击的50次运行。

表 I HPCDR框架的测量指标和混淆矩阵

攻击 微架构攻击模型 恶意软件模型
Spectre Meltdown ZombieLoad Flush+Flush Rowhammer Bashlite PNSCAN
准确率 89.9% 83.01% 96.94% 88.93% 94.59% 84.31% 89.45%
精确率 89.25% 89.97%
召回率 90.58% 83.01% 96.94% 88.93% 94.59% 84.31% 88.94%
真阳性 16199 703 1164 2042 788 2465 7938
真阴性 16168 5370
假阳性 1683 667
假阴性 1950 143 95 180 346 826 617

B. 模型分析

为分析HPCDR框架中RF模型的拟合情况,我们绘制了恶意软件和微架构攻击分类器的诊断学习曲线,如图8(a)和(b)所示。对于两个模型,随着样本数量增加,准确率提高,这表明我们选择80:20的训练测试划分是有益的。我们注意到,虽然两图中准确率提升不大,但获得最佳分类指标对于确保HPCDR能够识别最恶意时间周期至关重要。此外,由于我们将HPCDR视为安全研究人员的离线工具,我们主要不关心训练规模增加带来的额外计算带宽。

在这里插入图片描述

图8. 恶意软件和微架构攻击分类器的诊断学习曲线。(a) 不同训练规模下的恶意软件准确率分数。(b) 不同训练规模下的微架构准确率分数。

C. 入侵攻击检测

为使提出的HPCDR能够提供可解释结果,所使用的ML模型必须能够胜任标记入侵攻击。为阐明HPCDR模型检测能力,我们在表I中给出了准确率、精确率和召回率三个测量指标以及混淆矩阵。如第四节-A所述,HPCDR使用RF模型,其对微架构攻击的准确率为89.9%89.9\%89.9%,对恶意软件为89.45%89.45\%89.45%。相应的召回率分别为90.58%90.58\%90.58%88.94%88.94\%88.94%,证明模型识别攻击的能力。随后,我们在无扰动的情况下通过HPCDR评估每个攻击。我们注意到,由于攻击HPC数据属于同一标签,准确率等于召回率,且无法给出精确率分数。类似地,在分析每个样本的分类时,我们只能提供真阳性和假阴性值。我们的实验结果表明,大多数样本被RF正确识别。此外,它们证实了我们对HPCDR识别程序中最恶意指令能力的信任。具体而言,表I显示HPCDR分类器的检测准确率在83.01%83.01\%83.01%96.94%96.94\%96.94%范围内。此外,最高恶意软件检测准确率为PNScan的91.81%91.81\%91.81%。而且,Meltdown微架构攻击达到了96.94%96.94\%96.94%的最高准确率。因此,我们的模型能够展示出有前景的入侵检测能力,以产生人类可读的解释。

表 II RR准确率

攻击 Spectre Meltdown ZombieLoad Flush+Flush Rowhammer Bashlite PNSCAN
扰动前准确率 83.01% 96.94% 88.93% 94.59% 84.31% 84.04%
扰动后准确率 63.43% 45.67% 57.54% 43.64% 44.43% 65.23%
第一次岭回归 81.12% 95.67% 84.78% 91.43% 82.47% 83.81%
第二次岭回归 82.84% 99.78% 98.73% 99.56% 97.73% 92.73%

D. 岭回归检测

为确保HPCDR能够提供最恶意时间周期,应评估RR模型的准确率。高准确率确保我们在所提HPCDR技术中重新利用的RR系数能够反映待解释应用程序扰动数据的分类标签。在表II中,我们展示了模型在所有微架构攻击和恶意软件上的准确率。随后,我们给出了引入扰动后的准确率。准确率下降反映了边界样本已被推入良性区域。如第四节-C所述,我们现在可以应用第一个RR来获取转置扰动输入数据所需的权重系数。为评估其准确率,我们将RR输出转换为分类标签,将所有小于0.5的值标记为0,大于等于0.5的值标记为1。由此,我们获得了所有微架构攻击和恶意软件的第一个RR准确率。实验结果表明,第一个RR模型能够准确预测所有程序的扰动输入数据标签,最低准确率为81.12%81.12\%81.12%。获得权重系数后,将扰动输入数据转置并训练第二个RR。与第一个RR类似,我们将RR输出转换为分类标签。对于第二个RR,我们获得最低82.84%82.84\%82.84%的准确率,这证实了我们对提出的HPCDR框架识别最恶意样本能力的信任。

在这里插入图片描述

图9. 可解释的Rowhammer。

在这里插入图片描述

图10. 可解释的Flush+Flush。

E. 可解释微架构攻击

  1. Rowhammer:图9显示了通过HPCDR评估Rowhammer攻击时的定量结果。如第四节-C所述,xxx(我们的初始输入数据)包含多次等量HPC样本收集运行。如果每次运行包含SSS个样本,我们将由xxx形成的一维矩阵X^\hat{X}X^SSS个样本分割,形成1×S1 \times S1×S矩阵。这些矩阵用于训练第二个RR模型,其中最大的权重系数表示最恶意样本。由于空间限制,我们仅显示最高权重系数及其相邻邻居所在列,来自1×S1 \times S1×S矩阵。此外,我们在图9中仅显示前五个1×S1 \times S1×S矩阵。提供的权重系数以红色表示,颜色越深表示权重越高。我们将在本节其他攻击中应用相同的图形说明 。
    应用HPCDR后,第706个样本获得最大系数。由于我们每1ms周期收集HPC,该样本对应705ms到706ms之间的瞬态窗口。观察该时间段的瞬态窗口,发现执行了toggle()函数。Rowhammer攻击利用该函数重复访问内存块(即锤击)以诱导所需的比特翻转。这是通过对内存行执行clflush指令实现的。这些持续的内存访问是Rowhammer攻击最有害的组成部分。toggle()函数是该攻击的开始,被我们提出的HPCDR正确揭示。

  2. Flush+Flush:图10展示了使用HPCDR评估Flush+Flush时的结果。它提供了第637个系数作为最恶意样本。对该时间段瞬态窗口的仔细检查显示正在执行flushandreload()函数。在该函数中,执行clflush命令并分析执行时间。这对攻击至关重要,因为已缓存的内存行刷新时间更短。由于Flush+Flush攻击通过不断刷新缓存行并检查缓存与非缓存的执行时间来实施,HPCDR正确识别出flushandreload()指令是敌对活动的主要来源。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b2069b85663c46c9a4b5e6578c84b041.png

图11. 可解释的Spectre。

在这里插入图片描述

图12. 可解释的Meltdown。
  1. Spectre:图11显示了使用HPCDR评估Spectre时的输出。由于Spectre攻击每次运行提供五个HPC样本,转置后得到C1至C5五列。对于Spectre,第二个样本具有最大系数。因此,我们回溯代码并隔离此时间段内运行的指令。该时间窗口对应于readmemorybyte()函数的执行。这是Spectre中返回来自私有源泄露敏感字节的恶意函数,被HPCDR成功识别。在该函数内部,Spectre根据检索执行时间识别CPU缓存中的私有数据。

  2. Meltdown:图12显示了将HPCDR应用于Meltdown攻击时的输出。HPCDR提供了第3742个样本作为最大系数。检查此特定间隔显示执行了libkdump_read()函数。该独特函数尝试从访问的物理内存中读取值,从而从其他程序获取敏感数据。更具体地说,Flush+Reload缓存侧信道攻击嵌入在该函数中,能够在内存位置未经授权检索私有信息。libkdump_read()函数是Meltdown中有害活动的初始起点。因此,HPCDR识别该瞬态窗口的能力证明了所提技术的可解释能力。

在这里插入图片描述

图13. 可解释的ZombieLoad。

在这里插入图片描述

图14. 可解释的Bashlite。
  1. ZombieLoad:为结束我们对微架构攻击的可解释ML结果,使用HPCDR评估了ZombieLoad攻击。从图13可知,HPCDR提供了第384个样本作为最大系数。分析此时间段内发生的指令时,执行了recover()函数。在该函数中,ZombieLoad模仿Meltdown使用Flush+Reload缓存侧信道攻击从其他进程检索私有信息。虽然Meltdown利用乱序执行,但ZombieLoad利用触发微码辅助的加载,导致具有错误数据的瞬态加载。然而,从其他进程恢复私有数据对两种攻击是相同的。因此,HPCDR将此函数识别为ZombieLoad攻击最恶意部分,因为这是攻击者开始恢复数据的起点。

F. 可解释恶意软件

  1. Bashlite:图14显示了Bashlite恶意软件的HPCDR输出。具有最大权重系数的第三个样本被HPCDR识别为最恶意。因此,在遍历代码时,processcmd()函数在此瞬态窗口执行。Bashlite持续运行,等待服务器指令。因此,该函数是控制被奴役机器的最关键点,因为它是执行所需行动的起点。processcmd()函数将待执行命令作为参数输入,并采取适当行动来完成该请求。这些行动范围从简单的ping到通过UDP数据包淹没服务器发起DDoS攻击。

在这里插入图片描述

图15. 可解释的PNScan。

转置后的HPC

C165 C166 C167 C168 C169
R1 0.57 0.23 0.43 1.10 1.61
R2 -0.44 -0.41 -0.91 -0.87 -0.76
R3 1.07 0.53 0.56 0.83 0.68
R4 1.27 1.95 1.38 1.04 1.05
R5 -0.80 -0.78 -0.98 -0.86 -0.79
权重系数 0.0003 -0.0017 0.0656 0.0029 0.0004
  1. PNScan:最后,在结束我们的可解释实验时,我们通过HPCDR评估了PNScan恶意软件。图15显示了结果。第167个样本具有最大系数,表明最恶意活动发生在166ms至167ms之间。回溯代码时,我们发现执行了probe()函数。在该函数中,对于给定的IP范围,它根据参数输入扫描这些地址以查找特定项目。probe()函数可用于查找IDENT服务器、daytime服务器和SSH守护进程。此外,这是PNScan的核心,因为该恶意软件能够扫描网络资源。

表 III HPCDR的时间开销

攻击 Spectre Meltdown ZombieLoad Flush+Flush Rowhammer Bashlite PNSCAN
训练时间(秒) 10.55 10.55 10.55 10.55 10.55 3.76 3.76
HPCDR(秒) 0.27 3.49 0.88 1.16 1.22 0.17 1.04

G. 时间开销

如第四节-D所述,我们设想HPCDR在离线环境中由研究人员使用,并假定他们能够访问源代码并具备收集HPC的能力。因此,HPCDR框架的速度不在本文范围之内。ML分类器可以在高性能系统、嵌入式平台或专用加速器上实现,每种都有其运行速度。因此,根据用户资源,时间开销会有所不同。在表III中,我们提供了在Intel Core i7-10510U CPU(16GB RAM)上运行HPCDR以提供最恶意HPC样本的时间开销。我们给出了训练微架构攻击和恶意软件各自RF模型的时间。随后,我们记录了每个程序通过HPCDR进行评估所需的时间。

表 IV HPCDR分类器的开销

设计 lsi_10k库 saed_90nm库
MIPS处理器 面积开销126427 sq. units 面积开销486952 sq. units
功耗开销1.49 μW 功耗开销13.61 μW
随机森林(恶意软件) 面积开销2629 sq. units 面积开销10577 sq. units
功耗开销44.46 μW 功耗开销474.71 μW
随机森林(微架构) 面积开销2768 sq. units 面积开销11202 sq. units
功耗开销44.27 μW 功耗开销486.83 μW
岭回归(恶意软件#1) 面积开销1128 sq. units 面积开销4593 sq. units
功耗开销25.47 μW 功耗开销203.54 μW
岭回归(恶意软件#2) 面积开销973 sq. units 面积开销3855 sq. units
功耗开销22.05 μW 功耗开销159.03 μW
岭回归(微架构#1) 面积开销1155 sq. units 面积开销4707 sq. units
功耗开销25.86 μW 功耗开销210.19 μW
岭回归(微架构#2) 面积开销999 sq. units 面积开销3980 sq. units
功耗开销22.87 μW 功耗开销165.73 μW

我们的时间开销结果证实,HPCDR为克服基于HPC入侵检测缺乏人类可解释解释提供了快速解决方案。对于所有攻击,仅在数秒内,我们就获得了识别最恶意指令的人类可解释解释。我们注意到,评估微架构攻击的HPCDR训练时间高于恶意软件HPCDR,因为如第五节-A所述,微架构攻击的RF模型在总计180000个样本上训练,而恶意软件分类器有60000个样本,因此训练更快。此外,每个攻击的测试数据长度不同,因为某些程序运行时间较长,产生更多HPC样本。因此,像Spectre这样较快的程序通过HPCDR评估的时间更短。我们注意到这些数字仅提供HPCDR时序复杂度的一般概览。由于新型恶意软件需要收集该应用程序的HPC数据,训练模型中的样本数将增加,从而增加训练数据。此外,随着测试输入数据收集样本数增加,时间开销也随之增加,因为处理输入数据和应用双RR技术需要更多时间。

H. 硬件开销

为获得HPCDR框架中使用分类器的具体功耗和面积开销,我们在硬件中实现了所有ML模型。我们注意到,由于我们设想HPCDR由安全研究人员在离线环境中使用,开销成本被认为无关紧要。为评估其硬件开销,我们综合了一个简单MIPS处理器进行比较。我们选择MIPS处理器是因为它是开源的,且面积小于ARM或Intel处理器。因此,如果分类器相比MIPS处理器的开销小,那么当用于更复杂的ARM或x86系统时,它们将可忽略。

我们使用Synopsys Design Compiler进行RTL逻辑综合。具体使用了lsi_10k和saed_90nm单元库。从所用标准单元库获得的面积和功耗开销将为我们所用HPCDR的开销提供可靠指示。也可使用其他单元库,但开销会有差异。表IV中的结果显示,我们模型的功耗和面积极小,所用功耗在微瓦级别,因此可忽略。将模型结果与MIPS处理器比较时,分类器仅增加约一到两个百分点的开销。获得的结果对于低端嵌入式系统是合理的开销,因为功耗在μW\mu \mathrm{W}μW范围内。

VI. 讨论

问题:HPCDR中仅同时使用了四个HPC。能否使用更多HPC?

回答:可同时监控的HPC数量取决于所用处理器。如第三节-A所述,通常可同时观察四个HPC[4]。因此,在我们使用的两个HPCDR框架中,我们都在四个HPC上训练RF模型:1)分支指令数;2)分支缺失数;3)总线周期数;4)CPU周期数。然而,我们设想HPCDR由开发人员用于对新型恶意应用程序进行离线分析。因此,可以使用超过四个HPC,因为离线利用使研究人员能够为HPCDR投入资源收集多个HPC。

问题:为什么使用HPC数据?HPCDR中能否使用HPC以外的其他特征?

回答:本文使用HPC是因为它们集成在大多数现代处理器中,如第三节-A所述。这导致最小的特征提取开销,因为替代特征需要额外硬件来提取。此外,HPC是周期性收集的,这对HPCDR提供最恶意样本很重要。因此,用户将知道该样本的收集时间。从而能够追溯应用程序执行并观察该瞬态期间执行的指令。也可使用其他特征,因为HPCDR算法可应用于其他数据。但替代特征必须具有周期性收集速率,并且必须使ML分类器能够提供高性能指标。如果新特征不是周期性收集的,用户将无法知道应用程序执行的哪个部分包含最恶意行为。

问题:HPCDR如何为新型威胁提供可解释性?用户将HPCDR扩展到其他恶意攻击需要哪些必要条件?

回答:如第五节-E和F所示,我们证明了提出的HPCDR能够隔离微架构攻击和恶意软件的最恶意样本。此外,我们能够定位每个应用程序中最恶意的函数。我们设想提出的HPCDR框架将由对嵌入式安全感兴趣的研究人员和开发人员使用。因此,我们预期用户具备基本ML和HPC收集知识。HPCDR的开发使得对于新型攻击,用户只需更新所用模型的训练数据以确保其能检测该新攻击。随后,他们需要使用HPCDR评估新型威胁的测试数据,以识别最有害样本。因此,将HPCDR可解释能力扩展到新攻击的用户需求很小。

VII. 结论

虽然通过HAID中HPC的利用,恶意软件和微架构攻击检测已显著改善,但所提供结果的可解释性仍存在缺口。因此,本文提出了一种HPCDR技术,它能够检测这些有害应用程序,并产生可解释结果,从而实现恶意活动来源的定位。ML中的透明度有助于理解恶意行为并提供有意义的解释。因此,研究人员使用HPCDR可帮助加强当前安全方案。实验结果表明,HPCDR成功定位了每种恶意软件和微架构攻击中最恶意指令。未来工作中,我们计划探索其他ML和深度学习算法以及利用其他硬件语义特征,以实现更鲁棒的检测和可解释性。此外,我们打算在其他微架构攻击(如Prime+Probe)和恶意软件(如Rootkit)上评估HPCDR。

更多推荐