CVE-2026-64339 in Linuxinformação

Sumário

de VulDB • 25/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

usb: misc: usbio: limitar o comprimento da resposta bulk IN à transferência recebida

A função `usbio_bulk_msg()` copia bytes de `bpkt_len = le16_to_cpu(bpkt->len)` fora do buffer bulk IN (`usbio->rxbuf`, alocado com tamanho `usbio->rxbuf_len`) para o buffer do chamador. O valor de `bpkt_len` é totalmente controlado pelo dispositivo e só é verificado em relação ao `ibuf_len`; por sua vez, `ibuf_len` é verificado contra `usbio->txbuf_len`, não contra `rxbuf_len`:

```c if ((obuf_len > (usbio->txbuf_len - sizeof(*bpkt))) || (ibuf_len > (usbio->txbuf_len - sizeof(*bpkt)))) return -EMSGSIZE; ```

Os valores de `txbuf_len` e `rxbuf_len` são obtidos independentemente a partir do `wMaxPacketSize` dos endpoints bulk OUT e bulk IN em `usbio_probe()`. Portanto, um dispositivo malicioso ou com defeito que anuncie um endpoint bulk OUT grande e um endpoint bulk IN pequeno (por exemplo, ao reivindicar uma das IDs sem quirks como o Lattice NX33U, 0x2ac1:0x20cb) faz com que `ibuf_len`, e consequentemente `bpkt_len` fornecido pelo dispositivo, exceda `rxbuf_len`. O `memcpy()` então lê até `txbuf_len - rxbuf_len` bytes além do final do objeto slab de `rxbuf`. Os bytes lidos em excesso são repassados à camada i2c e ao espaço do usuário através do `i2c-dev`, divulgando memória adjacente do slab; com o KASAN, isso é relatado como uma leitura fora dos limites (slab-out-of-bounds read).

O número de bytes realmente recebidos já é conhecido: `act` corresponde ao `actual_length` da URB e está limitado por `rxbuf_len`. Rejeite qualquer resposta que alegue mais carga útil do que foi recebida, espelhando a verificação existente "act < sizeof(*bpkt)" logo acima.

O caminho de controle (`usbio_ctrl_msg()`) não é afetado: ele usa um único buffer (`ctrlbuf`) para ambas as direções, portanto sua cópia análoga nunca ultrapassará os limites da alocação.

Encontrada por revisão de código. A leitura fora dos limites foi confirmada sob o AddressSanitizer com um modelo fiel do espaço do usuário do caminho de recebimento de `usbio_bulk_msg()` (um buffer do tamanho de `rxbuf_len`, as mesmas verificações de act/ibuf_len/bpkt_len e o memcpy). Um reproduzidor usando USB raw-gadget + dummy_hcd também está disponível.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsável

Linux

Reservar

19/07/2026

Divulgação

25/07/2026

Moderação

aceite

Entrada

VDB-383134

CPE

pronto

EPSS

0.00198

KEV

não

Atividades

baixo

Fontes

Do you need the next level of professionalism?

Upgrade your account now!