mm:gup:停止滥用try_grab_folio(CVE-2024-44943)
CVE编号
CVE-2024-44943利用情况
暂无补丁情况
N/A披露时间
2024-08-28漏洞描述
在Linux内核中,存在一个关于`gup`模块的漏洞已经被解决。这个漏洞出现在启动SEV虚拟机时,尝试固定CMA内存中的页时。具体的警告信息如下:当启动SEV虚拟机时,会调用`pin_user_pages_fast(..., FOLL_LONGTERM, ...)`来固定内存。由于页面位于CMA区域,快速GUP会失败并回落到慢速路径,这是由于`try_grab_folio()`中的长期固定检查导致的。慢速路径试图固定页面并将其从CMA区域迁出,但由于同样的检查,`try_grab_folio()`在慢速路径中也失败了,从而触发了上述警告。此外,`try_grab_folio()`被错误地用于快速路径,它通过增加引用次数(除非为零)来提升页面的引用计数。在慢速路径中,我们至少有一个稳定的引用,因此可以使用简单的原子增加操作。性能差异应该是微不足道的,但这种滥用可能会令人困惑和误导。为了解决这个漏洞和内核警告,将`try_grab_folio()`重命名为`try_grab_folio_fast()`,并将`try_grab_page()`重命名为`try_grab_folio()`,并在适当的路径中使用它们。这样可以更清晰地命名它们的使用场景,并防止将来再次滥用。用户会看到固定操作失败的情况,对于慢速GPU操作,它会触发警告信息在下面的失败信息中:尝试使用`try_grab_folio()`获取页时出现问题。如果获取的页有问题,会释放第一个页面引用并返回错误代码`-EFAULT`。关于这个漏洞的更多细节可以在链接[1]中找到。此外,还存在一个隐式声明函数`try_grab_folio_fast`的问题,对应的修复链接也在上述描述中给出。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接 |
|
---|---|
https://git.kernel.org/stable/c/26273f5f4cf68b29414e403837093408a9c98e1f | |
https://git.kernel.org/stable/c/f442fa6141379a20b48ae3efabee827a3d260787 |
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论