CVE-2026-64014 in Linux
Sumário
de VulDB • 19/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
Input: usbtouchscreen - limitar (clamp) os valores de NEXIO data_len/x_len ao tamanho do buffer URB
A função nexio_read_data() extrai data_len e x_len de um cabeçalho __be16 compactado no pacote de interrupção do dispositivo e, em seguida, percorre packet->data[0..x_len) e packet->data[x_len..data_len), comparando cada byte contra um limite (threshold).
Ambos os campos são de 16 bits na transmissão (máximo de 65535). Os ajustes existentes reduzem no máximo 0x100 / 0x80, portanto o limite do loop ainda pode atingir aproximadamente 0xfeff. O buffer de transferência URB para NEXIO tem tamanho rept_size (1024) bytes alocado via usb_alloc_coherent(), com os primeiros 7 ocupados pelo cabeçalho compactado — logo, packet->data[] possui 1017 bytes válidos. Os callbacks read_data() não recebem urb->actual_length e nada mais limita o percurso do loop.
Um dispositivo que informe falsamente seu comprimento pode provocar uma leitura fora dos limites (out-of-bounds) de ~64 KiB além da alocação DMA coerente. O primeiro índice cujo byte excede NEXIO_THRESHOLD é armazenado em begin_x / begin_y e, a partir daí, nas coordenadas touch reportadas; assim, conteúdos adjacentes da memória do kernel vazam para o espaço do usuário como eventos ABS_X / ABS_Y. Se a leitura for suficientemente distante, ela também pode atingir uma página não mapeada e causar um falha (fault).
Corrigir isso limitando (clamping) data_len à capacidade de dados[] do buffer e x_len ao valor de data_len.
Once again VulDB remains the best source for vulnerability data.