CVE-2025-38248
bridge: mcast: 修复路由器端口配置期间的释放后使用漏洞
- 已发布
- 2025年7月9日
- 已更新
- 2026年8月5日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月8日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 18.5%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,已解决以下漏洞:bridge: mcast: 修复路由器端口配置期间的释放后使用问题 网桥维护着一个全局端口列表,这些端口后面驻留着组播路由器。在转发期间会查询该列表,以确保组播数据包被转发到这些端口,即使这些端口不是匹配的 MDB 条目中的成员。当启用每 VLAN 组播侦听时,每个端口上的每端口组播上下文会被禁用,并且该端口会从全局路由器端口列表中移除: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 # ip link add name dummy1 up master br1 type dummy # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 1 $ bridge -d mdb show | grep router 然而,即使启用了每 VLAN 组播侦听,该端口仍可被重新添加到全局列表中: # ip link set dev dummy1 type bridge_slave mcast_router 0 # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 自提交 4b30ae9adb04(“net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions”)以来,当启用每 VLAN 组播侦听时,端口上的组播禁用将禁用每 {端口, VLAN} 组播上下文,而不是每端口上下文。因此,即使端口被删除,它仍会保留在全局路由器端口列表中。当遍历该列表时(例如,向列表中添加新端口时),这将导致释放后使用 [1]: # ip link del dev dummy1 # ip link add name dummy2 up master br1 type dummy # ip link set dev dummy2 type bridge_slave mcast_router 2 类似地,过时条目也可能出现在每 VLAN 路由器端口列表中。当禁用每 VLAN 组播侦听时,每个端口上的每 {端口, VLAN} 上下文会被禁用,并且该端口会从每 VLAN 路由器端口列表中移除: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 # ip link add name dummy1 up master br1 type dummy # bridge vlan add vid 2 dev dummy1 # bridge vlan global set vid 2 dev br1 mcast_snooping 1 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 0 $ bridge vlan global show dev br1 vid 2 | grep router 然而,即使禁用了每 VLAN 组播侦听,该端口仍可被重新添加到每 VLAN 列表中: # bridge vlan set vid 2 dev dummy1 mcast_router 0 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 当从端口删除 VLAN 时,由于 VLAN 上未启用组播侦听,每 {端口, VLAN} 组播上下文将不会被禁用。因此,即使端口不再是 VLAN 的成员,它仍会保留在每 VLAN 路由器端口列表中。当遍历该列表时(例如,向列表中添加新端口时),这将导致释放后使用 [2]: # ip link add name dummy2 up master br1 type dummy # bridge vlan add vid 2 dev dummy2 # bridge vlan del vid 2 dev dummy1 # bridge vlan set vid 2 dev dummy2 mcast_router 2 通过在 br_multicast_port_ctx_deinit() 中将端口从相关的(全局或每 VLAN)路由器端口列表中移除来修复这些问题。该函数在端口删除期间以每端口组播上下文调用,并在 VLAN 删除期间以每 {端口, VLAN} 组播上下文调用。请注意,删除组播路由器定时器是不够的,因为它只处理临时组播路由器状态(1 或 3),而不处理永久状态(2)。 [1] BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560 Write of size 8 at addr ffff888004a67328 by task ip/384 [...] Call Trace: <TASK> dump_stack ---已截断---
来源
1C 语言编写的 CVE-2025-38248 漏洞利用程序,支持 ROP 与数据专用攻击技术,用于二进制漏洞利用研究与漏洞验证。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。