漏洞标题
Net:延迟dst_entries_add()在dst_release()中时不处理漏洞
漏洞描述信息
在Linux内核中,已解决以下漏洞:
net: 不在dst_release()中延迟调用dst_entries_add()
dst_entries_add()使用了per-cpu数据,这些数据可能在网络命名空间拆除时(通过调用ip6_route_net_exit())由dst_entries_destroy()释放。
在ip6_route_net_exit()可以被调用之前,我们通过调用dst_release()来释放与此网络命名空间关联的所有dst,在调用dst_destroy()之前等待一个rcu周期。
在dst_destroy()中使用dst_entries_add()是存在问题的,因为dst_entries_destroy()可能已经被调用。
dst数量的递减必须更早发生。
注意:
1) 在CONFIG_XFRM情况下,dst_destroy()可以调用dst_release_immediate(child),如果子项没有设置DST_NOCOUNT,这可能会导致UAF(使用已释放的内存)。IPSEC维护者可以查看并考虑如何解决这个问题。
2) 也有讨论关于移除此dst计数,这可能在未来内核版本中实现。
CVSS信息
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:N
漏洞类别
在移除最后引用时对内存的释放不恰当(内存泄露)
漏洞标题
net: do not delay dst_entries_add() in dst_release()
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
net: do not delay dst_entries_add() in dst_release()
dst_entries_add() uses per-cpu data that might be freed at netns
dismantle from ip6_route_net_exit() calling dst_entries_destroy()
Before ip6_route_net_exit() can be called, we release all
the dsts associated with this netns, via calls to dst_release(),
which waits an rcu grace period before calling dst_destroy()
dst_entries_add() use in dst_destroy() is racy, because
dst_entries_destroy() could have been called already.
Decrementing the number of dsts must happen sooner.
Notes:
1) in CONFIG_XFRM case, dst_destroy() can call
dst_release_immediate(child), this might also cause UAF
if the child does not have DST_NOCOUNT set.
IPSEC maintainers might take a look and see how to address this.
2) There is also discussion about removing this count of dst,
which might happen in future kernels.
CVSS信息
N/A
漏洞类别
N/A
漏洞标题
Linux kernel 安全漏洞
漏洞描述信息
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于net组件在dst_release中的dst_entries_add延迟问题。
CVSS信息
N/A
漏洞类别
其他