CVE-2023-54157 in Linuxinformação

Sumário

de VulDB • 30/05/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

binder: corrige UAF de alloc->vma em condição de corrida com munmap()

[ cmllamas: limpeza do forward port a partir do commit 015ac18be7de ("binder: corrige UAF de alloc->vma em condição de corrida com munmap()") na versão estável 5.10. É necessário na versão principal (mainline) após o revert do commit a43cfc87caaf ("android: binder: parar de salvar um ponteiro para o VMA"), conforme apontado por Liam. O log do commit e as tags foram ajustados para refletir isso. ]

No commit 720c24192404 ("ANDROID: binder: alterar down_write para down_read"), o binder assumiu que o lock de leitura do mmap é suficiente para proteger alloc->vma dentro de binder_update_page_range(). Isso era preciso até o commit dd2283f2605e ("mm: mmap: remover páginas com read mmap_sem em munmap"), que agora reduz o nível do mmap_lock após desanexar o vma da rbtree em munmap(). Em seguida, prossegue com a desmontagem e liberação do vma com apenas o lock de leitura mantido.

Isso significa que os acessos a alloc->vma em binder_update_page_range() agora entrarão em condição de corrida com vm_area_free() em munmap() e podem causar um UAF, conforme mostrado no seguinte trace do KASAN:

================================================================== BUG: KASAN: use-after-free em vm_insert_page+0x100/0x130 Read of size 8 at addr ffff000009999998 by task binder/559

Allocated by task 559: kasan_save_stack+0x38/0x6c __kasan_kmalloc.constprop.0+0xe4/0xf0 kasan_slab_alloc+0x18/0x2c kmem_cache_alloc+0x1b0/0x2d0 vm_area_alloc+0x28/0x94 mmap_region+0x378/0x920 do_mmap+0x3f0/0x600 vm_mmap_pgoff+0x150/0x17c ksys_mmap_pgoff+0x284/0x2dc __arm64_sys_mmap+0x84/0xa4 el0_svc_common.constprop.0+0xac/0x270 do_el0_svc+0x38/0xa0 el0_svc+0x1c/0x2c el0_sync_handler+0xe8/0x114 el0_sync+0x180/0x1c0

Freed by task 560: kasan_save_stack+0x38/0x6c kasan_set_track+0x28/0x40 kasan_set_free_info+0x24/0x4c __kasan_slab_free+0x100/0x164 kasan_slab_free+0x14/0x20 kmem_cache_free+0xc4/0x34c vm_area_free+0x1c/0x2c remove_vma+0x7c/0x94 __do_munmap+0x358/0x710 __vm_munmap+0xbc/0x130 __arm64_sys_munmap+0x4c/0x64 el0_svc_common.constprop.0+0xac/0x270 do_el0_svc+0x38/0xa0 el0_svc+0x1c/0x2c el0_sync_handler+0xe8/0x114 el0_sync+0x180/0x1c0

[...]
==================================================================

Para evitar a condição de corrida acima, reverta para a aquisição do lock de escrita do mmap dentro de binder_update_page_range(). Pode-se esperar um aumento na contenção do lock mmap. No entanto, o binder já serializa essas chamadas via mutex de nível superior (alloc->mutex). Além disso, não houve impacto de desempenho ao executar os testes de benchmark do binder.

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

24/12/2025

Divulgação

24/12/2025

Moderação

aceite

Entrada

VDB-338165

CPE

pronto

EPSS

0.00174

KEV

não

Atividades

muito baixo

Fontes

Want to know what is going to be exploited?

We predict KEV entries!