Packet Chasing:通过缓存侧信道监视网络数据包

摘要

本文介绍了一种对网络的攻击–Packet Chasing,这种攻击不需要访问网络,无论接收数据包的进程的特权级别如何,都能发挥作用。一个间谍进程可以很容易地探测和发现网络驱动程序使用的每个缓冲区的确切缓存位置。更有用的是,它可以发现这些缓冲区用于接收数据包的确切顺序。这样就可以通过缓存侧信道监控数据包频率和数据包大小。该攻击既可以在发送者和无法访问网络的远程间谍程序之间建立秘密通道,也可以进行直接攻击,识别网络上受害者的网页访问模式等。除了识别潜在的攻击外,本工作还提出了一种基于软件的短期缓解措施,以及一种轻量级、自适应的缓存分区缓解措施,以阻止末级缓存中的I/O和CPU请求的干扰。

关键词:侧信道攻击,缓存攻击,DDIO,包处理,安全,微架构安全

1. 导言

现代处理器采用了越来越复杂的微结构技术,这些技术经过精心优化以提供高性能。然而,这种复杂性往往会滋生安全漏洞,最近的Meltdown和Spectre就证了这一点。本文探讨了另一种复杂的高性能微架构技术–Intel数据直接I/O (DDIO) ,该技术在大多数服务器级英特尔处理器中实现,用来加速网络数据包的处理速度。此外,本文还提出了针对网络I/O流量的新的高分辨率隐蔽和侧信道攻击,虽然在没有DDIO的情况下,这些攻击也是可能的,但在DDIO存在时,这些攻击的效果会大大增强。

多千兆以太网和其他高速网络I/O技术(如Infiniband)的广泛采用,凸显了高速处理网络数据包以维持这种新出现的网络吞吐量,并进一步提高带宽密集型数据中心工作负载的性能的重要性。因此,目前大多数英特尔服务器级处理器都采用了DDIO技术,该技术允许直接在处理器的末级缓存(LLC)中注入和后续处理网络数据包,绕过传统的DMA(直接内存访问)接口。DDIO对包括操作系统驱动程序在内的软件来说是不可见的,而且总是默认启用。

DDIO背后的关键动机是,现代服务器级处理器采用了大型LLC(大小为20MB)从而使网络堆栈能够在LLC内完全托管热数据结构和进程中的网络数据包,减少对主存储器的访问。通过消除冗余的内存传输,DDIO已经被证明可以在I/O带宽和整体功耗方面提供实质性的改进。尽管英特尔限制为DDIO分配超过10%的LLC,以防止缓存污染,但它既没有为DDIO静态保留也没有为DDIO动态分区缓存的专用部分。

然而,尽管DDIO具有加速网络数据包处理的良好目标,但它有一个以前不为人知的漏洞,本文对此进行了揭露。在DDIO主机上,来自远程客户端的传入网络数据包和来自本地主机上进程的应用数据结构会争夺共享的LLC,在发生缓存冲突时可能会相互驱逐。在本文中,我们展示了这种争夺提供了显著的信息泄漏,允许缓存侧信道攻击执行秘密通信和推断网络行为,而对网络堆栈的访问几乎为零。特别是,我们描述了一类新的覆盖式和侧信道缓存攻击,称为数据包追逐,通过使用精心构建的内存访问模式和网络数据包流在LLC中制造任意冲突来利用这种争夺。

我们进一步表明,网络驱动程序使用的数据包缓冲区的位置(在缓存中),以及它们被填充的顺序,很容易被攻击者发现,这大大减少了跟踪被追逐的数据包序列所需的探测量。

我们在本文中所描述的基于数据包追逐的隐蔽通道,通过在末级缓存中引起确定性的争夺,允许一个与本地DDIO主机上的服务器守护进程一起隐蔽运行的间谍进程从网络上的远程客户端上运行的木马进程接收秘密信息。我们表明,尽管木马进程只发送广播数据包,而且间谍进程与面向网络的服务器守护进程(可能是跨容器和跨虚拟机)完全隔离,并且进一步缺乏对网络堆栈的任何访问,但这种秘密通信手段是可行的,并且可以在高带宽下实现。

除了秘密通道,我们还描述了一种新型的基于数据包追逐的侧信道攻击,这种攻击利用了和网络浏览器同时运行(或在网络浏览器内)的本地间谍进程。在我们的实验中,在客户端的间谍程序是与浏览器(如Mozilla Firefox)同时运行的,它能够在不接入网络的情况下对远程受害者的网站访问进行指纹识别。特别是,这种攻击使攻击者能够根据数据包大小模式识别受害者的网络活动。这种类型的网络指纹可以被一个政府用来识别被禁止的网站的访问,或者攻击者可以仅仅通过成功登录会话的指纹来识别一个安全组织的成员(然后进行更有针对性的攻击)。

此外,本文还描述了一种基于软件的短期缓解措施,称为环形缓冲区随机化,以及一种自适应地将LLC划分为I/O和CPU分区的硬件防御机制,防止I/O数据包驱逐CPU或被攻击者的缓存块。与存在漏洞的原始DDIO相比,我们在本文中描述的自适应分区防御的性能开销小于2.7%。

本文的主要贡献如下:

(1) 在DDIO开启的情况下,很容易发现普通网络驱动的包缓冲区的位置;

(2) 每发送一个数据包的大小(以缓存块为增量)也可以被发现;

(3) 被发现的缓冲区被重复访问的顺序也可以被推断出来;

(4) 在网络上发送数据包的木马和另一台机器上的间谍之间可以建立秘密通道;

(5) 数据包大小的序列/模式会在侧信道上泄露敏感信息,如网络访问活动的痕迹;

(6) 提出了一种短期的纯软件随机化方案以及自适应的缓存分区方案,以最小的性能开销抵御该攻击。

2. 背景和相关工作

本节提供了网络数据包处理、DDIO和相关网络优化、基于网络和I/O的攻击以及缓存攻击的背景知识。

A. 网络数据包的旅程

当一个应用程序通过网络发送数据时,通常会发送一个数据流;而传输层的责任是将大的消息分解成网络层可以处理的小块。最大可传输单元(MTU)是指可以通过传输介质发送的最大连续数据块。例如,以太网MTU是1500字节,这意味着以太网帧可以携带的最大IP数据包(或其他有效载荷)是1500字节。加上以太网头部的26个字节,则最大帧为1526字节。

当NIC驱动程序初始化时,它首先分配一个用于接收数据包的缓冲区,然后创建一个描述符,其中包括接收缓冲区大小及其物理内存地址。然后,它将接收描述符添加到接收环 (rx ring),这是一个驱动器和 NIC 共享的循环缓冲区,用于存储传入的数据包,直到它们可以被驱动器处理。然后,驱动程序通知 NIC,它在 rx 环中放置了一个新的描述符。NIC 读取新描述符的内容,并复制大小和物理地址到其内部存储器。在这一步,初始化完成,NIC就可以接收数据包了。

Packet Chasing:通过缓存侧信道监视网络数据包

除了PRIME+PROBE之外,还提出了其他多种缓存攻击的变种。FLUSH + RELOAD使用Intel的CLFLUSH指令将目标地址从缓存中驱逐出,然后在测量阶段,攻击者重新加载目标地址并测量其访问时间。但它依赖于间谍程序和受害者之间的共享内存,并且需要访问精确的定时器。PRIME+ABORT利用英特尔的事务性内存扩展(TSX)硬件来装载无计时器的末级缓存攻击。

文献中已经提出了一些防御措施来缓解缓存时序通道。这些缓解策略包括识别软件中的泄漏,观察无规则缓存行为,在硬件设计时关闭通道,动态缓存分割,将物理内核严格保留给安全敏感线程,随机化,内存跟踪遗忘,以及使用诱饵加载微操作的缓存状态混淆。

E. I/O设备和驱动程序的安全性

一些针对设备驱动程序的安全攻击已经公布。Thunderclap描述了一种颠覆输入输出内存管理单元(IOMMU)保护的攻击,以暴露DMA功能的I/O外设可用的共享内存。Zhu等人展示了另一种绕过IOMMU并危及GPU驱动的攻击,以利用GPU微代码获得对CPU物理内存的完全访问。为了解决这些漏洞,研究者们将重点放在隔离设备驱动上,当设备驱动出现bug或有故意恶意的代码时,要使操作系统安全。Tiwari等提出了一个完整的系统,该系统包括一个I/O子系统和一个微内核,通过监视和控制系统的信息流,实现隔离和安全通信。

NetCAT是我们的”追包”攻击的一个并发工作。它描述了一种利用类似底层漏洞的攻击。然而,本工作和NetCAT在许多重要方面存在差异。首先,NetCAT只检测数据包的到达时间,而Packet Chasing有能力同时检测每个数据包的到达时间和大小–后者更可靠,噪音更小。这使得基于Packet Chasing的攻击有机会发动更强大的攻击,比如我们在本文中描述的网络指纹攻击(第五节)。

NetCAT也是我关注的一篇文章,发表在 S&P 2020

其次,与Packet Chasing不同,NetCAT需要DDIO和RDMA技术的存在,限制了其通用性。因此,要缓解NetCAT,只需禁用DDIO或RDMA即可。然而,正如我们在本文中所展示的,即使在没有这些技术的情况下,Packet Chasing攻击也是实用的。因此,我们也提出了一种更复杂而又高性能的防御措施来缓解攻击。

3. Packet Chasing,发起攻击

我们对加载到Linux Kernel 4.4.0-142版本中的英特尔千兆以太网络(IGB)驱动5.3.5.22版本进行分析和攻击。我们在戴尔PowerEdge T620服务器上运行攻击,该服务器使用Intel I350网络适配器,由两个Intel Xeon CPU E5-2660处理器运行。每个处理器都有一个20 MB的末级缓存,有16384个缓存集。为了对末级缓存进行PRIME+PROBE,我们使用Mastik微架构侧信道工具包0.02版。

我们的攻击包括两个阶段。一个是离线阶段,攻击者恢复缓冲区的序列,另一个是在线阶段,攻击者利用这些信息来监控传入的数据包。

A. NIC驱动的解构

虽然本小节的代码样本是针对英特尔千兆以太网(IGB)驱动程序的,但我们注意到这些见解是可以通用的。最初的以太网IEEE 802.3标准将以太网帧的最小尺寸定义为64字节,最大尺寸为1518字节,后来最大尺寸增加到1522字节,以允许VLAN标记。由于驱动程序和网卡事先并不知道传入数据包的大小,所以网卡必须分配一个可以容纳任何大小的缓冲区。IGB驱动程序为每个帧分配一个2048字节的缓冲区,并将最多两个缓冲区打包成一个4096字节的页面,该页面将与网络适配器同步。为了保证兼容性,建议设备驱动程序在为DMA映射内存区域时,只映射在页边界上开始和结束的内存区域,而页边界也保证是缓存线边界。另外,在主机处理数据包时,rx环缓冲区用于暂时保存数据包。虽然在环中采用更多的缓冲区可以降低丢包率,但也会增加主机内存的使用量和缓存的占用。因此,虽然英特尔I350适配器支持的最大大小是4096个缓冲区,但IGB驱动程序中的默认值是设置为256个。

linux内核在DMA API中,为设备驱动程序提供了两种不同类型的DMA内存分配。相干内存(或一致内存)和流式DMA映射。相干内存是DMA内存映射的一种类型,对于这种类型的内存,设备或处理器的写入可以被处理器或设备看到和读取,而不需要显式同步,也不用担心缓存效应。但是,处理器在通知设备读取该内存之前,必须先刷新写缓冲区。因此,一致内存在某些平台上可能会很昂贵,因为它由于写障碍和缓冲区的刷新,总是需要等待。缓冲区本身使用流式DMA映射,而环描述符则使用相干内存映射。因此,设备和驱动程序对环描述符有相同的视图。同时,这也使得对rx描述符环的写入成本很高。因此,为了避免改变rx描述符的内容,驱动程序在接收数据包后通常会重复使用缓冲区,而不是分配新的缓冲区。所以,驱动程序通常只分配一次缓冲区,并在整个驱动程序的生命周期中重复使用。

Packet Chasing:通过缓存侧信道监视网络数据包

参考:https://www.jianshu.com/p/0607c5f62c51

Packet Chasing:通过缓存侧信道监视网络数据包

参考:https://blog.csdn.net/scarecrow_byr/article/details/82584489

Packet Chasing:通过缓存侧信道监视网络数据包

通过将监控的缓存集数量缩小到只有256个可能的缓冲区起始位置,我们能够看到NIC设备在接收数据包时缓存中的清晰足迹,如 图7 所示。在这个实验中,我们依靠一个远程发送者,他与间谍程序在同一个网络上,并不断向网络发送广播以太网帧。为此,我们使用Linux raw socket,它可以生成任意大小的广播以太网帧。由于协议字段是未知的,这些帧会在驱动程序中被丢弃。因此,我们所看到的效果只是由驱动程序或适配器访问缓冲区引起的,而没有内核网络栈的任何活动。在样本25k左右,发送者开始发送数据包,并且一直持续到样本100k。在一些缓存集中,例如,缓存集编号53,我们不看到任何活动,那是因为没有一个NIC缓冲区被映射到这些集合。

Packet Chasing:通过缓存侧信道监视网络数据包

攻击可以区分出不同大小的数据包流,只需要检测到达的数据包是小数据包流还是大数据包流(本质上是二进制信号),可以来构建带宽达到1950字节/秒的远程隐蔽信道(详见第四章)。然而,如果我们用更细的粒度来区分数据包大小,每个数据包都会发送多个比特的信息,我们就可以把它变成一个更强大的通道。下面的小节描述了我们在执行PRIME+PROBE时用来进一步缩小监测集的方法。

C. 通过高速缓存追逐数据包

攻击者因为不知道哪些缓冲区会先被填满,所以只能一次性探查所有256个页对齐的缓存集来检测传入的数据包,然后再探查更多的缓存集来检测数据包大小。然而,如果我们知道驱动中缓冲区被填充的顺序,那么我们实际上可以通过只探测下一个预期缓冲区对应的缓存集来追赶缓存上的数据包,建立一个强大的高分辨率攻击。我们表明,在一次性统计分析阶段,几乎可以完全恢复缓冲区的序列。由于缓冲区总是被回收,然后返回到环中,因此在驱动的生命周期内,环中缓冲区的顺序是保持不变的。

算法1 描述了我们用来恢复序列的 SEQUENCER 过程。它包括三个步骤。首先,在 GET_CLEAN_SAMPLES 步骤中,我们收集Nsets缓存集的缓存探测样本。为此,我们从构建页对齐的NIC缓冲区的驱逐集开始。然而,有时我们在一些集上会出现总是漏掉的情况,这很容易被先验观察到。对于这些缓存集,我们只需使用页对齐缓冲区的第二个缓存块来代替第一个缓存块。

Packet Chasing:通过缓存侧信道监视网络数据包

最后一步,MAKE SEQUENCE,就是遍历我们在前面几步中建立的图,从一个随机节点开始,继续向前移动,直到到达同一个节点。需要注意的是,由于最后的序列是一个环,其中每个节点的内度和外度正好是一个,所以起始节点的选择并不会改变结果。

虽然这个过程可以恢复被映射到Nset中的缓冲区的顺序,但它只能在我们监控有限的一部分页对齐的缓存集的情况下才能做到这一点(我们最多成功监控到64个缓存集)。这是因为如果我们在监控列表中包含更多的集,那么探测时间会变得比检测传入数据包的顺序所需的时间要长。所以我们首先找到32个缓存集的序列,然后我们用前31个节点(节点0到节点30)加上一个候选节点(如32)重复sequencer过程,我们尝试找到候选节点在序列中的位置。然后,我们重复同样的过程,在节点序列中移动,直到我们在序列中找到所有缓存集的位置。

有时,两个连续的缓冲区被映射到一个集合中。例如,考虑图9 中93号和98号缓冲区被映射到2号集合的情况。通过我们的方法,我们不会在第一轮就捕捉到这些情况,但是从一开始,当我们遇到一个介于两者之间的缓冲区时,我们可以在图中把两者分开。如果它们在最后一环中真的是连续的(不太可能),那么缓冲区基本上就会被合并,但这对我们创建隐蔽通道的机制没有影响,而且对我们观察到的网络指纹泄漏攻击中的整体指纹影响很小。

我们测量Levenshtein距离来量化我们获得的序列和我们从驱动设备中获得的真实序列之间的差异。两个序列之间的Levenshtein距离是将一个序列改变成另一个序列所需的最小单字符编辑数(即插入、删除或替换)。我们在表I 中看到了这个实验的结果,对探查速率进行微调是一项颇具挑战性的任务,因为它需要足够长的时间,以使每个传入数据包的活动仅接触一个样本,并且还需要足够小,以免丢失传入连续数据包之间的时间关系。否则,我们会发现所获得序列的准确性下降。然而,在我们的隐蔽信道构造中,很多攻击场景下,我们只需要找到环中相隔足够远的缓冲区,所以序列的小误差是可以容忍的。

Packet Chasing:通过缓存侧信道监视网络数据包

为了估计错误率,我们再次使用伪随机比特序列的发送和接收数据之间的编辑Levenshtein距离。图11 显示了我们的编码方案的带宽和错误率,以及改变探测速率的效果,即我们在连续探测之间等待的时间。在不同的探测速率下,信道的带宽几乎是不变的,这是因为这里的限制是线路速率。我们使用的是1Gb/s的以太网链路,传输的是平均大小为192字节的数据包。帧大小为192的数据包的最大帧速率约为每秒50万帧。由于我们是每256个数据包发送一个符号,所以理论上我们的最大带宽被限定在每秒1953个符号。通过对三个符号进行编码,这个追包隐蔽信道的带宽可以达到3095 bps。但是,随着我们减少探测时间,错误率会降低。这是因为在两次连续的探测之间有较长的等待时间,我们就会提高捕捉到缓存集上不相关的活动的概率。当我们使用二进制编码时,我们同时使用缓存集2和缓存集3的样本,如果它们在一个窗口内都有活动,我们就解码为”1″。因此,错误率比三元编码略低。

Packet Chasing:通过缓存侧信道监视网络数据包

d) DDIO/DCA的可检测性和作用。在DDIO存在的情况下,携带隐蔽信息的数据包是很难被检测和过滤的(比如被防火墙系统丢弃发送到受害节点的数据包),因为这些数据包可以是普通的广播数据包,比如DHCP和ARP,甚至不要求这些数据包的目的地是运行了间谍程序的主机。这是因为,在DDIO/DCA的情况下,网络适配器会直接将数据包传输到处理器的末级缓存中,只有在这之后,驱动程序才会检查每个帧的头,并丢弃那些不针对该机器中任何协议的数据包。也就是说,在启用DDIO后,即使A只向同一网络中的C机发送数据包,我们也可以在A机和B机之间建立通道。

DDIO使Packet Chasing获得更清晰的信号,因为有效负载的缓存块与属于数据包头的缓存块同时出现在缓存中。这使得该攻击能够探测相邻的缓存块,并快速检测每个数据包的大小。然而,如果DDIO被禁用或不存在,数据包的传输过程就会有所不同。首先,网卡将数据包的报头存储在内存中,然后驱动程序读取报头,并根据报头字段对数据包进行处理。这样就把包含头的缓存块带入缓存中。对于大多数常见的高层协议(如http),软件栈会在数据包报头到达后不久访问数据包的其他部分。

在没有DDIO的时候,I/O写入和驱动读取之间的延迟成为攻击中的一个因素。在这种情况下,攻击者应该将探测时间设置为大于该延迟。当考虑了该延迟后,数据包的缓存足迹与DDIO情况下保持一致。然而,增加探测间隔会导致每个间隔中捕获更多的噪声。但正如《Direct cache access for high bandwidth network i/o》中表征的那样,几乎100%的数据包的延迟都小于20k周期。这个延迟还取决于数据包的大小。对于小于5个缓存块的小数据包,因为驱动程序会将这类数据包复制到另一个缓冲区,有效载荷几乎会在数据包头被访问后立即被访问。在这种情况下,不使用DDIO的攻击与使用DDIO的攻击一样容易检测到小数据包的数据包大小。

简而言之,DDIO使攻击更隐蔽,更可靠(噪音更小)。但如果没有DDIO,攻击也完全可以实现。举个例子,下一节介绍的网络指纹攻击会安装在有DDIO和没有DDIO的系统上。

5. Packet Chasing:利用包的大小

在本节中,我们将介绍一个Packet Chasing攻击的应用示例,在这个应用中,我们利用数据包大小的高分辨率样本来获取同一地点用户的浏览数据信息。例如,间谍程序可能在等待受害者进入某个网站后再发起一些行动,如密码检测攻击。

这种简单的攻击包括两个阶段。首先是离线阶段,攻击者生成感兴趣的不同网站的数据包大小痕迹,然后处理这些痕迹,计算出每个网站的代表性痕迹。这只是对数据包大小进行逐点平均,从而得到这些点(平均数据包大小)随时间变化的矢量。

在为攻击做准备的过程中,攻击者建立环形缓冲器的序列,如前面所述。之后,该攻击者启用了监听模式,在这个模式下,它不断地监视序列中第一个缓冲区的前两个缓存块,直到她发现一个窗口,其中缓存块0和缓存块1都有活动。这表明有数据包正在填充该缓冲区。然后,与秘密信道中的接收器类似,在每次检测到活动时,攻击者就会移动到序列中的下一个缓冲区。每次,攻击者都会监视缓冲区第一半页的前四个块,以及缓冲区第二半页的前四个块。这是因为当有大数据包时,驱动程序会在半页之间切换(见第三节 – A),这使得攻击者可以区分四个级别大小的数据包。在收集到数据包大小的样本后,间谍程序将收集到的向量送入一个简单的基于相关性的分类器,该分类器计算收集到的样本与不同目标代表性痕迹的交叉相关性。

图13 显示了我们通过Packet Chasing获得的信号和使用tcpdump数据包分析器捕获的实际数据包大小的例子。使用Mozilla Firefox 68.0.1版本浏览器访问网站。图中显示了数据包大小,即使是在缓存块粒度下,也可以成为被访问的网页的标识符。数据包通常在频谱的两侧都很拥挤,它们要么是携带了一个非常大的消息,被碎片化成了MTU大小的帧,要么是小的控制包。但是大消息的最后一个包可以落在1缓存块到MTU之间的任何地方,给我们提供了一个很好的网页指示。此外,将数据包大小与Packet Chasing从数据包中获得的时间信息相结合,给我们提供了足够的信息来区分webpages。我们使用一个小型的封闭数据集来评估我们的指纹攻击,其中有5个不同的网页:facebook.com、twitter.com、google.com、amazon.com、apple.com。在这个实验中,我们检查了两种攻击情景,一种是有DDIO的,一种是没有DDIO的。在我们的1000次实验中,使用DDIO的Packet Chasing检测出正确网站的准确率为89.7%,而禁用DDIO后,准确率降至86.5%。这两种攻击的区别是增加了探测时间(导致更多的噪声),如果数据包头到负载的延迟很高,那么错过大数据包的概率也会增加。

Packet Chasing:通过缓存侧信道监视网络数据包

b) 防的性能结果。图14 显示了我们的自适应缓存分区方案的性能,比较了Nginx网络服务器的平均吞吐量。平均而言,我们观察到的吞吐量损失不到2%。这主要是由于CPU缓存分区的缓存行数减少,导致LLC未命中率略有上升(也见图15 )。该图还显示了防御策略对末级缓存大小的敏感性。在末级缓存大小为20 MB的情况下,我们的方法会产生最大2.7%的吞吐量损失。图15 进一步分析了防御的性能,显示了没有任何直接缓存访问(No DDIO)的基线与有DDIO访问和我们的自适应分区防御策略的内存流量和LLC未命中率。自适应分区和DDIO都能有效降低内存流量。自适应分区方案的内存流量增加在DDIO的2%以内。

Packet Chasing:通过缓存侧信道监视网络数据包

为了比较自适应缓存分区和我们提出的基于软件的缓解措施(第六节),我们设计了另一个使用wrk2工具的实验。在这个实验中,我们向目标主机上的Nginx Web服务器发送请求。wrk2工具使用8个线程,1000个打开的连接,目标吞吐量设置为每秒140k次请求。图16 显示了本次实验的结果。除了自适应缓存分区和vanilla IGB基线之外,我们还研究了另外三种提出的方案:完全随机化的环形缓冲区方案,为每个传入数据包在随机存储位置分配新缓冲区,以及两个部分随机化方案,在收到指定数量的数据包后,定期重新分配缓冲区 – 我们在收到1k或10k个数据包后随机化。请注意,在我们的设置中,追包攻击目前至少需要65536个数据包才能完全解构环形缓冲区(找到缓存块位置和序列信息),另外还需要100个数据包才能发动合理的指纹攻击。自适应分区方法在横坐标99%的时候,延迟只发生3.1%的损失,而完全随机化方法则发生41.8%的损失。我们在这个实验中使用了千兆以太网,但我们预计随机化的性能成本会随着链路速率的提高而加剧。

Packet Chasing:通过缓存侧信道监视网络数据包

8. 披露

我们向英特尔披露了这个漏洞,解释了该漏洞的基本实质,并提供了更多细节。MITRE 在 Common Vulnerabilities and Exposures(CVE)数据库中已经分配了一个编号:CVE-2019-11184,该漏洞被列为中度严重漏洞。

9. 结论

本文介绍了Packet Chasing,这是一种新型的缓存侧信道攻击,它通过一个无法访问网络、内核或进程的间谍程序来检测通过网络发送的数据包的频率和大小。DDIO网络优化不是导致这种攻击的原因,但却大大促进了该攻击。这项工作表明,网络驱动程序的内部工作原理很容易被设置攻击的间谍程序解构,包括用于接收数据包的每个缓冲区的确切位置(在缓存中)以及它们被访问的顺序。这两个信息极大地减少了间谍程序为跟踪网络数据包序列而必须进行的探测次数。这些信息使得远程发送程序和网络上任何地方的间谍程序之间可以有几个隐蔽的通道,并有不同的带宽和精度权衡。它还可以实现侧信道信息泄漏攻击,检测受害者进程的网络活动。

除了隐蔽通道和侧信道攻击外,本文还描述了一种自适应的缓存分区方案,与易受攻击的DDIO基线相比,该方案以极低的性能开销减轻了攻击。

来源:abin在路上

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月17日
下一篇 2020年7月17日

相关推荐