谷歌发布最新研究成果:Spectre漏洞无法通过编程语言级别手段解决

2019 年 2 月 27 日

谷歌发布最新研究成果:Spectre漏洞无法通过编程语言级别手段解决

来自谷歌的几位研究人员在一篇论文中指出,推测性漏洞目前击败了所有编程语言级别的信息保密手段。这不只是我们如何构建系统的偶然性属性,而是错误的心智模型导致我们在不知情的情况下以安全性换取性能的结果。


我们的论文表明,这些泄漏不仅是设计缺陷,而且实际上是理论计算的基础。


信息机密性是系统的一个非常理想的属性,应该在从硬件到编程语言的不同抽象层次上强制执行。


编程语言提供了不同数量的手段来保证机密信息不会泄露。例如,在很多主流编程语言中,类型系统旨在排除一些可能危及完整性、机密性和可用性的危险行为。类型系统尝试强制执行的一个重要属性是内存安全性,这通常是许多漏洞背后的罪魁祸首,并且已经有大量的研究工作致力于以一种可信任的方式构建编程语言,不会导致意外的情况发生。但谷歌的研究人员称,Spectre漏洞改变了这一切。


根据处理器的架构语义,Spectre允许从永远不应该发生的计算中泄露信息。这将使内存中的数据处于危险之中,甚至是当前不参与计算、之前被认为是安全的且不受侧通道攻击的“静止”数据。


为了澄清这一观点,研究人员定义了一个形式化的微架构侧通道模型,用于定义处理器架构状态(即程序可见的处理器视图)与其微状态(即暴露于编程语言抽象之下的 CPU 内部状态)之间的关联。这种关联显示了有多少正确的微状态可以映射到单个架构状态。


当一个 CPU 使用缓存或分支预测时,与一个给定操作相关联的时间将取决于 CPU 微观状态,例如,缓存中的数据可能已经可用或需要从内存中获取,但所有可能的微状态对应于相同的架构状态,例如使用少量的信息。此外,研究人员定义了一种技术来放大时间差异,使其易于检测,这成为构建通用“读取小部件”的基础,一种“界外内存读取器”,可以访问所有可寻址内存。


根据研究人员的说法,这种通用的读取小部件可能是为任意编程语言而构建的——即使它不一定是一项简单的任务——利用了大量的语言结构或特性,这些结构或特性在使用它们的模型时已经被证明是易受攻击的。包括带有动态边界检查的索引数据结构、可变参数、调度循环、调用栈、switch 语句,等等。


综上所述,社区现在面临三大挑战:发现微架构侧通道、了解程序如何操纵微状态,以及如何缓解这些漏洞。


缓解漏洞可能是所有问题中最具挑战性的,因为现有硬件所需的有效软件缓解措施似乎还处于起步阶段,而未来设计所需的硬件缓解措施是一个完全开放的设计问题。


虽然这篇论文并不能让人完全放心,但它提供了相当密集的资料,提供了很多有关我们的思维计算模型如何与 CPU 实际计算发生偏差的见解。


查看英文原文https://www.infoq.com/news/2019/02/spectre-will-haunt-us-for-years


2019 年 2 月 27 日 08:004709
用户头像

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

关注

评论

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

为什么香港云服务器更适合放新网站

德胜网络-阳

软件测试必须掌握的http网络协议知识

测试人生路

软件测试

云上可靠性测试:让我们一起给开发找点事儿

华为云开发者社区

安全 云服务 可靠性

GitHub标星力推!我掏空了各大搜索引擎,给你整理了188道Java面试题,满满干货记得收藏

Java架构之路

Java 程序员 架构 面试 编程语言

SpringBoot,来实现MySQL读写分离技术

Java架构师迁哥

APICloud AVM多端开发案例生鲜电商app深度解析(一)

APICloud

Vue Web Worker 前端框架 移动终端 前端训练

Flash Player终将成为历史,HTML5正站在舞台的中央

Geek_Willie

面试必问的 Redis:主从复制

Java架构师迁哥

Java岗四面字节跳动成功之前,我都刷了那些面试题以及做了那些准备!

Java架构之路

Java 程序员 架构 面试 编程语言

姐夫半夜不睡觉,竟躲在厕所看这“57道Redis面试题”?

Java架构之路

Java 程序员 架构 面试 编程语言

Spring Cloud 2020.0.0 正式发布,对开发者来说意味着什么?

阿里巴巴云原生

阿里云 容器 开发者 云原生 架构师

7. JDK拍了拍你:字符串拼接一定记得用MessageFormat#format

YourBatman

Spring Framework 类型转换 MessageFormat DateFormat

二十多岁的年纪是怎么成功四面字节跳动,最终拿到offer的?

Java架构之路

Java 程序员 架构 面试 编程语言

支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型

阿里巴巴云原生

云计算 阿里云 开源 微服务 云原生

本科毕业,六年Java开发经验,阿里技术三面+HR面,拿下38*16薪资P7offer

Java成神之路

Java 程序员 架构 面试 编程语言

加密猫MIMI系统APP开发|加密猫MIMI软件开发

开發I852946OIIO

系统开发

2021 云原生走向何处?

云原生实验室

一个企业用电有多浪费?90后开发者大显身手,让每度电从此更“聪明”!

华为云开发者社区

AI 物联网 智慧园区

微服务架构思考 - 理清楚,管起来

jorden wang

阿里P9都赞不绝口的面试宝典!半月看完25大专题,居然斩获阿里P7offer

Java成神之路

Java 程序员 架构 面试 编程语言

PostgreSQL 13 RPM中有哪些新功能?

PostgreSQLChina

数据库 postgresql 开源

Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的

华为云开发者社区

人工智能 智能车 hilens

周立齐出任电动车联合创始人:网红经济背后的病态消费心理

石头IT视角

Java:利用BigDecimal类巧妙处理Double类型精度丢失

程序员小毕

Java 架构 编程语言 阿里 开发

速来围观!阿里P8大牛写出的JDK源码剖析及大型网站技术架构与业务架构融合之道

Java架构之路

Java 程序员 架构 面试 编程语言

K8S 资源可视化利器:Kubectl-Graph

郭旭东

Kubernetes Kubernetes Plugin

Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)

Crud的程序员

spring 程序员

华为18级工程师总结的50W字算法、LeetCode、操作系统、计算机底层刷题必备笔记

Java成神之路

Java 程序员 架构 面试 编程语言

阿里P8亲授MySQL学习教程笔记,一个月吃不透那我真的白活了!

Java成神之路

Java 程序员 架构 面试 编程语言

Github、知乎下载超过 28762W 次的 Java面试题库(附答案)

Java成神之路

Java 程序员 架构 面试 编程语言

用一把吃鸡的时间,免费上云搭建网站应用

华为云开发者社区

服务 建站

谷歌发布最新研究成果:Spectre漏洞无法通过编程语言级别手段解决-InfoQ