Ngtcp2 · Ngtcp2 · CVE-2024-52811
**Nome do software vulnerável e versões afetadas**
Versões do ngtcp2 anteriores à 1.9.1
**Descrição**
O problema decorre da falta de validação dos acks antes de serem gravados no qlog, o que leva a um estouro de buffer. Isso ocorre na função `ngtcp2 conn::conn recv pkt` ao lidar com um ACK, onde a nova lógica ignora `conn recv ack` se um ack já tiver sido processado na carga útil, mas também ignora inadvertidamente `ngtcp2 pkt validate ack`. Como resultado, um ack inválido pode ser gravado no qlog, causando potencialmente um underflow de inteiro quando `largest ack=0` e `first ack range=15`. Esse underflow leva a um estouro de heap porque o código do qlog do ngtcp2 assume que o número gravado é um inteiro com sinal e considera apenas 19 caracteres de sobrecarga. A função `ngtcp2 qlog::write ack frame` é onde o bug se manifesta. Embora o qlog esteja desativado por padrão devido à sua sobrecarga e provavelmente seja usado para fins de depuração, o uso real é desconhecido, e isso poderia impactar muitos usuários caso eles ativem o qlog.
**Recomendações**
Para versões anteriores à 1.9.1, atualize para a versão 1.9.1 para corrigir o bug.
Para usuários que não possam atualizar, não ative o qlog como uma solução temporária para minimizar o risco de exploração.