从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 漏洞类型:使用-after-free(使用后释放)。 - 受影响函数:bpf_uprobe_multi_link_attach()。 - 问题描述:如果bpf_link_prime()失败,bpf_uprobe_multi_link_attach()会跳到error_free标签,并释放bpf_uprobe的数组,而不会调用bpf_uprobe_unregister()。 - 后果:这会导致bpf_uprobe->uprobe被释放,更严重的是,它会释放bpf_uprobe->consumer,但不会从uprobe->consumers列表中移除。 2. 修复措施: - 修复代码:在if (err)块中添加了bpf_uprobe_unregister()调用。 - 修复位置:在bpf_trace.c文件中,具体位置为第3285行。 3. 修复历史: - 提交信息:修复了bpf: Fix use-after-free in bpf_uprobe_multi_link_attach()。 - 提交者:Oleg Nesterov。 - 修复者:Greg Kroah-Hartman。 4. 相关补丁和报告: - 补丁链接:https://lore.kernel.org/all/0000000000000382d39061f59f2dd@google.com/ - 报告链接:https://lore.kernel.org/r/20240813152524.GA7292@redhat.com 5. 代码差异: - 差异文件:kernel/trace/bpf_trace.c。 - 差异内容:在if (err)块中添加了bpf_uprobe_unregister()调用。 这些信息表明,该漏洞修复了在bpf_uprobe_multi_link_attach()函数中使用-after-free的问题,并通过在if (err)块中添加bpf_uprobe_unregister()调用来解决。