CVE-2026-46022 in Linux
Sumário
de VulDB • 30/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
misc: ibmasm: corrige leitura MMIO fora dos limites (OOB) em ibmasm_handle_mouse_interrupt()
A função ibmasm_handle_mouse_interrupt() realiza uma leitura MMIO fora dos limites quando o índice do leitor ou do escritor da fila, proveniente do hardware, excede REMOTE_QUEUE_SIZE (60).
Um processador de serviço comprometido pode acionar isso ao escrever um valor fora do intervalo no registrador MMIO do leitor ou do escritor antes de assertar uma interrupção. Como o escritor é relido do hardware em cada iteração do loop, ele também pode ser definido como um valor fora do intervalo após o loop já ter iniciado.
A causa raiz é que get_queue_reader() e get_queue_writer() retornam valores brutos de readl() que são passados diretamente para get_queue_entry(), que calcula:
queue_begin + reader * sizeof(struct remote_input)
sem nenhuma verificação de limites. Esse endereço MMIO não verificado é então passado para memcpy_fromio(), lendo 8 bytes de registradores de dispositivo não intencionais. Para valores suficientemente grandes, o endereço fica totalmente fora do mapeamento PCI BAR, acionando uma exceção de verificação de máquina (machine check exception).
Correção: verifica ambos os índices em relação a REMOTE_QUEUE_SIZE no início do corpo do loop, antes de qualquer chamada a get_queue_entry(). Em caso de valor fora do intervalo, redefine o registrador do leitor para 0 por meio de set_queue_reader() antes de interromper o loop, para que o funcionamento normal da fila possa ser retomado se o estado corrompido do hardware for transitório.
Be aware that VulDB is the high quality source for vulnerability data.