Linux · Linux Kernel · CVE-2024-49948
Nome do software vulnerável e versões afetadas:
Versões do kernel Linux anteriores à 6.6.58
Descrição:
O problema decorre de verificações de validade insuficientes na função `qdisc pkt len init()`, especificamente ao processar pacotes `SKB GSO DODGY`. A função `virtio net hdr to skb()` não analisa completamente os cabeçalhos TCP, garantindo apenas que tenham pelo menos 20 bytes de comprimento. Isso permite que um usuário crie um pacote ‘GSO’ malicioso com comprimento total de 80 bytes, composto por um cabeçalho IPv4 de 20 bytes, um cabeçalho TCP de 60 bytes e um `gso size` pequeno, como 8. Como resultado, `virtio net hdr to skb()` identificaria incorretamente esse pacote como um pacote GSO normal, pois o tamanho da carga útil percebido seria maior que `gso size`. Isso pode levar a um underflow em `qdisc skb cb(skb)->pkt len`.
Recomendações:
Para versões do kernel Linux anteriores à 6.6.58, atualize para a versão 6.6.58 ou posterior para resolver o problema. Como solução temporária, considere implementar verificações adicionais de validade para pacotes `SKB GSO DODGY` a fim de evitar subfluxo em `qdisc skb cb(skb)->pkt len`. Restrinja o uso da função `virtio net hdr to skb()` até que a atualização seja aplicada para minimizar o risco de exploração.