Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en libcurl (CVE-2017-1000254)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-119 Restricción de operaciones inapropiada dentro de los límites del búfer de la memoria
Fecha de publicación:
06/10/2017
Última modificación:
20/04/2025

Descripción

libcurl podría leer fuera de un búfer asignado en la memoria dinámica (heap) cuando realiza FTP. Cuando libcurl se conecta a un servidor FTP y logra iniciar sesión correctamente (de forma anónima o no), pregunta al servidor por el directorio actual con el comando "PWD". El servidor contesta con una respuesta 257 que contiene la ruta (dentro de comillas dobles). El nombre de ruta devuelto lo almacena libcurl para usos posteriores. Debido a un error en el analizador sintáctico de cadenas para este nombre de directorio, un nombre de directorio pasado de esta forma pero sin una comilla doble de cierre desembocaría en que libcurl no añade un byte NUL final al búfer que sostiene el nombre. Cuando libcurl accede a la cadena, podría leer más allá del búfer de memoria dinámica (heap) asignado y cerrarse inesperadamente o acceder erróneamente a datos más allá del búfer, creyendo que forma parte de la ruta. Un servidor malicioso podría aprovechar este hecho y evitar que clientes de libcurl lo empleen - el comando PWD siempre se emite en nuevas conexiones FTP y el error tiene una gran posibilidad de provocar una violación de acceso. El hecho de que este problema se ha mantenido sin conocer durante tanto tiempo podría indicar que las respuestas PWD mal formadas son raras en nuevos servidores. No se tiene constancia de exploits de este fallo. Este bug fue introducido en el commit [415d2e7cb7](https://github.com/curl/curl/commit/415d2e7cb7) en marzo de 2005. En la versión 7.46.0 de libcurl, el analizador sintáctico siempre finaliza la cadena en cero, pero también la rechaza si no se finaliza correctamente con una comilla doble final.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:haxx:libcurl:7.7:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.7.1:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.7.2:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.7.3:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.8:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.8.1:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.1:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.2:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.3:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.4:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.5:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.6:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.7:*:*:*:*:*:*:*
cpe:2.3:a:haxx:libcurl:7.9.8:*:*:*:*:*:*:*