写点什么

TLBleed 漏洞:通过探测 TLB 获取 CPU 秘钥

  • 2018-06-27
  • 本文字数:1022 字

    阅读完需:约 3 分钟

VUsec 安全研究员 Ben Gras 在一篇文章中写道,一个影响英特尔处理器的边信道漏洞(称为 TLBleed )可能通过窥探翻译后援缓冲器(TLB)泄漏信息。

Gras 将在接下来的 Blackhat 2018 大会上介绍他的研究发现,声称他可以提取 GPG 所使用的加密密钥:

我们的 TLBleed 漏洞攻击成功获取 libgcrypt(在 GPG 中使用)的 256 位 EdDSA 密钥,成功率为 98%,只需单独监视共驻超线程上的签名操作,分析耗时 17 秒。

TLB 是一种缓存,用于加快将常用虚拟地址转换为物理内存地址的速度。 TLBleed 通过使用 TLB 来检测 CPU 寄存器中有用的信息,为超线程访问运行在同一内核上的另一个超线程的信息提供了一种方式。此漏洞与 Spectre 和 Meltdown 无关,这两个漏洞都利用推测执行故障泄漏 CPU 缓存中的信息。

关于这个漏洞,人们最关心的是,它使用了数据访问而不是正在执行的代码路径,这意味着现有对已知边信道攻击的保护措施可能无法有效对抗 TLBleed。事实上,Gras 提到了基于 TLBleed 的第二种攻击,该攻击可能会让最近的 libgcrypt 版本发生数据位泄漏,这一版本的libgcrypt 包含了一个边信道抗RSA 实现。第二种类型的攻击利用了机器学习技术。The Register 特约作者Chris Williams 可以访问Gras 等人的白皮书,他解释说,该团队使用分类器来识别敏感操作,包括基于TLB 延迟的加密操作。

英特尔不打算解决这个漏洞,他们认为,一个能够正确保护自己免受其他类型边信道攻击的程序,例如,不管是否使用加密密钥,其数据访问模式看起来都是一样的,如果能做到这样一点,也就对TLBleed 免疫。Gras 虽然也承认这一点,但他认为,很少有程序写得这么完美,libgcrypt 泄露RSA 密钥就是最好的例子。

OpenBSD 维护者采取了不一样的立场,他们决定禁用对英特尔处理器禁用并发多线程(SMT):

由于很多现代机器不再提供在 BIOS 设置中禁用超线程的能力,因此,可以在我们的调度程序中禁用额外的处理器线程。另外,因为我们怀疑它存在严重风险,所以默认将其禁用。

OpenBSD 将在未来将此策略扩展到其他 CPU 和其他架构。

对操作系统级具有较低侵入性的缓解措施是防止在同一内核的不同进程上并发执行两个线程,不过这要对操作系统的调度器做出修改,而且不是个小改动。

目前还不清楚其他厂商是否会在操作系统级别上采取任何措施解决 TLBleed 问题,或者云提供商是否会提供阻止两个不同虚拟机共享相同内核的可能性。InfoQ 将会带来更多相关信息。

查看英文原文 TLBleed Can Leak Cryptographic Keys from CPUs Snooping on TLBs

2018-06-27 09:151127
用户头像

发布了 731 篇内容, 共 447.1 次阅读, 收获喜欢 2001 次。

关注

评论

发布
暂无评论
发现更多内容

分析23个赛季NBA数据,我发现10条难以置信的信息!

Jackpop

贪心:柠檬水找零、跳跃游戏🍋

空城机

JavaScript 贪心算法 11月日更

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

热爱java的分享家

Java 面试 程序人生 编程语言 经验分享

App 端自动化的最佳方案,完全解放双手!

星安果

Python 自动化 爬虫

【高并发】由InterruptedException异常引发的思考

冰河

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

Spring中的Controller和Service是线程安全的吗?我有点懵

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

CWE 4.6 和 OWASP TOP10(2021)

Tom(⊙o⊙)

Windows 11再出杀手锏....

Jackpop

分布式系统的架构演进过程(一)

卢卡多多

分布式, 11月日更

2018年世界杯德国竟然输给韩国?终于找到原因了!

Jackpop

Prometheus Exporter (八)kube-state-metrics

耳东@Erdong

Kubernetes Prometheus exporter 11月日更 kube-state-metrics

华为顶级安全专家分享出来这份‘典藏版’Linux开发实战笔记

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

在线文本行固定长度填充工具

入门小站

工具

Golang Gin 框架之分组路由(五)

liuzhen007

11月日更

23 K8S之Secret资源配置

穿过生命散发芬芳

k8s 11月日更

2021RSAC -- 网络韧性

Tom(⊙o⊙)

[Pulsar] 消息生命历程(三)——客户端发送消息

Zike Yang

Apache Pulsar 11月日更

一次搞懂SpringBoot核心原理:自动配置、事件驱动、Condition

热爱java的分享家

Java 程序人生 Spring Boot 编程语言 经验分享

一个对标VSCode的IDE---Fleet

IT蜗壳-Tango

11月日更

华为,告别大陆军时代

脑极体

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPullConsumer的实现原理及源码分析

洛神灬殇

阿里巴巴 RocketMQ 消息队列 11月日更 Apache RocketMQ

Java 项目中使用 Resilience4j 框架实现客户端 API 调用的限速/节流机制

码语者

Java 限速 节流 Resilience4j RateLimit

什么是元宇宙?为何要关注它?

CECBC

EF Core如何处理多对多关系

喵叔

11月日更

被Chrome坑惨了!

Jackpop

linux之strings命令

入门小站

Linux

这次不怕撕坏了,区块链电子公告来了

CECBC

【死磕Java并发】-----J.U.C之AQS:同步状态的获取与释放

chenssy

11月日更 死磕 Java 死磕 Java 并发

Spring Bean生命周期你除了会背八股文面试,真的会用了吗?

热爱java的分享家

Java spring 程序人生 编程语言 经验分享

清华元宇宙深度报告!理论框架产业真相一文看懂

CECBC

模块四作业:设计千万级学生系统的试卷存储方案

Geek_99eefd

模块四 「架构实战营」

TLBleed漏洞:通过探测TLB获取CPU秘钥_语言 & 开发_Sergio De Simone_InfoQ精选文章