CVE-2021-47238 in Linuxinformação

Sumário

de VulDB • 17/06/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

net: ipv4: corrige vazamento de memória em ip_mc_add1_src

BUG: vazamento de memória objeto não referenciado 0xffff888101bc4c00 (tamanho 32): comm "syz-executor527", pid 360, jiffies 4294807421 (idade 19.329s) dump hexadecimal (primeiros 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 01 00 00 00 00 00 00 00 ac 14 14 bb 00 00 02 00 ................ backtrace: [] kmalloc include/linux/slab.h:558 [inline]
[] kzalloc include/linux/slab.h:688 [inline]
[] ip_mc_add1_src net/ipv4/igmp.c:1971 [inline]
[] ip_mc_add_src+0x95f/0xdb0 net/ipv4/igmp.c:2095
[] ip_mc_source+0x84c/0xea0 net/ipv4/igmp.c:2416
[] do_ip_setsockopt net/ipv4/ip_sockglue.c:1294 [inline]
[] ip_setsockopt+0x114b/0x30c0 net/ipv4/ip_sockglue.c:1423
[] raw_setsockopt+0x13d/0x170 net/ipv4/raw.c:857
[] __sys_setsockopt+0x158/0x270 net/socket.c:2117
[] __do_sys_setsockopt net/socket.c:2128 [inline]
[] __se_sys_setsockopt net/socket.c:2125 [inline]
[] __x64_sys_setsockopt+0xba/0x150 net/socket.c:2125
[] do_syscall_64+0x40/0x80 arch/x86/entry/common.c:47
[] entry_SYSCALL_64_after_hwframe+0x44/0xae

No commit 24803f38a5c0 ("igmp: não remova as informações da lista de fontes igmp ao definir link down"), a função ip_mc_clear_src() em ip_mc_destroy_dev() foi removida, porque ela também era chamada em igmpv3_clear_delrec().

Callgraph aproximado:

inetdev_destroy -> ip_mc_destroy_dev -> igmpv3_clear_delrec -> ip_mc_clear_src -> RCU_INIT_POINTER(dev->ip_ptr, NULL)

No entanto, a função ip_mc_clear_src() chamada em igmpv3_clear_delrec() não libera in_dev->mc_list->sources. E o RCU_INIT_POINTER() atribui NULL para dev->ip_ptr. Como resultado, in_dev não pode ser obtido através de inetdev_by_index(), e consequentemente in_dev->mc_list->sources não podem ser liberados por ip_mc_del1_src() no sock_close. A sequência aproximada é:

sock_close -> __sock_release -> inet_release -> ip_mc_drop_socket -> inetdev_by_index -> ip_mc_leave_src -> ip_mc_del_src -> ip_mc_del1_src

Portanto, ainda precisamos chamar ip_mc_clear_src() em ip_mc_destroy_dev() para liberar in_dev->mc_list->sources.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Fontes

Interested in the pricing of exploits?

See the underground prices here!