REPTTACK: Exploiting Cloud Schedulers to Guide Co-Location Attacks

微架构攻击,如侧信道攻击、瞬时执行攻击和Rowhammer攻击,利用共享资源来破坏共处一地的受害者应用程序的保密性/完整性。 由于co-location是微架构攻击的一个基本要求,在这项工作中,我们研究了攻击者是否可以利用云调度器来满足微架构攻击的co-location要求。

具体来说,对于允许用户提交应用需求的云调度器(filter-score类型的),攻击者可以精心选择攻击者的应用需求来影响调度器,使其与目标受害应用co-locate。 这种攻击被命名为replication attack(REPTTACK)。

Background

cloud scheduler

论文主要针对的cloud scheduler一般遵循以下特征:用户提交自己的constraints;调度器根据constraints去选择具体的放置位置

micro-architectural attacks

一般micro-architectural attacks需要co-location。文章总结了一下这些攻击

  • side-channel attack
  • Transient execution attacks:Meltdown、Spectre
  • Rowhammer attack
  • Faults attack:利用计算机系统中存在的频率/电压调整机制的漏洞,诱发程序执行中的故障

METHODOLOGY

Targeted scheduler

在本文中,我们针对filter-score调度器。它被各种云协调系统广泛部署,包括OpenStack、Kubernetes和OpenNebula。 一般来说,这种调度器由两个阶段组成。

  1. 过滤:在这一步骤中,调度器排除了没有(足够的)所需资源或不符合其他规格的节点。在这个阶段之后,入围的节点列表将被传递到评分阶段。
  2. 评分:在这一步骤中,调度器试图在过滤步骤后的候选节点列表中找到最合适的节点。它根据节点可用的资源数量对每个节点进行评分,是否符合用户指定的偏好,并最终挑选出得分最高的节点。

我们在概念上将用户specification分为两类:

  • 资源specification:用户对资源的指定要求,包括CPU核心、内存空间、磁盘空间等。
  • affinity specification:指用户对集群中的节点的指定要求或前提条件。有两种类型的亲和规格
    • node affinity/anti-affinity:用户可以强迫调度器将应用程序调度到/不调度到具有特定资源或功能的节点
    • application affinity/anti-affinity:通过指定应用间亲和/反亲和,用户可以选择与某些类型的应用共同定位/不共同定位

在这项工作中,主要关注于affinity specification。

Attack strategy

正如之前所描述的,在调度算法中存在一些功能,允许用户提交额外的要求和要共处的节点和应用程序的偏好,使用户能够影响调度的结果。 这就暴露了漏洞并简化了实现co-location的过程,因为攻击者可以根据目标应用对这些功能规格进行有根据的猜测,并模仿这些规格来增加co-location的概率。

具体的攻击是这样的

  • 攻击者可以从检查目标调度器的文档开始,查看他们可以提交的调度要求,并识别类似于亲和规则的功能,允许用户指定对节点或共处应用的要求或偏好。
  • 我们假设攻击者有足够的关于受害者应用程序的信息,因此可以相对准确地猜测受害者用户可能提供的specification(节点的区域、节点上的特定硬件资源等)。
  • 然后,攻击者复制这些specification,将资源需求限制在发出攻击所需的最小数量(这样集群中的目标节点就不会因为资源限制而被错误地过滤掉)
  • 攻击者还可以使用应用间反亲和性(Kubernetes中的inter-pod反亲和性)将多个攻击实例分散在不同机器上。

一般来说,假设攻击者不能直接获得用户提交的specification。 在这种情况下,攻击者可以从研究目标受害者应用开始,确定是否有任何特殊要求(例如,受害者应用需要大量的GPU资源,并要求不与特定类型的应用共处一地,因为存在竞争,等等)。 其他用户的服务器的位置偏好也可以被利用,例如,往返时间信息被用来指定机器的标签,并作为基于Kubernetes的集群中的亲和力特征。

后面就是一些实验和mitigation了,感觉并不是很重要。