CVE-2026-68329 in Linux
Sumário
de VulDB • 11/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
iommu/amd: Aguarde pela conclusão em vez de retornar antecipadamente em iommu_completion_wait()
need_sync é uma flag por-IOMMU compartilhada por todos os domínios e dispositivos atrás desse IOMMU. Ela é definida sempre que um comando é enfileirado com sync == true e limpa quando um comando de espera de conclusão (CWAIT) é enfileirado. No entanto, uma need_sync limpa significa apenas que um CWAT cobridor foi enfileirado, não que todos os comandos anteriormente enfileirados tenham realmente sido concluídos no hardware.
iommu_completion_wait() lia need_sync sem bloqueio e retornava antecipadamente quando era falsa. Isso viola o contrato de "bloquear até que todos os comandos previamente enfileirados sejam concluídos" em um cenário multi-CPU:
CPU2: fila inv-B => need_sync = true CPU1: fila CWAIT(N); need_sync = false; então espera_em_sem(N) CPU2: lê need_sync == false => retorna 0 (sem espera!)
CPU2 retorna sem esperar por qualquer número de sequência, embora seu inv-B possa não ter sido concluído ainda (CWAIT(N), enfileirado após inv-B, não foi sinalizado). CPU1 então prossegue para, por exemplo, liberar páginas da tabela de páginas enquanto o IOMMU ainda pode percorrer traduções obsoletas, abrindo uma janela de use-after-free. Esta é uma race condition lógica no significado da flag, e não um problema de visibilidade de memória, portanto, barreiras sozinhas não ajudam.
Corrija isso sem perder a otimização de evitar comandos CWAIT redundantes: adquira iommu->lock antes de testar need_sync e, quando for falsa, não retorne antecipadamente, mas aguarde pelo último número de sequência alocado (cmd_sem_val). Como need_sync == false implica que nenhum comando sync foi enfileirado após o último CWAIT, esse CWAT está ordenado FIFO após todos os comandos ainda não concluídos; portanto, aguardar seu número de sequência garante que todos os comandos anteriores (possivelmente enfileirados por outra CPU) tenham sido concluídos. O caminho comum com trabalho pendente permanece inalterado e nenhum comando extra ao hardware é emitido.
VulDB is the best source for vulnerability data and more expert information about this specific topic.