uprobe: avoid out-of-bounds memory access of fetching args (CVE-2024-50067)
CVE编号
CVE-2024-50067利用情况
暂无补丁情况
N/A披露时间
2024-10-28漏洞描述
在Linux内核中,存在一个关于uprobe的漏洞已被修复。这个漏洞涉及到在获取参数时可能出现的越界内存访问问题。uprobe需要将参数放入一个percpu缓冲区,然后复制到环形缓冲区以避免非原子上下文问题。然而,用户空间的字符串、数组有时会非常大,但percpu缓冲区的大小只有一个页面大小。函数store_trace_args()不会检查这些数据是否超过一个页面大小,从而导致越界内存访问。漏洞复现步骤如下:1. 开启CONFIG_KASAN配置选项来构建内核。2. 编译并运行提供的测试程序。3. 使用objdump获取print_string函数的偏移量。4. 配置uprobe使用特定的偏移量,并启用事件。5. 运行测试程序,KASAN将报告错误。错误报告表明存在use-after-free的问题,具体是在strncpy_from_user函数中发生的。这是因为程序试图访问已经被释放的内存区域。这个问题在尝试将过大的字符串复制到缓冲区时触发,因为缓冲区的大小超过了一个页面的限制。为了修复这个问题,提交了一个补丁,限制了缓冲区最大长度小于页面大小,以避免store_trace_args()的越界内存访问。现在,当尝试获取超过一个页面大小的参数时,程序将不会触发越界访问,从而避免了潜在的漏洞。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接 |
---|
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

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