研究揭露AMD处理器存在漏洞,可致两种新型侧信道攻击
根据最新发布的研究,从2011年至2019年,AMD处理器一直存在以前从未公开的漏洞,这些漏洞使它们容易受到两种新型的侧信道攻击。
这种新型的潜在攻击手段被称为“Take A Way”,利用AMD Bulldozer微体系结构中的L1数据(L1D)缓存预测变量,从处理器获取敏感数据,并在恢复加密过程中使用密钥,这对设备安全产生极大的威胁。
这项研究由格拉茨技术大学和计算机科学与随机系统研究所(IRISA)的一个研究团队发表,他们于2019年8月向AMD披露了这些漏洞。
AMD在其网站上发布的一份咨询报告中说: “我们注意到一份新的白皮书,该白皮书声称可以利用AMD CPU的潜在漏洞,恶意行为者借此可以操纵与缓存相关的功能,从而可能以意想不到的方式传输用户数据。”
“然后,研究人员将该数据路径与现有的恢复软件或推测的侧通道漏洞进行配对。AMD认为这些不是新型攻击。”
尽管该通知并未具体说明防范攻击的细节,但该论文的主要研究人员之一Vedad Hadžić表示,该漏洞利用活动仍然很活跃。
随着英特尔CPU审查出一系列漏洞问题,从Meltdown,Spectre,ZombieLoad到最近无法修补的CSME固件缺陷,该研究提醒人们,处理器架构要完全没有威胁是不可能的。值得注意的是,研究中列出的一些合作者也没有发现Meltdown,Spectre和ZombieLoad漏洞。
Collide+Probe和Load+Reload
与Intel Spectre攻击一样,这两种新型攻击被称为“Collide+Probe”和“Load+Reload”,利用上述提及的L1D缓存预测变量,可以访问原本不可访问的数据。
研究人员概述说:“借助Collide+Probe,攻击者可以在分时共享逻辑内核时监视受害者的内存访问,而无需了解物理地址或共享内存。通过Load+Reload,我们利用预测器的方式在同一物理内核上获得受害者的高精度内存访问跟踪。”
L1D缓存预测变量是一种优化机制,旨在减少与访问内存中缓存数据相关的功耗:
“预测变量使用虚拟地址上未记录的哈希函数来计算μTag。该μTag用于在预测表中查找L1D缓存方式。因此,CPU必须仅以一种方式比较缓存标记,而不是所有可能的方式,以此来降低功耗。” |
新发现的缓存攻击通过反向哈希函数工程来跟踪L1D缓存的内存访问而起作用。虽然Collide+Probe在AMD的L1D缓存预测变量中利用了μTag冲突,但Load + Reload却利用了预测变量处理内存中别名地址的方式。
换句话说,可以使用这两种攻击技术从另一个进程中窃取敏感数据,与攻击者或在CPU的不同逻辑内核上运行的同一进程,共享相同内存。
为了证明侧信道攻击的影响,研究人员建立了一个缓存隐式通道,从AMD CPU上运行的进程中提取数据到另一个隐蔽的进程中,利用80个通道实现最大传输速率588.9kB / s,同时,在AMD Ryzen Threadripper 1920X处理器上并行执行。
随着越来越多的主流云平台比如Amazon、Google和Microsoft采用AMD的EPYC处理器,在云环境中的攻击也引起了人们的极大关注。
此外,安全研究人员能够绕过浏览器中的地址空间布局随机化(ASLR),从而成功地在某些常见的浏览器(即Chrome和Firefox)上发起Collide + Probe攻击,减少了熵并找到了地址信息。
ASLR是一种安全性操作,用于随机化和屏蔽CPU内存中代码和关键数据区域的确切位置。换句话说,它阻止了潜在的攻击者猜测目标地址并跳转到内存中的特定区域。
研究人员指出:“在Firefox中,我们能够将熵降低15位,成功率为98%,平均运行时间为2.33 s(σ= 0.03s,n = 1000)。使用Chrome,我们可以减少数位,成功率为86.1%,平均运行时间为2.90秒(σ= 0.25秒,n = 1000)。”
随后,研究人员使用相同的Collide+Probe攻击来尝试泄露内核的内存数据,甚至从T表中恢复加密密钥,使用AES密码存储加密操作的中间数据。
防范此类攻击
目前已经可以通过各种纯硬件、硬件和软件的更改以及纯软件的解决方案来防范这两种攻击,其中包括以允许动态地暂时禁用预测变量的方式和清除状态的方式设计处理器。内核模式和用户模式之间切换时清除预测变量的模式状态。
这不是第一次发现AMD处理器容易受到包括Spectre在内的CPU攻击的影响,因此,该公司也发布了大量补丁程序。
AMD是否会修复研究中新揭露的漏洞目前尚不清楚。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
告诉你真实的四大通信运营商5G之实力
近日,我们国家确定了2020年“新基建”战略规划,其中5G被摆在最重要的位置之一,被业内分析人士认为是今年重点项目中的“八仙”之一。 其于宏观政策方面的利大利好,四大通信运营商的5G建设也就成为焦点之一。截止当前,我们一起看看各自的进度及未来计划。 中国移动 从去年的5G牌照正式发放起,中国移动就一路抢跑(6月6日发放5G商用牌照,6月10日中国移动就发布一期5G集采公告),截止2019年底,共建设5G基站5万个。截止今年1月7日,中国移动曾公布5G套餐用户数量为302万户,网内激活5G手机380万台,5G特色业务累计体验用户超过1亿。而至1月底时的数据则达到了5G套餐客户数673.6万户,直接实现了翻倍效果。 而2020年,中国移动的二期5G集采已经开始,今年计划建立5G基站25万个,5G用户发展目标1亿户,力争第四季度实现SA商用。 目前,中国移动已有5G基站超8万个,年底总基站数30万目标不变,不过以其进度,很可能会轻松超越这一目标。另外中国移动的5G终端使用“三不策略”,即不换卡、不换号、不登记,直接换个5G手机登入5G网络,就能成为真正的5G用户。 中国电信 由于中国电信和中...
- 下一篇
接口默认方法是什么鬼
接口之所以成为接口,就在于它没有实现,只是声明。但后来一切都变了,Java 里出现了默认方法,C# 也出现了默认方法。接口已经不像传统意义上的接口,其概念开始向抽象类靠近,一个纯抽象的东西,突然出现了实体,于是开始傻傻分不清了。 世界已经变了,可他是怎么开始改变的呢? 1. 缘起 虽然本文有提到 Java,但是笔者近年主要还是在写 C# 程序,所以未明确语言的命名规范会更倾向 C# 的规范一些,敬请谅解。 曾经,我们定义了 IStringList 接口,它声明了一个列表: 这只是个例子,为了避免引入更多的技术概念,这里没有使用泛型举例。 interface IStringList { void Add(string o); // 添加元素 void Remove(int i); // 删除元素 string Get(int i); // 获取元素 int Length { get; } // 获取列表长度 } 不管怎么说,这个列表已经拥有了基本的增删除改查功能,比如遍历,可以这样写 IStringList list = createList(); for (var i = 0; i &...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6