跳转至

Meltdown Attack

📖 阅读信息

阅读时间:1 分钟 | 中文字符:325

任务 1:从缓存读取数据与从内存读取数据的比较

编译代码并运行,如下图所示:

可以看到,我们在程序中设置预先缓存的 array[3*4096]array[7*4096] 访问时间明显比其他元素要快,大致是以 100ns 为界限


任务 2:使用缓存作为侧信道

编译代码并运行,如下图所示:

可以看到,程序成功得到了 Secret 94


任务 3:在内核空间放置秘密数据

编译代码,并将其内核模块安装到内核当中:

我们可以得知,秘密数据的地址位于 0xb8d3cece


任务 4:从用户空间获取内核内存

编写代码如下:

尝试编译运行代码,结果如下:

可以看到,程序在运行 char kernel_data = *kernel_data_addr; 语句时出现了段错误(Segmentation Fault),这是因为我们尝试访问内核空间的内存地址,操作系统阻止了这种非法访问


任务 5:C 语言处理错误/异常

将代码中的秘密地址修改,编译并运行代码,结果如下:

可以看到,程序成功处理了段错误,并继续执行了程序


任务 6:CPU 中的乱序执行

修改代码中的秘密地址,编译并运行代码,结果如下:

可以看到,我们成功得到了 Secret 7

💬 评论

评论系统加载中...