[SEEDLabs] Meltdown & Spectre Attack Labs

本文介绍了针对Meltdown和Spectre攻击的实验环境与步骤,详细阐述了如何通过CPU缓存作为侧信道攻击来窃取机密信息。实验涉及侧信道攻击技术FLUSH+RELOAD,包括读取缓存与内存时间对比、利用缓存作为侧信道等任务,以及在不同场景下尝试获取kernel空间中的secret值。同时,文章还探讨了Spectre攻击的相关实验,展示攻击的成功率和应对措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统安全分类下的两个实验,放在一起写。Meltdown 和 Spectre 是两个关于体系结构的漏洞,主要是利用了缓冲延时的侧信道攻击方法。

实验环境

这次实验用的是官方网站发布的预装环境的Ubuntu16,看官网的说明meltdown的大部分的实验在Ubuntu20上面也可以做,但是还是有不行的,spectre的话是两个版本都可以做,为了方便还是安装了Ubuntu16了。还有需要注意的就是这两个实验都是针对intel的处理器的,如果不是intel处理器的话实验可能不能成功。(我们老师的说法是本地机器如果是8代以上的话也不可以,实验手册里面也是说这些问题可能在新的机器上已经被修复了,导致实验不能进行,但是啊,我9代还是做了。)

装Ubuntu16遇到的一个问题就是我不能装vmtools,一装鼠标立马失灵,最后还是放弃了。

实验官网

SEED Project

里面有实验用的代码、实验手册还有一些其他相关的介绍。

Meltdown Attack Lab

Tasks 1 and 2: Side Channel Attacks via CPU Caches

Meltdown和Spectre攻击都使用CPU缓存作为窃取机密信息的旁路。这种侧信道攻击使用的技术称为FLUSH+RELOAD。CPU缓存是计算机CPU用来减少从主存访问数据的平均成本(时间或能量)的硬件缓存。

Task 1: Reading from Cache versus from Memory

task1主要是检测读取数据所需的时间,其中有两块cache是存放在cpu cache中的,而其他的则存放在内存中,编译并执行CacheTime.c,我们可以观察到array[3*4096] 和 array[7*4096]的读取速度是比其他块更快的。

注意编译的时候要加上 -march=native。 

 Task 2: Using Cache as a Side Channel

整个技术包括三步:
1.从cache memory中FLUSH整个数组,确保数组没有被cached
2.调用victim function,它会基于secret value访问数组的一个元素。这个动作会导致相应的数组元素被缓存
3.RELOAD整个数组,测量每个元素reload时的时间,如果某个特定的元素load的时间很快,它很有可能就是已经在缓存中的元素了。这个元素一定就是victim function访问的元素。因此,我们可以找到secret value究竟是什么。
 

目标是利用旁道攻击获取secret的值。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值