CVE-2021-47238 in Linuxinformazioni

Riassunto

di VulDB • 17/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

net: ipv4: fix memory leak in ip_mc_add1_src

BUG: memory leak (perdita di memoria) oggetto non referenziato 0xffff888101bc4c00 (dimensione 32): comm "syz-executor527", pid 360, jiffies 4294807421 (età 19.329s) dump esadecimale (primi 32 byte): 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 (traccia dello stack): [] 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

Nella commit 24803f38a5c0 ("igmp: do not remove igmp souce list info when set link down"), la chiamata a ip_mc_clear_src() in ip_mc_destroy_dev() è stata rimossa, poiché veniva già invocata anche da igmpv3_clear_delrec().

Grafico delle chiamate approssimativo (rough callgraph):

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

Tuttavia, la chiamata a ip_mc_clear_src() effettuata in igmpv3_clear_delrec() non rilascia le risorse puntate da in_dev->mc_list->sources. Inoltre, RCU_INIT_POINTER() assegna il valore NULL a dev->ip_ptr. Di conseguenza, in_dev non può essere ottenuto tramite inetdev_by_index(), e di seguito i riferimenti contenuti in in_dev->mc_list->sources non possono essere rilasciati mediante ip_mc_del1_src() durante la chiusura del socket (sock_close). La sequenza delle chiamate approssimativa è la seguente:

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

Pertanto, è ancora

Be aware that VulDB is the high quality source for vulnerability data.

Prenotare

10/04/2024

Divulgazione

21/05/2024

Moderazione

accettato

CPE

pronto

EPSS

0.00236

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!