High-Resolution Side Channels for Untrusted Operating Systems【ATC‘17】

news2024/11/24 16:09:48

目录

  • 摘要
  • 引言
    • 贡献
      • • 一个不受信任的操作系统的两个新的高分辨率侧通道来攻击受保护的应用程序;
      • • 对 libjpeg 的显着改进攻击和针对 VC3 的新攻击;
      • • 侧通道攻击对不受信任的操作系统的重要性增加。
  • 系统模型
  • 背景
    • Intel SGX
    • 页面错误通道
      • 时间限制
      • 空间限制
    • Prime+Probe缓存侧信道攻击
  • 设计

摘要

特征丰富的大众市场操作系统具有较大的可信计算基础(TCBs)和较长的漏洞历史。像 Overshadow、InkTag 或 Haven 这样的系统试图从应用程序的 TCB 中删除操作系统 (OS),同时保留其功能。

然而,不受信任的操作系统对大多数物理资源的控制使其成为比传统非特权侧通道攻击者发起侧通道攻击的更好位置。

最初的攻击集中在页面错误通道上,展示了三个遗留应用程序的显著信息泄漏。

我们为不受信任的操作系统提出了两个新的侧通道,它使用计时器中断和缓存丢失来实现比页面错误通道更高的时间和空间分辨率。

我们利用不受信任的操作系统对硬件的控制来减少侧通道中的噪声,以便在目标的单个运行中成功攻击。我们证明了我们的侧通道支持针对新的SGX应用程序的攻击,如VC3,这些应用程序旨在信任操作系统。我们还展示了对libjpeg的新攻击,该攻击提取的信息比页面错误通道攻击多两个数量级的图像。

引言

传统上,操作系统 (OS) 保护应用程序数据的完整性和机密性,被认为是应用程序可信计算基础 (TCB) 的一部分。然而,数十年的经验表明,保护大型、功能丰富且广泛部署的商品操作系统极难。云托管服务的出现增加了对抗性云运营商的新威胁。

最近,已经提出了像Overshadow[14]、InkTag[27]和Haven[9]这样的系统,通过排除TCB中的操作系统并直接保护应用程序来改变保护范式。这些系统使用受信任的管理程序或硬件为应用程序提供不受不受信任的操作系统保护的内存以及用于在应用程序和不受信任的操作系统之间传输控制的受控机制。Haven还可以保护应用程序免受Iago攻击[13]。

然而,Xu等人[44]证明了对抗性操作系统可以针对运行在SGX上的受保护应用程序发起确定性侧通道攻击。他们的攻击可以从Haven和InkTag保护的三个遗留应用程序的单次运行中窃取JPEG图像的文档和轮廓。攻击比非特权攻击者的传统侧通道攻击更强大,因为不受信任的操作系统保留了大多数硬件的控制。他们利用了应用程序的一些内存访问依赖于秘密数据这一事实。对抗性操作系统通过使页表无法访问的页面来观察这些访问。每个生成的页面错误都会在访问时刻中断应用程序,并揭示操作系统的页面地址,允许对手推断影响内存访问序列的秘密

无法观察到单个代码页面内的函数(例如,strlen 中的紧循环)和单个页面内的数据访问(例如,索引到小数组),因为页面错误通道的粒度受 4 KB 页面大小的限制。这对基于页面错误的攻击的时间和空间分辨率施加了根本限制。

在本文中,我们提出了两个新的侧通道,显着提高了从对抗操作系统发起的攻击的时间和空间分辨率。我们证明了新的攻击可以针对仅基于页面错误通道对攻击免疫的应用程序发起。为了提高时间分辨率,我们使用高精度计时器来近似单个步进。我们使用缓存侧通道将空间分辨率从4 KB提高到64字节缓存行

我们的缓存侧通道比非特权攻击者控制的传统缓存侧通道具有更高的精度,因为操作系统控制硬件。OS可以在感兴趣的内存访问之前和之后立即分解为应用程序,并通过对调度的控制来减少缓存污染。

为了证明我们的新侧通道的强大功能,我们为VC3[39]和libjpeg[1]构建了新的攻击。VC3 是一个安全的 MapReduce 框架,它通过在 SGX 飞地中运行来保护分布式 MapReduce 计算的机密性 [29]。在假设操作系统可信的情况下,[44]中攻击未修改的遗留应用程序已经编写。然而,VC3 是设计具有小可信计算基础的新代码,并在对抗操作系统的 SGX 飞地中运行。我们对VC3的攻击是一系列攻击,它从VC3代码的不同部分提取各种信息。仅使用页面错误通道无法执行单个攻击。我们对 VC3 的攻击恢复了 WordCount 应用程序几乎三分之二的输入文档。与对libjpeg[44]的早期攻击相比,我们的新攻击可以提取两个数量级的信息,并恢复细节更丰富的图像。

贡献

我们证明了

• 一个不受信任的操作系统的两个新的高分辨率侧通道来攻击受保护的应用程序;

• 对 libjpeg 的显着改进攻击和针对 VC3 的新攻击;

• 侧通道攻击对不受信任的操作系统的重要性增加。

系统模型

如图1所示,该系统由一个或多个由约束不可信操作系统的监视器移植的应用程序组成。
图1监视器可以是系统管理程序,也可以是CPU的一部分。它对操作系统施加了以下限制:

1、它保证了可信应用程序的安全内存。操作系统无法读取或写入此类内存。

2.它控制应用程序和操作系统之间的转换,确保操作系统只能在定义良好的入口点调用受保护的代码。这也允许监视器在转换期间保护应用程序不受CPU状态泄漏的影响。在发生意外转换(陷阱、中断)时,监视器会保存并清理CPU寄存器。

3.监视器采取反侧通道措施。

我们假设采取以下反侧通道措施。它是基于SGX[28]的,目前,SGX是唯一一种对侧信道采取严重措施的技术。

页面故障地址的底部12位(指定页面内的偏移量)对OS隐藏。

硬件调试设施(例如,调试寄存器、单步执行)被禁用。

硬件性能计数器已禁用。

Untrusted OS被认为是对抗性的——要么是恶意软件的结果,要么是因为它处于对抗性管理员的控制之下。在监视器施加的限制范围内,它可以采取任何操作损坏应用程序或从中提取信息。它可以访问系统上的所有硬件,监视器禁止的除外。这包括所有未受保护的内存、页表和计时器等系统设备。

应用程序受监视器保护。

我们的目标是处理机密信息并显示依赖于机密信息的内存访问模式的本地应用程序。我们假设应用程序二进制文件的至少某些部分是公共的,要么是因为它们属于未修改的遗留应用程序[9,14,27,44],要么是由于它们是公共应用程序平台的一部分[39]。

背景

我们描述了SGX[29]、页面故障通道[44]以及Prime+Probe缓存侧通道攻击[36]。

Intel SGX

英特尔SGX[6,26,29,34]是英特尔最近推出的一项CPU技术。SGX允许为受CPU保护的应用程序(飞地)构建隔离的内存区域,使其免受系统上运行的所有其他软件(包括操作系统)的影响。就我们的系统模型而言,SGX构成了一个监视器。附件仅限于在用户模式下运行,但由不受信任的操作系统使用新的特权指令构建。远程证明确保应用程序的所有者能够在泄露任何机密之前检测到操作系统的篡改。

SGX在很大程度上保持了操作系统的硬件接口不变,实现了与传统操作系统的兼容性,但也为操作系统提供了一个用于构建侧通道(如页面故障通道)的大型工具箱[44]。

然而,SGX包括一些反侧信道措施。SGX使得无法对飞地使用以下CPU功能:硬件断点寄存器(DR0-DR3)、单步执行(RFLAGS.TF)、最后分支记录(LBR)、基于精确事件的采样(PEBS)和硬件性能计数器。在飞地内发生异常或故障时,SGX屏蔽故障地址的十二个最低有效位。因此,不可信OS仅接收页面细粒度故障信息。

页面错误通道

徐等人描述了基于页面错误的侧通道攻击[44]。这些攻击利用了依赖输入的内存访问的优势以推断应用程序的秘密输入。

例如,如果每个用户登录都增加一个全局变量,那么对手可以计算对该变量的访问次数,以推断登录次数

为了检测全局变量是否被访问,对手可以使其所在的页面不可访问。对页面的任何访问都将触发页面故障

在最简单的情况下,对手可以使用故障地址来决定应用程序是否试图访问感兴趣的全局变量

然而,由于故障地址中的偏移是隐藏的,对手必须推断它。Xu等人提出使用页面故障序列来唯一识别数据访问或控制传输

基于页面错误序列的攻击仍然面临一个基本限制:页面错误只能在页面粒度下工作

以下两个示例不受页面故障通道攻击。

时间限制

图2(a)

图2a显示了一个简单的strlen实现。假设二进制代码在单个代码页上,字符串str在单个数据页上。len变量通常在寄存器中进行优化,因此对手无法使用。instrlen的一条指令从数据页读取str的一个字符。要执行它,攻击者必须使代码和数据页都可访问。但在此之后,strlen执行不会导致进一步的页面错误,从而阻止对手计算迭代次数和推断字符串的长度。【在这个循环中不再导致页面错误,这样的攻击的场景存在局限性】

空间限制

图2(b)

假设图2b中的表agentNames位于单个数据页上。由于页面错误地址的偏移量是隐藏的,因此对手无法使用对表的访问来推断变量agentCode的值。【这是粗粒度和偏移量隐藏导致的】

Prime+Probe缓存侧信道攻击

CPU中的小型快速缓存用于减轻内存访问对性能的影响。在存储器访问时,CPU将存储器内容复制到高速缓存中。对同一地址的后续访问可以从高速缓存以低得多的成本提供服务。这种复制以64字节缓存行的粒度进行。

一个内存位置映射到一小群缓存线,基于其一些地址位(本文中使用的Intel L1数据缓存的位6-11)的行。“英特尔一级缓存”使用一组8条缓存线(8路集合关联)。当内存访问当前不在缓存中时,必须收回组中的一行,为新内容腾出空间。

缓存通常由核心上运行的所有代码共享,甚至由整个CPU包共享。攻击者可以进行一系列内存访问,将内容加载到缓存中并完全填充。另一个程序随后的内存访问也会导致数据加载到缓存中,从而驱逐攻击者的一条缓存线

攻击者可以测量访问他之前加载到缓存中的内存位置以检测此类驱逐所需的时间。访问次数的增加表明被驱逐,不仅告诉攻击者发生了访问,还透露了访问地址的第6-11位。

这个过程被称为Prime+Probe[36]。用攻击者的内容填充缓存称为Prime步骤。测量内存访问时间称为Probe步骤。

设计

本节介绍我们执行同步、高分辨率侧信道攻击的技术。抽象地说,攻击者有两种能力:break,在应用程序上设置条件断点,并进行观察,检查其执行过程中的工件(例如,内存访问)。一种技术也可以同时提供这两种能力。使页面不可访问[44]允许中断(页面故障)和观察(页面故障地址)。

我们引入了两种新技术来克服页面故障通道的限制(第3.2节),并显著拓宽了受侧通道攻击的应用程序代码类别:

一种单步保护应用程序的技术。

高速缓存侧通道,用于观察高速缓存行粒度下的内存访问。

即使攻击者只能观察到单个应用程序的运行,这两种技术也能发挥作用。因此,任何受保护的应用程序都是攻击的潜在目标。

在可能的情况下,我们使用页面错误序列来推断内存访问,使我们能够仅在需要的短时间内部署高开销攻击。

【详细细节见论文】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序案例2-3:婚礼邀请函

文章目录 一、运行效果二、知识储备(一)导航栏设置1、导航栏的相关配置项2、利用导航栏组件2、在页面配置文件中对导航栏进行配置3、在全局配置文件中对导航栏进行配置 三、实现步骤 一、运行效果 “婚礼邀请函”微信小程序由4个页面组成,分别…

Springboot整合分页插件pagehelper

首先需要有一定的springbootmybatis的基础&#xff0c;才能使用顺畅 项目结构如下 引入依赖&#xff0c;springboot版本选的是2.7.16版本&#xff0c;jdk选的17&#xff0c; <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><…

基于微信小程序的房屋租赁系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有&#xff1a;户主微信小程序端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文…

OceanBase 数据文件缩容实践

本文章介绍了OceanBase集群关于数据文件的缩容场景&#xff0c;并提供一种缩容方案予以参考。 作者&#xff1a;关炳文&#xff0c;爱可生 DBA 团队成员&#xff0c;负责数据库相关技术支持&#xff0c;一步两阶梯&#xff0c;兼具勤奋与慵懒。 爱可生开源社区出品&#xff0c;…

浅谈单元测试:测试和自动化中的利用

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 浅谈单元测试是一件棘手的事情。我很确定测试人员在某个时候会抱怨开发人员没有正确地进行单元测试&…

Idea中使用Service管理微服务

前言 如何在本地一键启动很多个微服务&#xff0c;下面介绍下IDEA开发工具中得Services管理管理功能 一、第一步 1、在IDEA中下栏bar中如果存在Services,请看第二步。 2、如果没有请按照以下步骤打开 View -> Tool Windows -> Services 二、第二步 刚创建好的窗口是空…

论文浅尝 | 基于知识增强的多行为对比推荐

笔记整理&#xff1a;吴飞跃&#xff0c;东南大学硕士&#xff0c;研究方向为推荐系统 链接&#xff1a;https://doi.org/10.1145/3539597.3570386 动机 在实际推荐场景中&#xff0c;用户和物品之间存在多种类型的交互行为&#xff0c;如在线购物平台上的点击、标记为喜欢和购…

【算法专题突破】二分查找 - 704. 二分查找(16)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 题目非常简单&#xff0c;就是查找一个 target。 2. 算法原理 根据最基本的二分查找算法&#xff1a; 在一个…

Java代码随想录第一章:-数组理论基础,704. 二分查找,27. 移除元素 ,

一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 举一个字符数组的例子如图&#xff1a; 需要两点注意的是 数组下标都是从0开始的。数组内存空间的地址是连续的 正是因为数组的在内存空间…

Unity 发布WebGL平台,C#与JavaScript交互

发布H5平台&#xff0c;接入SDK&#xff0c;比如微信等&#xff0c;涉及到C#与JS的交互。 jslib&#xff08;JavaScript Library&#xff09;是Unity的一种机制&#xff0c;允许你在C#中通过JavaScript代码来执行一些操作。这是一种高级的技巧&#xff0c;主要用于一些特殊情况…

【QT】Qt的随身笔记(持续更新...)

目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt&#xff0c;并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…

Android AMS——APP启动流程

Android 应用启动方式主要有两种 , 冷启动和热启动。 冷启动:后台没有应用进程 , 需要先创建进程 , 然后启动 Activity ;热启动:后台有应用进程 , 不创建进程 , 直接启动 Activity ; 其实,还有一种问起动的方式,就是用户按了返回键退出应用,随后又从新启动,可是活…

【Python】{已解决}在命令行窗口查看的版本号与安装版本不一致问题

今天在使用一个新的第三方库的时候&#xff1a;先pip安装了一下&#xff0c;然后导入的时候报错了 然后以为是没有安装成功&#xff0c;就又pip了一下&#xff0c;发现已经成功安装了。 那是为什么呢&#xff1f; 是解释器出现了问题吗&#xff1f;于是我就去查看了一下pychar…

反射-认识反射

一、什么是反射 二、如何使用反射 1.第一步&#xff1a;加载类&#xff0c;获取类的字节码&#xff08;获取类的Class对象&#xff09; public class reflectTest {public static void main(String[] args) throws Exception {Class c1 Student.class; //通过类名得到学生类…

上班后很迷茫,到底该如何做一个合格的测试?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 如何做一个合格的测试&#xff1f;软件测试工程师的岗位职责到底是什么&#xff1f; 最初&#xff0c;我…

倒计时列表实现(小程序端Vue)

//rich-text主要用来将展示html格式的&#xff0c;可以直接使用这个标签 <view class"ptBox" v-for"(item,index) in orderList" :key"index"> <rich-text :nodes"item.limit_time|limitTimeFilter"></rich-text>…

vue+three.js中使用Ammo.js

直接通过npm i ammo.js安装进webpack的项目里调用时&#xff0c;会出现如下报错&#xff1a; ERROR in ./node_modules/ammo.js/ammo.js 1:1683-1696 Mo…

VMware中安装Ubuntu(2023年)

Ubuntu安装 前言 安装过程中电脑发热时正常的&#xff0c;这个还是稍微有点点大&#xff1b;下载的版本根据自己的喜好来&#xff0c;新版本肯定要比旧版本占用的空间更大&#xff0c;大家自行选择&#xff1b;仅供学习使用的话可以下载成熟稳定的版本&#xff0c;例如16、18…

【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e;例题1例题2例题3例题4 架构 - 案例分析 - 架构设计&#xff1c;SOA与微服务&#xff1e; 这里SOA与微服务的例题只对应找寻了几个&#x…

servlet开发-通过Tomcat部署一个简单的webapp

首先我们得下载安装Tomcat&#xff0c;推荐看Tomcat&#xff08;HTTP服务器&#xff09;下载以及认识&#xff0c; 我们将通过打印一个hello word的方式来熟悉servlet开发,通过Tomcat部署一个webapp的流程 servlet的含义 Tomcat提供了一系列的api接口&#xff0c;这些api背后…