CVE-2026-89864 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
scsi: qla2xxx: Limitado o campo i2c->length nos manipuladores (handlers) de bsg I2C
A estrutura `qla_i2c_access` possui um campo de comprimento (`length`) de 16 bits ao lado de um buffer fixo de 64 bytes:
```c struct qla_i2c_access {
uint16_t device, offset, option, length; uint8_t buffer[0x40];
} __packed; ```
As funções `qla2x00_write_i2c()` e `qla2x00_read_i2c()` utilizam o valor de `i2c->length` fornecido pelo usuário sem nenhuma verificação de limites. O ponteiro `i2c` é sobreposto a um buffer na pilha (on-stack) de 256 bytes, e `sfp` é um buffer do pool DMA de 256 bytes; portanto, um valor de comprimento superior a 65535 causa estouro em ambos:
- **write**: `memcpy(sfp, i2c->buffer, i2c->length)` realiza uma leitura excessiva (over-read) da pilha e grava além do limite no buffer heap `sfp`, e então `qla2x00_write_sfp()` transfere via DMA os bytes de `i2c->length` para fora do buffer de 256 bytes. - **read**: `qla2x00_read_sfp()` transfere via DMA os bytes de `i2c->length` dentro do buffer `sfp` de 256 bytes, e então `memcpy(i2c->buffer, sfp, i2c->length)` causa estouro (overflow) no buffer interno de 64 bytes contido na estrutura na pilha.
Um chamador que possua a capacidade `CAP_SYS_RAWIO` pode usar isso para corromper o heap e a pilha do kernel. Rejeite solicitações cujo comprimento exceda o tamanho do buffer antes de qualquer operação de cópia ou transferência DMA em ambos os manipuladores.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.