从这个网页截图中,可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 标题:net: do not delay dst_entries_add() in dst_release() - 描述:dst_entries_add() 使用 per-cpu 数据,这些数据可能会在 netns 拆卸时被 freed。在 ip6_route_net_exit() 调用 dst_entries_destroy() 之前,需要释放所有与这个 netns 相关联的 dsts,通过调用 dst_release()。dst_entries_destroy() 在 dst_destroy() 中使用,但在 dst_destroy() 中,dst_entries_destroy() 可能已经调用过。因此,需要在 dst_destroy() 中更早地减少 dsts 的数量。 2. 修复措施: - 代码更改:在 dst_destroy() 中,如果 dst->flags 不为 DST_NOCOUNT,则在 dst->ops->destroy() 之前调用 dst_entries_add()。 - 函数调用:在 dst->ops->destroy() 之后,调用 dst->ops->destroy(),然后调用 netdev_put()。 3. 修复细节: - 函数调用顺序:在 dst->ops->destroy() 之前调用 dst_entries_add(),然后在 dst->ops->destroy() 之后调用 netdev_put()。 - 代码片段: 4. 修复原因: - 安全问题:在 dst_destroy() 中,dst_entries_destroy() 可能已经调用过,导致 dst->flags 不为 DST_NOCOUNT。因此,需要在 dst_destroy() 中更早地减少 dsts 的数量。 - 代码优化:通过在 dst_destroy() 中更早地减少 dsts 的数量,可以避免在 dst_destroy() 中调用 dst_entries_destroy() 时出现竞态条件。 5. 修复影响: - 修复范围:修复了在 CONFIG_XFRM 情况下,dst_destroy() 可能调用 dst_release_immediate(),这可能会导致 UAF(使用后指针)。 - 修复范围:修复了在 IPv4 中,dst_race_in_sk_dst_get() 的问题。 6. 修复作者: - 作者:Eric Dumazet - 贡献者:Greg Kroah-Hartman 7. 修复状态: - 状态:已修复 - 状态:已测试 8. 修复链接: - 链接:https://patchwork.ore.org/patch/20241008143110.1064899-1-edumazet@google.com/ 通过这些信息,可以了解该漏洞的详细情况、修复措施以及修复后的状态。