量子时代隐患显露!苹果CPU漏洞被爆,Mac用户敏感数据易遭窃取

研究表明,一项使Apple M系列处理器速度更快的功能也使它们容易受到无法修补的新侧信道攻击。理论上,黑客可以提取秘密加密密钥,然后访问敏感数据。

这个新发现的概念验证攻击被称为“GoFetch”。

GoFetch基于一种称为数据内存依赖预取器(data memory-dependent prefetcher,DMP)的CPU功能,旨在提高执行代码时的计算机性能,该功能存在于最新的Apple M系列处理器中。DMP可用于Apple芯片和Intel第13代Raptor Lake CPU。

DMP通过预测接下来需要什么数据并提前准备数据来加快处理器的速度。然后,这些数据会提前从较慢的内存部分提取到较快的内存区域,例如CPU缓存。如果预测准确,现在就可以快速获得数据,从而提高计算机的性能。如果猜测错误,CPU会照常请求正确的数据。

图片

在一篇论文中,一个由七名研究人员组成的团队描述了此功能是如何泄露敏感信息的。在对Apple和Intel DMP进行逆向工程后,他们针对经典密码学的恒定时间实现开发了端到端密钥提取攻击。

图片

研究人员开发了一种新型的受害者不可知的选择输入攻击和相关的攻击原语,不需要攻击者和受害者共享内存。他们利用这些技术对固定时间交换操作进行了概念验证攻击。这种攻击利用内存访问模式的定时行为从受害进程泄露敏感信息。

具体来说,研究人员发现Apple在DMP系统的实施中存在一个缺陷,违反了恒定时间的良好实践。

“我们对Apple M系列CPU上的DMP进行了逆向工程,发现DMP激活(并试图解除引用)从内存中加载的数据,这些数据看起来像一个指针,”论文写道,“这明显违反了恒定时间编程范式的要求,该范式禁止混合数据和内存访问模式。”

攻击者可以制作特殊的输入,使预取器解除对数据的引用,如果正确猜测了密钥的某些比特,这些数据将显示为指针。

接下来,他们观察DMP是否被激活,逐渐推断出密钥的比特。只要这个过程重复得足够多,就可以重建整个秘密加密密钥。

图片

导出完整密钥的时间

“DMP对现代软件构成了重大的安全威胁,破坏了各种最先进的加密实现。在高层次上,如果攻击者有能力独立地写一个指向内存的指针,DMP使其能够了解有关该秘密的部分或全部信息。”论文写道。

基本上,攻击者可以欺骗处理器将密钥加载到缓存中,并从缓存中窃取密钥。为此,他们不需要管理员权限。这使得攻击特别危险,因为系统上的任何恶意应用程序都可以运行它。

研究人员写道:“对于我们的加密攻击,我们假设攻击者运行非特权代码,并且能够通过名义软件接口与受害者交互,触发它执行私钥操作。”

研究人员展示了对四种不同加密实现的攻击,其中还包括后量子加密。然而,更多的项目可能面临风险。

正如研究人员所证明的那样,恶意应用程序可能需要一到十个小时才能与目标软件(即加密钱包)并行运行,以提取和重建密钥。

虽然研究人员对Apple M1芯片进行了研究,但他们指出,“Apple的M2、M3和Intel第13代CPU上也存在DMP,这个问题似乎超越了特定的处理器和硬件供应商,因此需要专门的硬件对策。”

图片

在Apple M2(左)和Intel Raptor Lake(右)上测试了四种访问模式

图片

GoFetch的影响程度是巨大的,不仅影响传统的加密协议,还影响那些旨在抵抗量子计算攻击的协议。这使多种加密密钥面临风险,包括RSA和Diffie-Hellman,以及Kyber-512和 Dilithium-2等后量子算法。

研究人员报告说,“GoFetch应用程序需要不到一个小时来提取2048位RSA密钥,需要两个多小时来提取2048位Diffie-Hellman密钥”,强调了这种攻击媒介的效率和危险。

更深层次的,GoFetch攻击还动摇了现代处理器设计的基础,使依赖于数据内存的预取器的安全性受到质疑。

这一发现凸显了重新评估当前防御措施并制定新策略来防范此类微架构侧通道攻击的必要性。

图片

内存访问模式和后续预取

上图比较了内存访问模式和后续预取,说明了Augury报告的激活模式以及显示DMP激活的新发现,即使训练数组包含非指针值也是如此。

GoFetch攻击清楚地提醒人们网络安全威胁的不断演变以及攻击者和防御者之间持续的军备竞赛。

随着处理器变得越来越复杂,此类漏洞的可能性也在增加,因此需要警惕的研究和主动防御机制来保护我们的数字基础设施。

图片

不幸的是,由于这个弱点是Apple CPU中直接内置的数据内存依赖预取器的一部分,因此没有办法通过硬件修复来减轻攻击。

研究人员表示,在一些CPU上禁用DMP是有用的,比如M3,移除GoFetch所依赖的预取行为。不过这个解决方案比较激进,关键是还将导致严重的性能损失,“并且在M1和M2 CPU上不太可能实现”。

开发人员的其他防御措施包括输入盲化和DMP激活屏蔽,它们在DMP级别上混淆攻击者的输入结果。

虽然Apple可以将缓解措施作为软件补丁引入macOS,但这会导致性能下降,正如研究人员在之前针对侧信道攻击的软件修复中看到的那样。

作为一名Apple用户,除了养成安全的使用习惯,能做的不多。研究人员建议使用最新版本的软件,并定期进行更新。这意味着定期更新你的操作系统和软件,只安装来自官方渠道和信誉良好的来源的软件,以防止恶意软件感染。

在论文公开发表之前,研究结果已向供应商披露。Apple尚未公开回应这一问题。

研究人员还计划“很快”发布概念验证代码。

参考链接:

[1]https://cybernews.com/security/macs-can-leak-secrets-gofetch/

[2]https://www.bleepingcomputer.com/news/security/new-gofetch-attack-on-apple-silicon-cpus-can-steal-crypto-keys/

[3]https://gofetch.fail/files/gofetch.pdf

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

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

相关文章

qrcode插件-生成二维码

安装 yarn add qrcodejs2 --save npm install qrcodejs2 --save 使用 <template><div><div id"qrcodeImg"></div><!-- 创建一个div&#xff0c;并设置id --></div> </template> <script> import QRCode from q…

Sequelize一个易用且基于 promise 的 Node.js ORM 工具

Sequelize中文文档|Sequelize中文网 Sequelize 是一个易用且基于 promise 的 Node.js ORM 工具 适用于 Postgres, MySQL, MariaDB, SQLite, DB2, Microsoft SQL Server, Snowflake, Oracle DB 和 Db2 for IBM i. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功…

洛谷刷题 | P1706 全排列问题

全排列问题 题目描述 按照字典序输出自然数 1 1 1 到 n n n 所有不重复的排列&#xff0c;即 n n n 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n n n。 输出格式 由 1 ∼ n 1 \sim n 1∼n 组成的所有不重复的数字序…

Web3创作整理 - 2024-02-23 ~ 2024-03-25

Web3 创作整理 - 2024-02-23 ~ 2024-03-25 整理下3月份的文章&#xff0c;方便大家阅读 分类文章地址&#x1fad1;ETH什么是Dapp&#x1f3bc;ETH什么是以太坊&#x1f3b5;ETH如何才能拥有ETH&#x1f3b6;ETHBTC网络 vs ETH网络&#x1f399;️ETHETH网络中的区块链&#x1…

利用Python和IP技术实现智能旅游情报系统

文章目录 引言一、系统架构设计1. 数据采集模块2. 数据处理模块3. 用户界面模块 二、数据获取技术应用三、系统功能展示四、亮数据采集工具介绍五、总结六、号外 引言 随着旅游行业的不断发展&#xff0c;人们对旅游信息的需求也越来越大。为了帮助旅行者更好地规划行程&#…

Nodejs沙盒逃逸

Buffer 在较早一点的node.js版本中 (8.0 之前)&#xff0c;当 Buffer 的构造函数传入数字时, 会得到与数字长度一致的一个 Buffer&#xff0c;并且这个 Buffer 是未清零的。8.0 之后的版本可以通过另一个函数 Buffer.allocUnsafe(size) 来获得未清空的内存。 注&#xff1a;关…

P1219八皇后 (典DFS)

注意&#xff1a; 数组大小要开够&#xff0c;数据范围是6到13&#xff0c;要开到20&#xff0c;不然开到15数据点没法全部过。 代码&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue>using namespace std;i…

Rocket mq

搭建服务【有2个】 一个是NameServer还有一个是Broker&#xff0c;要两个服务协同 后台启动服务 允许服务端自己创建topic&#xff0c;如果客户端传来的topic没有的话 然后搞个rocket mq的仪表盘&#xff0c;application.yml改成自己的地址【只需要指定NameServer的地址&#…

更灵活的定位内存地址的方法

文章目录 更灵活的定位内存地址的方法and和or指令关于ASCII码以字符形式给出的数据大小写转换的问题[bxidata]用[bxidata]的方式进行数组的处理SI和DI[bxsi]和[bxdi][bxsiidata]和[bxdiidata]不同的寻址方式的灵活应用题目示例 更灵活的定位内存地址的方法 and和or指令 1&…

Axure RP 8中文---快速原型设计工具,一站式解决方案

Axure RP 8是一款专业的快速原型设计工具&#xff0c;以其直观易用的界面和丰富的功能受到广大用户的青睐。它支持用户通过拖放操作快速创建交互式原型&#xff0c;包括线框图、流程图等&#xff0c;并具备高保真度的设计能力。Axure RP 8还提供了团队协作和共享功能&#xff0…

【Java程序设计】【C00368】基于(JavaWeb)Springboot的箱包存储系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

基于nodejs+vue铁路订票管理系统python-flask-django-php

该铁路订票管理系统采用前后端分离进行设计&#xff0c;并采用nodejs语言以及express框架进行开发。本系统主要设计并完成了用户登录管理过程、个人信息修改、用户管理、火车类型管理、火车信息管理、车票预订管理、车票退票管理、系统管理等功能。该系统操作简单&#xff0c;界…

【React】使用 JSX 为 JavaScript 添加标签

使用 JSX 为 JavaScript 添加标签实际上是将 JSX 语法与 JavaScript 代码结合使用&#xff0c;以描述用户界面。JSX 允许你在 JavaScript 中编写类似 HTML 的结构&#xff0c;并最终由 React 库将其转换为真正的 DOM 元素。以下是将标签引入 JavaScript 以及将 HTML 转化为 JSX…

13_Linux内核配置选项

内核配置选项 内核配置通常是对内核支持的各个功能进行取舍配置&#xff0c;将配置的方案保存到 configure文件中。在编译内核的时候&#xff0c;就会根据此配置对内核进行取舍编译。 编译内核之前要先配置。为了正确、合理地设置内核编译配置选项&#xff0c;从而只编译系统需…

BM85 验证IP地址(字符串)

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** 验证IP地址* param IP string字符串 一个IP地址字符串* return string字符串*/public boolean isIPv4(String IP){//没有.i…

Redis命令集redis实战案例

作为资深研发专家&#xff0c;对Redis命令集以及实战案例有深入的了解。下面&#xff0c;我将详细介绍Redis的命令集&#xff0c;并结合实际案例来展示Redis的应用。 Redis命令集非常丰富&#xff0c;涵盖了数据操作、持久化、事务处理等多个方面。以下是一些常用的Redis命令&…

单片机入门到精通:一站式在线学习平台!

介绍&#xff1a;单片机&#xff0c;也称为微控制器&#xff08;MCU&#xff09;&#xff0c;是一种集成了中央处理器&#xff08;CPU&#xff09;、随机存储器&#xff08;RAM&#xff09;、只读存储器&#xff08;ROM&#xff09;以及输入/输出接口于单一芯片上的微型计算机。…

11.测试教程-自动化测试selenium-3

文章目录 1.unittest框架解析2.批量执行脚本2.1构建测试套件2.2用例的执行顺序2.3忽略用例执行 3.unittest断言4.HTML报告生成5.异常捕捉与错误截图6.数据驱动 大家好&#xff0c;我是晓星航。今天为大家带来的是 自动化测试selenium第三节 相关的讲解&#xff01;&#x1f600…

ADB/ADB shell

ADB&#xff08;Android Debug Bridge&#xff09;是Android开发工具包&#xff08;Android SDK&#xff09;的一部分&#xff0c;是一个命令行工具&#xff0c;它充当电脑与Android设备之间的桥梁&#xff0c;提供多种功能&#xff0c;主要包括&#xff1a; 0. 使用 adb shel…

使用SpringAOP+Caffeine实现本地缓存

文章目录 一、背景二、实现1、定义注解2、切面3、缓存工具类 三、测试 一、背景 公司想对一些不经常变动的数据做一些本地缓存&#xff0c;我们使用AOPCaffeine来实现 二、实现 1、定义注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retenti…