2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

针对苹果 M 和 A 系列 CPU 的新型侧信道攻击

作者:Sergio De Simone

  • 2025-03-14
    北京
  • 本文字数:1522 字

    阅读完需:约 5 分钟

针对苹果M和A系列CPU的新型侧信道攻击

来自佐治亚理工学院和波鸿鲁尔大学的研究人员演示了针对苹果近期发布的 M 和 A 系列 CPU 的两种新型侧信道攻击,这些攻击会导致用户在使用 Chrome 和 Safari 浏览器访问热门网站时泄露敏感信息。


这两种攻击分别被称为 FLOP(通过错误的加载输出预测破坏苹果 M3 CPU)和 SLAP(通过苹果芯片的加载地址预测进行数据推测攻击),它们可以在 2021 年及以后发布的 Mac、iPhone 和 iPad 上执行。具体来说,SLAP 影响使用 M2/A15 及更新型号 CPU 的设备,这些 CPU 配备了加载地址预测器(LAP),而 FLOP 影响使用 M3/A17 及更新型号的设备,这些设备配备了加载值预测器(LVP)。


据研究人员称,SLAP 和 FLOP 破坏了浏览器内置的隔离保护机制,允许一个网页读取另一个网页的内容,其中可能包含敏感数据。由于这两种攻击都是基于微架构的,因此不会留下任何痕迹。


这两种漏洞源自苹果芯片 CPU 中使用的两个预测子系统:加载地址预测器(LAP)和加载值预测器(LVP)。这些子系统通过微架构优化来缓解数据危害),并减少 Read-After-Write 依赖导致的减速。


加载地址预测器会根据之前的访问模式猜测 CPU 下一次将访问哪个内存地址:


如果预测的地址被缓存,CPU 将从预测的地址而不是程序原本指定的地址进行推测性加载。一旦从预测地址获取了值,CPU 将使用程序代码中下游的任意指令对该值进行计算。


加载值预测器会在实际值可用之前猜测下一次内存访问将返回的数据值:


LVP 会观察加载操作返回的数据值。如果这些值是固定的,这些 CPU 可以在下一次执行加载时打开一个推测窗口,而不是等待 RAW 依赖解决后才有可用的结果。


研究人员发现,当 LAP 或 LVP 猜测错误时,CPU 可能在推测执行期间对超出范围(SLAP)或错误(FLOP)的数据执行任意计算,从而导致数据泄露。


对于 SLAP,研究人员演示了针对 Safari 的端到端攻击,攻击者可以在未经授权的情况下恢复电子邮件内容和浏览历史记录:


LAP 会监控来自相同加载指令的地址,用以推测性地加载预测地址,该地址可能错误地指向固定的机密信息(即从未被 CPU 读取)。一旦获取了机密信息,LAP 就会获得一个较大的推测窗口,足以让攻击者对机密信息进行计算,例如通过隐蔽通道泄露它。


对于 FLOP,他们演示了攻击者如何利用任意读取原语恢复 Safari 和 Chrome 的位置历史记录、日历事件和信用卡信息。


研究人员已将这两种漏洞告知苹果公司,但苹果公司尚未透露计划何时解决这些问题。虽然这两种漏洞都有可行的缓解措施,但需要苹果公司在其操作系统中发布相关补丁。


FLOP 影响 Chrome 和 Safari,而 SLAP 则是 Safari 独有的。这是因为 Safari 没有在”同一浏览器上下文组“内实现隔离,与 Firefox 和 Chrome 不同:


Firefox 和 Chrome 似乎确实实现了同一浏览器上下文组隔离,并通过 IPC 桥接所需的 API,因此希望 Safari 也能在未来实现这一功能。


正如 Hacker News 用户 adrian_b 所指出的,加载值预测器的有效性 与 ARM 架构有固定长度指令密切相关,这使得无法将数据存储在指令中,因此


作为一种变通方法,在为这类 ISA 编程时,常量被存储在靠近函数代码的常量池中,加载指令使用基于程序计数器的相对寻址来加载常量。


发现 FLOP 和 SLAP 的研究人员并不知道是否有其他 CPU 也可能受到影响,但他们不排除有这种可能性。


随着摩尔定律逐渐失效,出现了更多独特的微架构优化,我们相信 LAP 可能不是苹果独有的,现在或在未来也可能会在其他地方出现。‍


侧信道漏洞是一类源于算法实现方式的漏洞,利用时间信息、功耗、电磁泄露和其他类型的信息来泄露敏感数据。在过去的几年中,许多影响 CPU 并利用推测执行的重大侧信道漏洞引起了广泛关注,包括 Spectre 和 Meltdown。


查看英文原文


https://www.infoq.com/news/2025/02/apple-cpu-side-channel-slap-flop/

2025-03-14 17:159544

评论

发布
暂无评论

【高并发】如何使用Java7提供的Fork/Join框架实现高并发程序?

冰河

Java 并发编程 多线程 高并发 异步编程

[Pulsar] 消息从Producer到Broker的历程

Zike Yang

Apache Pulsar 11月日更

SAP Cloud for Customer Price 计价简介

汪子熙

Cloud SAP C4C 11月日更 pricing

李子捌 Redis精通系列文章 研究分享| 内容合集

李子捌

redis 内容合集 签约计划第二季 技术专题合集

为什么我的 C4C Service Request 没办法 Release 到 ERP?

汪子熙

Cloud SAP abap C4C 11月日更

k8s statefulset controller源码分析

良凯尔

源码 Kubernetes 源码分析 #Kubernetes#

跟小师妹一起学JVM-系列文章

程序那些事

Java JVM JIT 内容合集 签约计划第二季

JSON 数据格式

大数据技术指南

11月日更

linux双向重定向之tee命令

入门小站

Linux

签到功能怎么做?Bitmaps助你一臂之力

李子捌

redis bitmaps 签约计划第二季

CSS之盒模型

Augus

CSS 11月日更

URL URI傻傻分不清楚,dart告诉你该怎么用

程序那些事

flutter dart 程序那些事 11月日更

云原生训练营作业--部署k8s集群

好吃不贵

音视频理论(1)- 音频格式之 Monkeys Audio(APE)

liuzhen007

签约计划第二季

Redis的LRU(Least Recently Used)算法你了解多少?

李子捌

redis 签约计划第二季

Skip List(跳跃列表)它到底好在哪?今天我们不仅只聊为什么,还手写一个玩玩

李子捌

redis skiplist 签约计划第二季

限流系列文章——滑动窗口限流

李子捌

redis 限流 签约计划第二季

限流系列文章——漏斗限流

李子捌

redis 限流 签约计划第二季

数据分析从零开始实战,Pandas读写Excel/XML数据

老表

Python 数据分析 Excel pandas 11月日更

转型中的学习型组织 ——阅读《第五项修炼》有感

研发管理Jojo

系统性思考 企业转型

在线文本交集计算工具

入门小站

工具

HyperLogLog这里面水很深,但是你必须趟一趟

李子捌

redis 签约计划第二季

限流系列文章——令牌桶限流

李子捌

redis 限流 签约计划第二季

听说你的服务经常被打崩?试试布隆过滤器(Bloom Filter)

李子捌

redis 布隆过滤器 签约计划第二季

Linux 调优之:调整 bond hash 策略提升网络吞吐能力

卫智雄

都在用MQ,Redis的Pub/Sub也可以试着了解下

李子捌

redis MQ 签约计划第二季

数据库不能没有事务,今天他来了——Redis事务详述

李子捌

redis 事务 签约计划第二季

Prometheus Exporter (十三)Elasticsearch Exporter

耳东@Erdong

elasticsearch Prometheus exporter 11月日更

Redis之Geospatial,助你轻松实现附近的xx功能

李子捌

redis geospatial 签约计划第二季

Redis高可用的绝对的利器——持久化(RDB和AOF)

李子捌

redis redis持久化 签约计划第二季

2021年大数据开发发展趋势

五分钟学大数据

11月日更

针对苹果M和A系列CPU的新型侧信道攻击_芯片&算力_InfoQ精选文章