curl corrige una vulnerabilidad en la carga de datos de HTTP/2 después de que una demostración de concepto (PoC) pusiera de manifiesto la ejecución de código en el lado del cliente
Un fallo en la gestión de cargas HTTP/2 por parte de curl permitía que un servidor malicioso corrompiera la memoria del cliente, logrando la ejecución de código en la máquina del usuario. Esta vulnerabilidad de tipo uso después de liberación (use-after-free), identificada con un código específico, impacta tanto a la herramienta de línea de comandos como a la biblioteca en diversas versiones. El proyecto catalogó el problema con alta gravedad, adelantando la entrega de su actualización para solucionar este y otros fallos menores detectados.
Para que el ataque funcione, el usuario debe realizar una carga de archivos mediante HTTP/2 hacia un servidor malicioso controlado por el atacante. Durante este proceso, el servidor detiene la transferencia, reinicia la transmisión y mantiene la conexión abierta, lo que provoca que curl intente un reintento y libere el identificador mientras la conexión aún conserva un puntero a este. No obstante, lograr la ejecución de código requiere un conocimiento exacto de la arquitectura y la distribución de memoria de la víctima, por lo que el resultado más probable de un intento real suele ser un cierre inesperado del programa.
Como medida preventiva, se recomienda actualizar a la versión corregida o aplicar el parche correspondiente en las compilaciones locales, además de considerar ramas específicas y versiones adaptadas para distribuciones Linux. Si la actualización inmediata no es posible, la recomendación oficial es deshabilitar HTTP/2 y forzar el uso de HTTP/1.1. Las modificaciones implementadas consisten en una reordenación de líneas en el código fuente para que la capa de transferencia finalice sus referencias al identificador solo después de vaciar los datos pendientes.