¿Utilizas curl?¡debes actualizar ya! La nueva versión 7.71.0 soluciona dos fallos graves

junio 26, 2020 , 0 Comments

Ya se encuentra disponible la nueva versión de actualización de “cURL 7.71.0”, en la cual se centraron en la solución de dos fallos graves que permiten el acceso contraseñas y también el poder sobrescribir archivos. Es por ello que se hace la invitación a realizar la actualización a la nueva versión.

Para quienes desconocen de esta utilidad, deben saber que sirve para recibir y enviar datos a través de la red, brinda la capacidad de formar una solicitud de manera flexible mediante el establecimiento de parámetros como cookie, user_agent, referer y cualquier otro encabezado.

cURL admite HTTP, HTTPS, HTTP/2.0, HTTP/3, SMTP, IMAP, POP3, Telnet, FTP, LDAP, RTSP, RTMP y otros protocolos de red. Al mismo tiempo, se lanzó una actualización en paralelo a la biblioteca libcurl, que proporciona una API para usar todas las funciones de curl en programas en lenguajes como C, Perl, PHP, Python.

Principales cambios en cURL 7.71.0

Esta nueva version, es de actualización y como se menciona al inicio llega para solucionar dos fallos, los cuales son los siguientes:

  • Vulnerabilidad CVE-2020-8177: esta le permite a un atacante el poder sobrescribir un archivo local en el sistema cuando accede a un servidor de ataque controlado. El problema se manifiesta solo cuando se usan las opciones «-J» («–remote-header-name») y «-i» («–head») simultáneamente.

La opción «-J» le permite guardar el archivo con el nombre especificado en el encabezado «Content-Disposition». Si ya existe un archivo con el mismo nombre, el programa curl normalmente se niega a sobrescribir, pero si la opción «-i» está presente, se viola la lógica de verificación y se sobrescribe el archivo (la verificación se realiza en la etapa de recepción del cuerpo de respuesta, pero con la opción «-i» los encabezados HTTP salen primero y tienen tiempo de persistir antes de procesar el cuerpo de la respuesta). Solo los encabezados HTTP se escriben en el archivo.

  • La vulnerabilidad CVE-2020-8169: esta podría provocar una fuga en el servidor DNS de algunas contraseñas para acceder al sitio (Basic, Digest, NTLM, etc.).

Cuando se usa el carácter «@» en una contraseña, que también se usa como delimitador de contraseña en la URL, cuando se activa una redirección HTTP, curl enviará una parte de la contraseña después del carácter «@» junto con el dominio para determinar el nombre.

Por ejemplo, si especifica la contraseña «passw@passw» y el nombre de usuario «user», curl generará la URL «https://user:passw@passw@example.com/path» en lugar de «https:user:passw% 40passw@example.com/path » y envíe una solicitud para resolver el host» pasww@example.com «en lugar de «example.com «.

El problema se manifiesta al habilitar el soporte para redireccionadores HTTP relativos (se deshabilitan a través de CURLOPT_FOLLOWLOCATION).

En el caso de utilizar DNS tradicional, el proveedor de DNS y el atacante pueden encontrar información sobre una parte de la contraseña, que puede interceptar el tráfico de la red de tránsito (incluso si la solicitud original se realizó a través de HTTPS, ya que el tráfico de DNS no está cifrado). Cuando se utiliza DNS sobre HTTPS (DoH), la fuga se limita a la declaración DoH.

Finalmente otro de los cambios que se integra en la nueva versión, es la adicion de la opción «–retry-all-errors» para intentos repetidos de realizar operaciones cuando se produce algún error.

¿Como instalar cURL en Linux?

Para quienes estén interesados en poder instalar esta nueva versión de cURL podrán hacerlo descargado el código fuente y realizando la compilación.

Para ello lo primero que vamos a hacer es descarga el último paquete de cURL con ayuda de una terminal, en ella vamos a teclear:

wget https://curl.haxx.se/download/curl-7.71.0.tar.xz

Después, vamos a descomprimir el paquete descargado con:

tar -xzvf curl-7.71.0.tar.xz

Entramos a la carpeta recién creada con:

cd curl-7.71.0

Entramos como root con:

sudo su

Y tecleamos lo siguiente:

./configure --prefix=/usr \
--disable-static \
--enable-threaded-resolver \
--with-ca-path=/etc/ssl/certs &&
make
make install &&
rm -rf docs/examples/.deps &&
find docs \( -name Makefile\* -o -name \*.1 -o -name \*.3 \) -exec rm {} \; &&
install -v -d -m755 /usr/share/doc/curl-7.71.0 &&
cp -v -R docs/* /usr/share/doc/curl-7.71.0

Finalmente podremos comprobar la versión con:

curl --version

Si quieres conocer mas al respecto, puedes consultar el siguiente enlace.

 


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.