微架构攻击,如侧信道攻击、瞬时执行攻击和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。 一般来说,这种调度器由两个阶段组成。
- 过滤:在这一步骤中,调度器排除了没有(足够的)所需资源或不符合其他规格的节点。在这个阶段之后,入围的节点列表将被传递到评分阶段。
- 评分:在这一步骤中,调度器试图在过滤步骤后的候选节点列表中找到最合适的节点。它根据节点可用的资源数量对每个节点进行评分,是否符合用户指定的偏好,并最终挑选出得分最高的节点。
我们在概念上将用户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了,感觉并不是很重要。