谈谈龙芯的 LoongLeak 漏洞

谈谈龙芯的 LoongLeak 漏洞

💡 原文中文,约2000字,阅读约需5分钟。
📝

内容提要

龙芯LA464/LA664微架构存在LoongLeak漏洞,可泄露物理寄存器残留数据,类似AMD的ZenBleed。作者独立发现并报告,龙芯确认其为已知漏洞。修复需微架构层面固定多余位数,但龙芯不支持微码更新。漏洞危害有限,但可能吸引更多研究,龙芯需在设计中兼顾性能与安全。

🔎

延伸解读

漏洞原理的两种推测

关于LoongLeak漏洞的原理,目前存在两种推测:一是论文中提出的从L1D缓存行泄露数据;二是作者更倾向的物理寄存器高位未清空假说。作者尚未深入验证哪种推测成立,亦可能两者并存。但无论哪种,LASX寄存器高位部分在执行LSX指令后本不应被使用,更不应泄露数据,这与ZenBleed类似。理解原理对于评估漏洞影响和制定修复方案至关重要。

修复的挑战:无微码更新

修复LoongLeak需要在微架构层面固定多余的位数,例如置为全零或全一,具体实现取决于泄漏根源。然而,龙芯处理器不支持微码更新,无法像AMD那样通过发布微码来修补。这意味着对于已售出的硬件,可能无法通过软件更新修复,只能依赖硬件版本更新。这凸显了处理器设计时预留冗余控制位(如chicken bit)的重要性。

对龙芯安全研究的启示

此次漏洞披露可能吸引更多研究者关注龙架构,尤其是USENIX Security 26论文发表后,新的研究方向已被开辟,此前各类攻击方法很可能被陆续移植到龙架构上进行测试。这为龙芯提出了新挑战:在微架构设计阶段,需在性能与安全之间取得平衡,并做好冗余设计。不过,所有处理器厂商都经历过类似阶段,龙芯也不例外。

Q&A

LoongLeak漏洞是什么?

LoongLeak是龙芯LA464/LA664微架构部分步进中存在的一个漏洞,可泄露物理寄存器中的残留数据,类似于AMD的ZenBleed漏洞。

LoongLeak漏洞是如何被发现的?

作者在梳理适用于龙架构的经典微架构攻击方法时,注意到ZenBleed,并结合Chips and Cheese关于LSX指令后向量寄存器高位出现随机值的分析,通过实验在LA464和LA664上复现了类似漏洞,并独立报告给龙芯。

LoongLeak漏洞的原理是什么?

目前有两种推测:一是从L1D缓存行泄露数据,二是物理寄存器高位未清空。作者更倾向于后者,但尚未完全验证,也可能两者并存。

LoongLeak漏洞如何修复?

需要在微架构层面固定多余的位数,例如置为全零或全一,具体取决于泄漏根源。但由于龙芯处理器不支持微码更新,无法像AMD那样通过微码修补。

LoongLeak漏洞的危害有多大?

攻击者需要本地执行权限,可泄漏部分敏感信息,但数据碎片化,拼凑难度大,危害相比GhostWrite等任意内存读写漏洞要弱得多。

龙芯对LoongLeak漏洞的披露有何反应?

龙芯确认这是已知漏洞的独立发现,并发布了官方公告,披露流程总体得体。

LoongLeak漏洞对龙芯未来有什么影响?

可能吸引更多研究者关注龙架构,新的攻击方法可能被移植测试,龙芯需要在设计中兼顾性能与安全,并做好冗余设计。

🏷️

标签

➡️

继续阅读