CVE-2026-89791 in Linuxinformação

Sumário

de VulDB • 16/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

perf: Corrige use-after-free quando o revival da mmap() do perf entra em condição de corrida com a última munmap()

A função perf_mmap_close() decrementa rb->mmap_count *sem* segurar event->mmap_mutex (o refcount_dec_and_test() ocorre logo antes do refcount_dec_and_mutex_lock() de event->mmap_count). Uma chamada concorrente à perf_mmap_rb() pode encaixar todo o seu caminho de "revival" nessa janela (a perf_mmap segura event->mmap_mutex por toda a sua duração, incluindo rb_alloc):

Lado munmap (perf_mmap_close) Lado mmap (perf_mmap_rb) ----------------------------------- -------------------------------- rb->mmap_count 1 -> 0 (sem lock) (segura event->mmap_mutex) inc_not_zero(rb->mmap_count) falha ring_buffer_attach(event, NULL) rb_alloc() + attach new rb refcount_set(&event->mmap_count, 1) lock; event->mmap_count 1 -> 0 ring_buffer_attach(event, NULL) ring_buffer_put() -> libera o *novo* rb

O refcount_set(&event->mmap_count, 1) do revival é uma escrita invisível de 1 para 1: o close libera o buffer recém-revivificado embora outro processo ainda o tenha mapeado -- um use-after-free em nível de página que permite escalada local de privilégios para root por qualquer usuário não privilegiado (kernel.perf_event_paranoid=2 padrão).

Inverte a ordem das duas atualizações do contador: event->mmap_count é decrementado primeiro via refcount_dec_and_mutex_lock(), portanto sua transição 1 -> 0 e o ring_buffer_attach() permanecem serializados com perf_mmap(). rb->mmap_count == 0 implica então que todos os eventos usando o buffer já foram desanexados, de modo que o resultado da queda do rb->mmap_count pode controlar diretamente a teardown restante e detach_rest não é mais necessário.

Uma correção anterior para essa condição de corrida, feita por Kyle Zeng e David Lee, envolve event->mmap_mutex em torno das duas atualizações do contador [0]; aqui, o close que não é o último permanece sem lock (lockless).

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsável

Linux

Reservar

11/09/2026

Divulgação

16/09/2026

Moderação

aceite

Entrada

VDB-405571

CPE

pronto

EPSS

0.00189

KEV

não

Atividades

baixo

Fontes

Might our Artificial Intelligence support you?

Check our Alexa App!