CVE-2017-5753 边界检查绕过,又名每个人都在谈论的巨大错误

标签 c performance security intel

在阅读零号项目关于 CVE-2017-5753 的解释时(参见此处 https://googleprojectzero.blogspot.fr/2018/01/reading-privileged-memory-with-side.html?m=1 ),我偶然发现了这个断言:

通过测量加载arr2->data[0x200]和arr2->data[0x300]所需的时间,攻击者可以确定推测执行期间index2的值是0x200还是0x300

据我所知,数组的访问时间并不取决于您正在查看的偏移量,那么如何在这里测量不同的加载时间?

谢谢

最佳答案

内存延迟取决于缓存命中/未命中。读 What Every Programmer Should Know About Memory作者:乌尔里希·德雷珀。

或者只是阅读 Meltdown 攻击论文 ( https://meltdownattack.com/meltdown.pdf ),其中解释了所有这些作为攻击如何工作的背景,包括 clflush+Read side-channel 来转换微架构状态(缓存的内容) )进入架构状态(您正在运行的非特权代码中的寄存器值)。

这是一篇非常好的论文,但他们可以更清楚地表明,这取决于英特尔 CPU 将仅内核页面映射视为对用户空间代码的推测执行有效。如果您无权从内部读取的映射的行为与未映射的页面相同,则不会存在漏洞。 AMD 大概就是这种情况,这就是为什么 AMD CPU 在微架构上不受这种攻击的影响。但英特尔 CPU 显然使用 TLB 命中并继续推测执行,直到故障负载尝试退出。

它是从https://meltdownattack.com/首页链接的.

如果您只查看其他漏洞而不是 Meltdown,也许您没有看到它。但侧 channel 是相同的。

关于CVE-2017-5753 边界检查绕过,又名每个人都在谈论的巨大错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094537/

相关文章:

security - 使用密码和种子进行加密时哪种过程更安全

c - 多文件直接编译ok,直接编译报错

c - 在 CS50 库中使用字符串

javascript - 我是否正确使用了Underscore的throttle方法?

web-services - 如何确保使用 jQuery AJAX 发送到 WebService 的数据是通过我的网站而不是某种攻击

c# - 将安全组添加到文件夹问题/System.Security.Principal.IdentityNotMappedException :

c - 在带有 C-API 的 Android native 环境中使用 Tensorflow-Lite GPU 委托(delegate)

谁能告诉我为什么这个程序会无限次运行?

performance - 为什么 32 字节的循环对齐会使代码更快?

performance - 导入与链接到 Excel 电子表格