CVE-2026-64496 in Linux
Sumário
de VulDB • 26/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
iio: evento: Corrigir condição de corrida no redefinição da fila de eventos (event FIFO)
`iio_event_getfd()` cria o descritor de arquivo de evento com `anon_inode_getfd()`, que aloca um novo fd, cria o arquivo anônimo e o instala na tabela de fds do processo antes de retornar ao chamador.
O código IIO redefine a fila de eventos (event FIFO) após `anon_inode_getfd()` ter retornado, mas antes que `IIO_GET_EVENT_FD_IOCTL` tenha copiado o número fd para userspace. No entanto, como as tabelas de fds são compartilhadas entre threads, outra thread pode adivinhar o número do fd recém-alocado e emitir uma chamada `read()` assim que o fd for instalado.
Isso significa que `kfifo_to_user()`, em `iio_event_chrdev_read()`, pode ser executado em paralelo com `kfifo_reset_out()`, em `iio_event_getfd()`.
A documentação do kfifo afirma que `kfifo_reset_out()` é segura apenas quando chamada a partir da thread leitora e há apenas um leitor concorrente. Caso contrário, é perigosa e deve ser tratada da mesma forma que `kfifo_reset()`.
Se isso acontecer, `kfifo_to_user()` pode avançar o índice de saída (`out`) do FIFO com base no estado anterior à redefinição, depois que a redefinição já tiver movido o índice `out` para o atual índice `in`. Isso pode deixar o FIFO com um índice `out` além do índice `in`. Uma chamada posterior ao `read()` pode então detectar um comprimento de FIFO em underflow e copiar mais dados do que os contidos no buffer da fila de eventos. Isso pode resultar em uma leitura fora dos limites (out-of-bounds) e vazamento de memória adjacente do kernel para userspace.
Mova a redefinição do FIFO antes de `anon_inode_getfd()`. Nesse ponto, o fd do evento está marcado como ocupado, mas o novo fd ainda não foi instalado, portanto, userspace não pode acessá-lo enquanto o FIFO é redefinido.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.