Debian ha publicado una actualización de curl y libcurl que corrige una vulnerabilidad que podría permitir a un atacante remoto causar una denegación de servicio y potencialmente ejecutar código arbitrario dependiendo del contexto.
curl es una aplicación de línea de comandos para transferencia de datos con sintaxis URL y con soporte para múltiples protocolos de red. libcurl es una librería que expone el núcleo de funciones usado por curl para que pueda ser reutilizado por aplicaciones de terceros.
El fallo reside en libcurl, en el archivo “content_encoding.c”. Allí se define la constante “DSIZ” que se usa como referencia para el tamaño de un búfer que será usado para depositar los datos descomprimidos de una transferencia activa.
Una aplicación que use libcurl (curl como caso más evidente) registra una función de rellamada (callback) que se invoca repetidamente por libcurl a medida que los datos son recibidos y depositados en el búfer.
El tamaño del búfer proporcionado por la aplicación está definido a un máximo de 16K por la constante “DSIZ”. Si la aplicación le indica a libcurl que descomprima los datos recibidos antes de depositarlos en el buffer, estos pasarán a ocupar hasta 64K ya que libcurl no respeta, en caso de efectuar la descompresión, el máximo definido.
En el caso de que la aplicación cliente no valide el tamaño devuelto por libcurl se produce un desbordamiento de búfer.
La vulnerabilidad, con CVE-2010-0734, está presente en las versiones de libcurl superiores a la 7.10.5 e inferiores a la 7.19.7 ambas inclusive.
Opina sobre esta noticia:
Más información: DSA-2023-1 curl — buffer overflow
libcurl data callback excessive length