CVE-2026-74481 in Linuxinformação

Sumário

de VulDB • 15/08/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

mm/page_reporting: usar system_freezable_wq para corrigir Use-After-Free durante o suspend (suspensão)

Durante o congelamento de gerenciamento de energia (PM freeze), como suspensão S3 ou hibernação S4, drivers de dispositivo como virtio_balloon redefinem seus dispositivos virtio subjacentes e excluem suas filas virtuais via vdev->config->del_vqs().

No entanto, as tarefas do page_reporting (page_reporting_process) eram agendadas no system_wq global. Como o system_wq não possui a flag WQ_FREEZABLE, o congelador de PM o ignora, deixando o page_reporting_process ativo durante o suspend.

Se páginas forem liberadas para o buddy allocator enquanto ocorre o suspend (por exemplo, quando o MM principal invoca o shrinker do balloon durante o salvamento da imagem de hibernação S4), o page reporting aciona a virtballoon_free_page_report() em filas virtuais já excluídas, resultando em um erro Use-After-Free / General Protection Fault:

[ 196.795226] general protection fault, probably for non-canonical address 0xaa1436fe70dae6df: 0000 [#1] SMP NOPTI
[ 196.825967] Workqueue: events page_reporting_process
[ 196.831038] RIP: 0010:virtqueue_add_split+0x233/0x4c0 [virtio_ring]
[ 196.927073] virtballoon_free_page_report+0x3a/0xe0 [virtio_balloon]
[ 196.946943] page_reporting_process+0x370/0x4f0

Corrija isso alterando as tarefas do page reporting para o system_freezable_wq. Isso garante que o congelador de PM pause o page_reporting_process antes que os drivers de dispositivo destruam suas filas virtuais de relatório. Como a tarefa de relatórios está congelada, a recuperação/liberação de memória (por exemplo, via execução do shrinker) pode retornar páginas com segurança ao MM durante o freeze sem acionar tarefas de relatório não congeladas em filas virtuais excluídas.

Isso está alinhado com o design existente do driver. O comentário no virtballoon_freeze() afirma: /* * A workqueue já está congelada pelo núcleo PM antes que esta * função seja chamada. */

Testes: Verifiquei essas correções usando a infraestrutura de virtualização do Google, executando iterações contínuas de suspend/resume (mais de 40 ciclos) enquanto gerava memória com stress-ng (`stress-ng --vm 4 --vm-bytes 60% --timeout 1`) para criar constantemente páginas livres para o buddy allocator. Também definimos o parâmetro `page_reporting_order` como 0 para tornar a tarefa de relatório de página altamente sensível, forçando-a a capturar quaisquer páginas livres de 4K. Isso confirmou que os crashes por UAF não são mais reproduzíveis.

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

Responsável

Linux

Reservar

15/08/2026

Divulgação

15/08/2026

Moderação

aceite

Entrada

VDB-390772

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Might our Artificial Intelligence support you?

Check our Alexa App!