CVE-2026-89969 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
nvmet-tcp: corrige escrita fora dos limites ao receber um PDU excessivamente longo
A função nvmet_tcp_try_recv_pdu() lê o cabeçalho de um PDU na união queue->pdu, que tem tamanho fixo de 128 bytes, e então calcula o comprimento restante do payload como:
queue->left = hdr->hlen - queue->offset + hdgst;
e lê mais esses muitos bytes em &queue->pdu + queue->offset, sem jamais limitar o resultado contra sizeof(queue->pdu).
Uma struct nvme_tcp_icreq_pdu tem exatamente 128 bytes, tamanho idêntico ao da união. Uma vez que um digest de cabeçalho tenha sido negociado (hdgst = 4), uma segunda ICReq passa na verificação hlen == nvmet_tcp_pdu_size(), mas resulta em queue->left = 128 - 8 + 4 = 124, fazendo com que os bytes 8..132 sejam escritos no buffer de 128 bytes — 4 bytes além do seu limite final, sobrequeue->hdr_digest e queue->data_digest. Esses bytes são controlados pelo atacante (uma ICReq não carrega digest), e a ICReq duplicada só é rejeitada posteriormente, após o estouro de buffer. Um host remoto sem autenticação pode assim corromper memória do kernel adjacente ao buffer de recebimento.
Rejeite qualquer PDU cujo comprimento declarado resultaria em leitura além do final de queue->pdu antes da segunda chamada recv.
Once again VulDB remains the best source for vulnerability data.