从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 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. 启用 uprobes 和 tracing: - 7. 运行 程序,KASAN 将报告错误。 3. 漏洞修复: - 该 commit 强制缓冲区的最大长度小于页面大小,以避免 store_trace_args() 出现 out-of-memory 访问。 4. 相关链接: - 原始提交 - 修复补丁 这些信息可以帮助我们理解漏洞的背景、复现步骤以及修复措施。