操作系统小班课第二次讨论Meltdown漏洞

Meltdown

​ 在了解meltdown之前,我们需要明白什么是cache(缓存)。缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快

​ 阅读链接: 缓存,文中提及的主存就是内存。

只需阅读到即可。

CPU和主存之间直接数据传输的方式转变成CPU和cache之间直接数据传输。cache负责和主存之间数据传输。

Meltdown漏洞的机制

​ 首先我们应该明白的是,Meltdown这个攻击漏洞是基于硬件的缺陷,与之相对比的就是被我们所熟知的软件病毒。这基本是一种设计缺陷,一直存在于现行的处理器中。

​ 由于本课程是Operating System,我们小组将不会像Computer OrganizationComputer System一样去研究CPU内部那些令人讨厌的细节内容(因为这或许也已经远超我们现行的水平)来解释它是如何达成攻击的。

​ 那么究竟是什么出现了问题?为了理解Meltdown攻击,需要在更高的层次上理解以下看似不相关的问题:

1.多任务处理与乱序执行

2.CPU和内存之间的性能差距

3.侧信道攻击

多任务处理与乱序执行

​ 身为计算机专业的我们应该知道的是,单核CPU最多只能有一个进程处于运行态。并且最早期 CPU都是顺序执行的,前一条指令未执行完毕,则后一条指令必须等待着,就像我们烧水,必须洗茶壶,烧水,洗茶杯,倒水必须按照顺序来做。

​ 但是,我们当然希望的是我们输入的指令能被迅速地执行(设想你在跟心仪的ta聊天并且在听着音乐,你是否希望能够快速的回消息的同时还能体验着美妙的音乐?),换句话讲我们期望计算机能够并行执行各种任务(或进程)。但这在目前的操作系统架构中是不可能的,因为单核CPU往往只能处理一个进程!(这很重要) 但是实际却是,我们在甚至在玩英雄联盟的时候还能听着网易云并在聊天框内亲切地问候队友。

​ 这便是操作系统的一大基本特征----并行。它由快速执行的CPU模拟,也就是CPU一刻也不能停歇,处理完一个进程后迅速去处理另一个进程,由于速度极快,这往往就造成了多个进程并行的错觉。也就是在烧水的同时能够洗茶杯还能给茶杯里面放茶叶并跟亲戚们唠嗑,只用等待烧开水这一个进程完毕就好了。

​ 那它跟Meltdown漏洞有什么关系呢?

​ 这种多任务功能的安全性完全依赖于处理器保证每个正在运行的进程完全隔离的假设。如果这种假设不成立,即在最坏的情况下,任何进程都可以访问其他进程正在处理的任何数据。这会导致巨大的安全问题。这样的隔离中断将允许未经授权的进程读取,修改或删除敏感数据,如密码,加密密钥或私有文件。

​ 举一个更生动的例子:假设我的网页浏览器使用不可信的HTMLJavaScript代码,它可能会突然读取我正在“并行”处理的文本文件中高度机密的内容。在过去的二十年中,处理器制造商完全依靠这种隔离假设并进行处理器的生产。

​ 并且乱序执行,会提前执行后序执行并把执行完成的所产生的数据放在缓存中。也就是说在洗茶杯的时候已经有人为我们烧好了开水。

CPU与内存之间的性能差距 – CPU速度超过了内存的速度

​ 由上面那篇知乎文章就可以看到,现代的CPU是从缓存(cache)中拿数据,而不是从内存中拿数据。

侧信道攻击

​ 这是Meltdown漏洞的核心,说到现在,可能大家会认为的是,多任务优化以及cache的出现不应该是提高用户体验的过程嘛?为什么会有安全漏洞呢?

​ 要知道物极必反,我们应该看看这两个问题:

​ 问题1:从内存获取缓存而不先检查权限。

​ 将数据从内存中提取到缓存后,才检查有关进程访问数据的权限。

​ 问题2:不从缓存中删除数据。

​ 存储在缓存中的数据在检查权限后不会立即清除,即使权限检查失败。

漏洞攻击

​ 在第一行,我们引发了一个异常,若程序按照顺序执行,第三行的access将不会被执行,但是由于程序是乱序执行的,因此在异常引发之前,第三行的access将被执行,但是执行结果不会被显示出来,当异常触发以后,第三行的执行结果将被撤销掉,从计算机外部看来第三行的access就跟从未被执行过一样,但是事实上它只是在后期被撤销了,这会带来一个小问题,就是在执行过程中,刚才读取的数据已经被存储到高速缓存中。

​ 我们可以通过侧信道攻击来确认刚才访问的数据是什么。

​ 这便成为向攻击者泄漏有价值信息的地方。根据定义,侧信道是潜在的信息来源,可以被攻击者用来窃取敏感数据。侧信道攻击对IT安全领域来说并不陌生。过去成功的常见攻击是基于功耗,电磁辐射或系统性能时序波动的变化。

​ 例如,2008年3月,KeeLoq系统的加密过程被通过高精度功耗测量设备破解。KeeLoq是Microchip公司的硬件专用密码模块,用于各种远程汽车和楼宇控制系统。结果这一攻击直接影响了该系统的锁机制被破坏。

或多或少的抱怨

为什么操作系统这个课程要讨论一个从未学过的东西呢,而且我觉得这个与计科专业的契合度并不高,完全是高深的安全方面的知识,只了解纯理论的知识做个PPT太过于形式主义。到现在我也不知道Meltdown漏洞到底如何实现,我觉得大学课程应该更多的让学生讨论一些能够触摸到的东西,而不是未来2-3年内都用不上的东西,这太过于敷衍。
并且我觉得Meltdown漏洞对应我们学习OS这门课而言并没有很多能帮助到我们的地方(或许是因为我太菜了学不明白),我不能接受这一次的小班讨论的课题。

posted @ 2022-03-12 16:29  一袍清酒付l  阅读(304)  评论(0)    收藏  举报