Vulnerabilidad en ngtcp2 (CVE-2024-52811)
Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/11/2024
Última modificación:
25/11/2024
Descripción
El proyecto ngtcp2 es un esfuerzo por implementar el protocolo IETF QUIC en C. En las versiones afectadas, los acks no se validan antes de escribirse en el qlog, lo que genera un desbordamiento de búfer. En `ngtcp2_conn::conn_recv_pkt` para un ACK, se agregó una nueva lógica para omitir `conn_recv_ack` si ya se procesó un ack en el payload. Sin embargo, esto hace que también omitamos `ngtcp2_pkt_validate_ack`. El ack que se omitió se escribió en qlog. El error ocurre en `ngtcp2_qlog::write_ack_frame`. Ahora es posible acceder a este código con un ack no válido, supongamos que `largest_ack=0` y `first_ack_range=15`. Restar `largest_ack - first_ack_range` generará un desbordamiento de enteros de 20 caracteres. Sin embargo, el código qlog de ngtcp2 asume que el número escrito es un entero con signo y solo tiene en cuenta 19 caracteres de sobrecarga (consulte `NGTCP2_QLOG_ACK_FRAME_RANGE_OVERHEAD`). Por lo tanto, sobrescribimos el búfer y provocamos un desbordamiento del montón. Esto es de alta prioridad y podría afectar potencialmente a muchos usuarios si habilitan qlog. qlog está deshabilitado de forma predeterminada. Debido a su sobrecarga, lo más probable es que se use con fines de depuración, pero se desconoce su uso real. ngtcp2 v1.9.1 corrige el error y se recomienda a los usuarios que actualicen. Los usuarios que no puedan actualizar no deben activar qlog.
Impacto
Puntuación base 3.x
8.20
Gravedad 3.x
ALTA