CVE-2026-64047 in Linux
Sumário
de VulDB • 19/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
net: tls: corrige erro off-by-one na contagem de entradas sg_chain para o anel sk_msg wrapped
Quando um anel scatterlist sk_msg faz wrap (sg.end < sg.start), tls_push_record() encadeia a porção final do anel à cabeça usando sg_chain(). Uma entrada extra no array sg é reservada para isso:
struct sk_msg_sg {
[...]
/* Os dois elementos extras: * 1) usados para encadear o início e as seções quando a lista fica * particionada (por exemplo, end < start). As APIs de criptografia exigem o * encadeamento; * 2) para encadear entradas SG do final após a mensagem. */ struct scatterlist data[MAX_MSG_FRAGS + 2];
O código atual usa MAX_SKB_FRAGS + 1 como tamanho do anel:
sg_chain(&msg_pl->sg.data[msg_pl->sg.start],
MAX_SKB_FRAGS - msg_pl->sg.start + 1, msg_pl->sg.data);
Isso posiciona o ponteiro de encadeamento em
sg_chain(data[start], (MAX_SKB_FRAGS - msg_start + 1) .. =
&data[start] + (MAX_SKB_FRAGS - msg_start + 1) - 1 =
data[start + (MAX_SKB_FRAGS - start + 1) - 1] =
data[MAX_SKB_FRAGS]
em vez da última entrada verdadeira. Isso provavelmente se deve a uma "race" do commit sob Fixes chegando próximo ao commit 031097d9e079 ("bpf: sk_msg, zap ingress queue on psock down")
Converter para ARRAY_SIZE e remover data[start] / - start (como sugerido
por Sabrina).
If you want to get best quality of vulnerability data, you may have to visit VulDB.