Se han publicado parches para dos fallos de seguridad que afectan a la biblioteca de transferencia de datos Curl, el más grave de los cuales podría provocar la ejecución de código.
La lista de vulnerabilidades es la siguiente:
- CVE-2023-38545 (Puntuación CVSS: 7,5) – Vulnerabilidad de desbordamiento del búfer basada en montón SOCKS5
- CVE-2023-38546 (Puntuación CVSS: 5.0) – Inyección de cookies sin ningún archivo
CVE-2023-38545 es el más grave de los dos y ha sido descrito por el desarrollador principal del proyecto, Daniel Stenberg, como «probablemente la peor falla de seguridad de Curl en mucho tiempo». Afecta a las versiones de libcurl 7.69.0 hasta 8.3.0 inclusive.
«Esta falla hace que Curl desborde un buffer basado en montón en el CALCETINES5 apretón de manos de proxy», dijeron los mantenedores en un aviso. «Cuando se le pide a Curl que pase el nombre de host al proxy SOCKS5 para permitir que resuelva la dirección en lugar de que Curl mismo lo haga, la longitud máxima que puede tener el nombre de host es 255 bytes.»
«Si se detecta que el nombre de host tiene más de 255 bytes, Curl cambia a la resolución de nombres local y en su lugar pasa la dirección resuelta solo al proxy. Debido a un error, la variable local que significa ‘dejar que el host resuelva el nombre’ podría obtiene el valor incorrecto durante un protocolo de enlace SOCKS5 lento y, contrariamente a su intención, copia el nombre de host demasiado largo en el búfer de destino en lugar de copiar solo la dirección resuelta allí».
Curl dijo que la vulnerabilidad probablemente podría explotarse sin la necesidad de un ataque de denegación de servicio y que se podría desencadenar un desbordamiento con un servidor HTTPS malicioso realizando una redirección a una URL especialmente diseñada.
«Dado que Curl es un proyecto ubicuo, se puede asumir con confianza que esta vulnerabilidad será explotada en la naturaleza para la ejecución remota de código, y que se están desarrollando exploits más sofisticados», JFrog dicho. «Sin embargo, el conjunto de condiciones previas necesarias para que una máquina sea vulnerable es más restrictivo de lo que se creía inicialmente».
«Un exploit válido requeriría que un atacante desencadenara la ejecución del código, por ejemplo, pasando un nombre de host a una aplicación web que desencadenaría la ejecución del código en Curl», dijo Johannes B. Ullrich, decano de investigación del Instituto de Tecnología SANS, dicho. «A continuación, el exploit sólo existe si se utiliza Curl para conectarse a un proxy SOCKS5. Esta es otra dependencia, lo que hace que el exploit sea menos probable».
La segunda vulnerabilidad, que afecta a las versiones 7.9.1 a 8.3.0 de libcurl, permite a un mal actor insertar cookies a voluntad en un programa en ejecución utilizando libcurl en circunstancias específicas.
Los parches para ambas fallas están disponibles en la versión 8.4.0 lanzada el 11 de octubre de 2023. Específicamente, la actualización garantiza que Curl ya no cambie al modo de resolución local si un nombre de host es demasiado largo, mitigando así el riesgo de desbordamientos del búfer basado en el montón.
«Esta familia de defectos habría sido imposible si Curl se hubiera escrito en un lenguaje seguro para la memoria en lugar de C, pero portar Curl a otro lenguaje no está en la agenda», Stenberg agregado.