Un reciente estudio ha revelado vulnerabilidades críticas en QPACK, el algoritmo de compresión de cabeceras usado por HTTP/3. Los defectos permiten que un lote de 1 MB de datos comprimidos se descomprima en aproximadamente 15 MB, y que una única entrada de cabecera de 4 KB sea referenciada miles de veces mediante punteros de 1 byte, generando una expansión masiva de memoria. La explotación de estos fallos puede provocar denegación de servicio total en cualquier servidor que implemente la especificación sin mitigaciones adecuadas.

Qué sabemos

Los investigadores identificaron varios CVE que afectan la lógica de descompresión de QPACK. La vulnerabilidad se manifiesta cuando un atacante envía paquetes especialmente diseñados que hacen que el proceso de desempaquetado supere los límites de memoria previstos. En el caso de Bun, la sobrecarga de memoria supera los 2 GB, desencadenando un desbordamiento entero que lleva al consumo del 100 % de la CPU con apenas 516 KB de datos en el cable.

Las bibliotecas y servidores impactados incluyen quic-go, Cloudflare quiche, lsquic, Bun y Wireshark. Por el contrario, implementaciones como IIS, Envoy y ngtcp2 no se ven afectadas por la falla descrita.

Análisis técnico

El vector de ataque se basa en dos mecanismos de amplificación:

  • Compresión desbalanceada: un lote de 1 MB comprimido se expande a ~15 MB al descomprimirse, lo que genera una carga de memoria inesperada.
  • Referencias de punteros de 1 byte: una cabecera de 4 KB puede ser referenciada miles de veces, multiplicando su impacto sin aumentar el tamaño del paquete en el wire.

Cuando el número total de referencias supera los límites internos de la biblioteca, se produce un desbordamiento entero que obliga al motor a intentar asignar más de 2 GB de memoria. En entornos donde la memoria está limitada, el proceso entra en un bucle de consumo de CPU al intentar gestionar la condición de error, resultando en una denegación de servicio completa.

Los atacantes pueden lanzar este exploit desde cualquier punto de la red que tenga acceso a un endpoint HTTP/3, sin necesidad de autenticación previa. Dado que la vulnerabilidad se encuentra en la capa de transporte, los vectores tradicionales de mitigación a nivel de aplicación (WAF, filtrado de URL) son insuficientes.

Qué deben hacer los equipos de seguridad

  • Aplicar los parches oficiales tan pronto como estén disponibles para quic-go, Cloudflare quiche, lsquic, Bun y Wireshark.
  • Revisar configuraciones de límite de memoria y tiempo de espera en servidores HTTP/3; establecer umbrales que aborten la descompresión si el consumo supera un porcentaje razonable del total disponible.
  • Desactivar temporalmente HTTP/3 en entornos críticos hasta que se confirme la mitigación, migrando a HTTP/2 o HTTP/1.1 donde la vulnerabilidad no aplica.
  • Monitorear métricas de CPU y uso de memoria en procesos que manejan QPACK; alertas basadas en picos inesperados pueden indicar un intento de explotación.
  • Actualizar firmas de detección en herramientas de inspección de tráfico (por ejemplo, Wireshark) para identificar patrones de paquetes con alta densidad de punteros de 1 byte.
Fuente: The Hacker News