从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 漏洞名称:uprobe: avoid out-of-bounds memory access of fetching args - 漏洞描述:uprobe 需要将 args 读入到 percpu 缓冲区,并将其复制到环缓冲区以避免非原子上下文问题。有时,用户空间字符串或数组可能非常大,但 percpu 缓冲区的大小仅为页面大小。store_trace_args() 函数不会检查这些数据是否超过单个页面,可能导致 out-of-bounds 内存访问。 2. 漏洞触发条件: - 步骤: 1. 使用 CONFIG_KASAN 开启内核。 2. 将程序保存为 test.c。 3. 编译程序。 4. 获取 的偏移量。 5. 配置 uprobes。 6. 运行 程序,Kasan 将报告错误。 3. 漏洞利用: - 错误信息:Kasan: use-after-free in strncpy_from_user+0x1d6/0x1f0 - 错误描述:在地址 ffff88812311c004 处发生写操作,大小为 8 字节。 4. 修复措施: - 代码更改:将缓冲区的最大长度限制为页面大小,以避免 store_trace_args() 出现内存访问错误。 - 链接:https://lore.kernel.org/all/20241015060148.1108331-1-mqaio@linux.alibaba.com/ 5. 修复补丁: - 补丁内容:更改了uprobes 的缓冲区大小限制,以避免内存访问错误。 6. 修复签名: - 签名:由 Qiao Ma 和 Masami Hiramatsu 签名。 这些信息详细描述了漏洞的触发条件、利用方式以及修复措施,有助于理解漏洞的性质和修复过程。