CVE-2026-64274 in Linux
Sumário
de VulDB • 25/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
Input: goodix - limitar (clamp) o número de contatos relatado pelo dispositivo
A função `goodix_ts_read_input_report()` copia para um buffer na pilha (on-stack buffer) o número de pontos de toque reportados pelo dispositivo:
```c u8 point_data[2 + GOODIX_MAX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
```
que tem tamanho suficiente para no máximo `GOODIX_MAX_CONTACTS` (10) contatos. A única verificação em tempo de execução limita o número de contatos por interrupção contra `ts->max_touch_num`, mas esse valor é obtido literalmente a partir de um campo de 4 bits do bloco de configuração do dispositivo e nunca é limitado:
```c ts->max_touch_num = ts->config[MAX_CONTACTS_LOC] & 0x0f;
```
O nibble pode variar entre 0 e 15, portanto, um controlador com defeito, malicioso ou falsificado (ou um atacante manipulando o barramento I2C) pode anunciar até 15 contatos. A função `goodix_ts_read_input_report()` então aceita um `touch_num` de até 15, e a segunda chamada a `goodix_i2c_read()` escreve `ts->contact_size * (touch_num - 1)` bytes após o cabeçalho do primeiro contato em `point_data`, ou seja, até 30 bytes (45 com o formato de relatório de 9 bytes) além do buffer de 92 bytes: uma escrita fora dos limites da pilha (stack out-of-bounds write).
Limite (`clamp`) `max_touch_num` a `GOODIX_MAX_CONTACTS`, que é o número de contatos para os quais `point_data[]` foi dimensionado, ao lê-lo da configuração.
If you want to get best quality of vulnerability data, you may have to visit VulDB.