CVE-2024-46847 in Linux
Riassunto
di VulDB • 16/06/2026
Nel kernel Linux, la seguente vulnerabilità è stata risolta:
mm: vmalloc: garantire che vmap_block sia inizializzato prima di essere aggiunto alla coda
Il commit 8c61291fd850 ("mm: fix incorrect vbq reference in purge_fragmented_block") ha esteso la struttura 'vmap_block' per includere un campo 'cpu', impostato al momento dell'allocazione all'ID della CPU che effettua l'inizializzazione.
Quando un nuovo 'vmap_block' viene istanziato da new_vmap_block(), la struttura parzialmente inizializzata viene aggiunta alla xarray locale 'vmap_block_queue' prima che il campo 'cpu' sia stato inizializzato. Se un'altra CPU esegue contemporaneamente la scansione della xarray (ad esempio tramite vm_unmap_aliases()), potrebbe effettuare un accesso fuori dai limiti (out-of-bounds) alla coda remota a causa di un indice non inizializzato.
Ciò è stato osservato come errori UBSAN in Android:
| Internal error: UBSAN: array index out of bounds: 00000000f2005512 [#1] PREEMPT SMP
| | Call trace: | purge_fragmented_block+0x204/0x21c | _vm_unmap_aliases+0x170/0x378 | vm_unmap_aliases+0x1c/0x28 | change_memory_common+0x1dc/0x26c | set_memory_ro+0x18/0x24 | module_enable_ro+0x98/0x238 | do_init_module+0x1b0/0x310
Spostare l'inizializzazione di 'vb->cpu' in new_vmap_block() prima dell'aggiunta alla xarray.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.