聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
该攻击针对的是2018年提出的为缓解 Spectre的Retpolines (return trampolines)。Spectre 漏洞存在的原因是分支的错误预测可导致攻击者看到私密数据。Reptolines 可通过 return 取代间接的跳转和调用缓解Spectre 攻击。和在深度调用堆栈中的return预测行为关联的风险被认为较低,因此reptolines 成为针对 Spectre 的主要缓解措施。
由于在正常的微架构条件下,returns 不应被预测为间接分支,因此returns 被认为无法被用于泄露内存,但实际上研究人员发现利用是有效的。逆向return 指令的行为后,研究人员通过Retbleed 利用return 指令,触发特定的微架构条件,强制returns 可像间接分支那样被预测,适用于AMD和英特尔处理器。
研究人员在论文中指出,“我们逆向工程结果表明,所有充分遵循深度调用堆栈的return 指令可通过英特尔CPU上的精准分支历史遭劫持。在AMD CPU 上,我们发现可劫持任何return 指令,不管之前的调用堆栈是什么,只要在分支投毒期间正确选择之前的分支目的地即可。”
研究人员提到,在AMD芯片上无需下溢return 栈缓冲区,因为只要存在碰撞的间接分支即可出现错误预测。更重要的是,他们发现可以使用间接jump 投毒return 指令并诱骗分支预测器来预测间接的分支目标而不是return。研究人员指出,“这意味着我们可通过系统调用触及的任意return 均可遭利用,而这些return 有很多。我们还发现AMD CPU展现出phantom jumps(CVE-2022-23825):即使缺少任何响应的分支指令,也会发生分支预测。通过利用和Retbleed一样的技术,我们可完全省略return 指令并在任意既定指令上观察分支目标预测。”
研究人员还发现很多微架构允许在用户模式下创建内核return 指令碰撞,意味着低权限攻击者可“通过分支到内核内存的方法控制此类return指令的预测目标”,即使在启用了所有已部署缓解措施的系统上也不例外。
研究人员基于Linux 测试和追踪工具构建了分析架构来识别依赖于微架构的易受攻击的return指令,攻击者可利用该指令控制注册表或内存,“我们发现受retpoline 保护的英特尔和AMD CPU 易受 Retbleed 攻击。Retpoline作为Spectre 的缓解措施未能将return 指令考虑为攻击向量。”
英特尔公司分配了漏洞编号CVE-2022-29901和CVE-2022-28693,通过在易受 Retbleed 攻击的系统上启用 IBRS来阻止软件控制间接分支的预测目标。
AMD 分配的漏洞编号为CVE-2022-29900和CVE-2022-23825,并提供jmp2ret作为缓解措施,以直接跳转到return 形实替换程序替换了内核中的returns。这些解决方案引发的开销可高达28%。
https://www.securityweek.com/retbleed-new-speculative-execution-attack-targets-intel-amd-processors
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
原文始发于微信公众号(代码卫士):Retbleed:针对英特尔和AMD处理器的推断性执行攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论