Skip to main content

Cómo actualizar cURL

11 de octubre de 2023

0 minutos de lectura

El 3 de octubre de 2023, el equipo de curl anunció con anticipación una próxima corrección para una vulnerabilidad de gravedad alta que afecta tanto a libcurl como a curl.

Los productos de Snyk te ayudan a identificar y corregir paquetes y contenedores vulnerables, pero esta vulnerabilidad afecta a curl, una herramienta de línea de comandos que muchos desarrolladores usan a diario. También se distribuye con muchos sistemas operativos, así que pensamos que sería útil compartir algunos consejos para actualizarla en tu sistema.

Cómo actualizar cURL en tu sistema operativo

En esta sección, ofrecemos consejos para comprobar la versión y actualizarla en distintos sistemas operativos. Saber esto con anticipación te ayudará a actualizar cuando se lance la versión 8.4.0.

Cómo actualizar cURL en macOS

Nota: Esta sección explica cómo usar la versión más reciente de curl en la versión más reciente de MacOS en una Mac M1. Los resultados pueden variar en las Mac con procesador Intel o versiones anteriores de MacOS.

En macOS Ventura (13.5.2) y versiones posteriores, curl viene instalado de forma predeterminada. Sin embargo, se trata de una versión anterior de curl (8.1.2). Snyk recomienda instalar una versión más reciente y configurarla como predeterminada, ya que la versión de curl integrada tiene vulnerabilidades conocidas.

La buena noticia es que, si actualizas a la versión más reciente siguiendo estas instrucciones, estarás listo para volver a actualizar cuando se lance curl 8.4.0.

El administrador de paquetes de terceros más popular para macOS es Homebrew. La versión más reciente de curl disponible en Homebrew es la 8.3.0, lanzada a mediados de septiembre.

Instala curl con Homebrew ejecutando lo siguiente:

brew install curl

Todavía no habrás terminado. Esto se conoce como una instalación «keg only». Homebrew evita sobrescribir o reemplazar las utilidades que vienen de forma predeterminada con macOS. Por eso, debes indicar explícitamente que quieres usar la versión de curl instalada con Homebrew en lugar de la versión predeterminada del sistema. Para hacerlo, asegúrate de que la ruta del ejecutable de Homebrew aparezca primero en la ruta del sistema. La ubicación predeterminada de las instalaciones de Homebrew en macOS es /opt/homebrew (puedes verificar la ruta de Homebrew con el comando brew --prefix). Puedes anteponer a tu ruta la versión de Homebrew con el siguiente comando (usando el prefijo de brew):

echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc

Nota: Las versiones anteriores de Homebrew usaban otra ruta y las versiones anteriores de macOS usaban bash en lugar de zsh.

Puedes confirmar que estás usando la versión correcta de curl abriendo una nueva ventana de terminal y ejecutando:

curl --version

Deberías ver algo como esto:

curl 8.3.0 (aarch64-apple-darwin22.6.0) libcurl/8.3.0 (SecureTransport) OpenSSL/3.1.3 zlib/1.2.11 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libssh2/1.11.0 nghttp2/1.56.0 librtmp/2.3 OpenLDAP/2.6.6
Release-Date: 2023-09-13

Cuando Homebrew se actualice con la versión 8.4.0 de curl, puedes volver a ejecutar el comando brew install curl para obtener la versión más reciente.

Actualizaremos esta publicación cuando se lance la versión 8.4.0 para Homebrew.

Cómo actualizar cURL en Windows

Windows 10 (compilación 1803) y las versiones posteriores incluyen curl preinstalado, pero en una versión anterior. Para comprobar si tienes curl y qué versión estás usando, abre el símbolo del sistema. Haz clic en el menú Inicio y escribe cmd en el teclado. En el símbolo del sistema, ingresa curl --version para ver si tienes curl instalado y qué versión. Debes actualizar cualquier versión anterior a 8.4.0.

C:\Users\bc>curl --version
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

También debes comprobar si estás usando la versión de curl preinstalada en Windows o una instalación independiente. Para hacerlo, ingresa where curl en el símbolo del sistema. Si la ruta que aparece en el resultado incluye C:\Windows\System32, significa que hace referencia a la versión de curl preinstalada:

C: \Users\bc>where curl
C: \Windows\System32\curl.exe

Una vez que hayas determinado si tienes curl instalado, qué versión usas y si es la versión preinstalada o una instalación independiente, tendrás toda la información que necesitas para actualizar a la versión más reciente. Microsoft proporciona y administra la versión de curl preinstalada y, por lo tanto, solo es seguro actualizarla mediante una actualización de Windows publicada por Microsoft. Para buscar una actualización oficial de Windows, haz clic en el menú Inicio, escribe «Windows Update» y selecciona la opción «Buscar actualizaciones». Se abrirá la aplicación Configuración y se mostrará la vista de Windows Update. Allí, puedes hacer clic en el botón «Buscar actualizaciones» para obtener las actualizaciones más recientes publicadas por Microsoft. Es probable que una de ellas incluya la versión corregida de curl.

Además de una actualización oficial de Windows, tienes algunas opciones para actualizar a la versión más reciente y usarla en lugar de la versión preinstalada. Todas estas opciones requieren modificar las variables de entorno PATH. Si no te sientes cómodo haciéndolo, espera a que llegue una actualización oficial de Windows, como se indicó antes.

Hay varias maneras de instalar una versión más reciente de curl en Windows:

La forma más rápida y sencilla de instalar o actualizar curl en Windows es con Winget.

Instalar cURL con Winget

En el símbolo del sistema, ejecuta winget install curl.curl. Esto instalará curl en el directorio de paquetes nativo de Winget y lo agregará a la variable de entorno User Path. Sin embargo, cuando ejecutes curl --version, se usará de forma predeterminada la versión de curl preinstalada en el sistema, no la que acabas de instalar.

Busca el valor de curl que Winget agregó a la variable User Path y cópialo. Luego, agrégalo a la variable System Path con prioridad máxima (por encima de «C:\Windows\system32»). Debería verse así:

Cuadro de diálogo de Windows «Editar variable de entorno» que muestra las entradas de PATH, incluida una carpeta de instalación de cURL seleccionada.

Cuando termines, vuelve al símbolo del sistema y ejecuta refreshenv para que se apliquen los cambios en las variables de entorno. Cuando finalice, ejecuta curl --version para verificar que ahora se esté usando la versión más reciente de curl instalada por Winget.

Instalar cURL con Chocolatey

Primero, instala Chocolatey si aún no lo tienes. Puedes consultar más información sobre cómo hacerlo en la documentación de Chocolatey. Una vez instalado y listo para usarse, ejecuta el siguiente comando desde el símbolo del sistema o la terminal como administrador:

choco install curl
Símbolo del sistema del Administrador de Windows que muestra la instalación de curl con Chocolatey y solicita ejecutar el script de instalación del paquete

Sin embargo, todavía no habrás terminado. Si ejecutas curl --version, verás que sigue mostrando la versión anterior. Para solucionarlo, debes actualizar las variables de entorno del sistema. Haz clic en el menú Inicio, escribe Editar las variables de entorno del sistema y selecciona la primera opción. Cuando se abra la ventana Propiedades del sistema, haz clic en el botón Variables de entorno…. Se abrirá una nueva ventana titulada Variables de entorno. En esta ventana, busca la sección Variables del sistema y encuentra la entrada Path en la columna Variable.

Cuadro de diálogo de variables del sistema de Windows con la variable Path seleccionada y su valor separado por punto y coma.

Haz clic en el botón Editar… para modificar el valor y busca la entrada de chocolatey: C:\ProgramData\chocolatey\bin. Selecciona esa entrada y usa el botón Subir para moverla al primer lugar de la lista; luego, haz clic en Aceptar.

Ahora, vuelve al símbolo del sistema o la terminal e ingresa refreshenv para aplicar los cambios que hiciste en las variables de entorno. Después, ejecuta curl --version otra vez. Deberías ver que ahora se está usando la versión actualizada. También puedes ejecutar where curl para ver las dos instancias de curl instaladas en tu equipo: la primera debería ser la ubicación de la nueva versión y la segunda, la ubicación de la instalación del sistema. Ya puedes empezar a usar la nueva versión de curl.

C:\Users\bc>where curl
C:\ProgramData\chocolatey\bin\curl.exe
C:\Windows\System32\curl.exe

Cómo actualizar cURL en Linux

Si ejecutas curl --version y confirmas que estás usando una versión vulnerable, puedes actualizarla en tu sistema cuando la versión corregida esté disponible.

La actualización de curl en Linux depende principalmente del administrador de paquetes que use tu distribución, pero estos comandos te darán una idea de cómo proceder según tu distro. En general, probablemente debas indicarle al administrador de paquetes que actualice la caché del índice de paquetes y luego instale una versión nueva. En concreto, para cada distribución:

  • Para distribuciones basadas en apt, como Debian o Ubuntu:

    • Actualizar los índices: apt-get update

    • Instalar la versión más reciente: apt-get upgrade curl

  • Para paquetes snap (principalmente en Ubuntu):

    • Instalar la versión más reciente: snap install curl

  • Para distribuciones que usan dnf, como RHEL, Rocky y Fedora:

    • Buscar actualizaciones: dnf check-update

    • Instalar la versión más reciente: dnf install curl

  • Y para apk en Alpine:

    • Actualizar los índices: apk update

    • Instalar la versión más reciente: apk add curl

Ten en cuenta que para obtener una versión actualizada es necesario que las distintas distribuciones actualicen sus repositorios de paquetes. Si, después de ejecutar el comando correspondiente a tu distribución, ejecutas curl --version, y no ves la versión 8.4.0, revisa la ruta para asegurarte de que no haya otra versión instalada antes que esta. También puedes visitar curl - Descargar para encontrar un binario compilado para tu plataforma.

$ curl --version
curl 7.81.0 …

$ which curl
/home/ubuntu/bin/curl

$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$ /usr/bin/curl --version
curl 8.4.0 …

En el ejemplo anterior, hay una copia de la versión anterior en ~/bin/curl y, como aparece primero en mi ruta, es la que se está usando. Para resolverlo, elimina la versión anterior o quítala de la ruta.

¿Te animas? ¡Compila curl tú mismo!

La compilación más reciente desde el código fuente da como resultado la versión 8.4.0-DEV. Aunque no se garantiza que el código más reciente incluya la corrección para la vulnerabilidad de gravedad alta, si te sientes cómodo compilando desde el código fuente, podrás obtener la versión más reciente el 11 de octubre.

En esta sección, veremos cómo compilar en una Mac M1 con MacOS Ventura. El equipo de desarrolladores, liderado por Daniel Stenberg (badger en GitHub), ha hecho un trabajo extraordinario para que curl sea fácil de compilar en distintos sistemas operativos.

En la documentación de instalación, hay una sección sobre cómo compilar e instalar en Mac que funcionó sin problemas. Nota: Para que esto funcione, debes tener instaladas las herramientas de línea de comandos de Xcode.

Ejecuté lo siguiente para compilar curl:

autoreconf -fi
export ARCH=arm64
export SDK=macosx
export DEPLOYMENT_TARGET=13.0
export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET"
./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
make -j8

Luego confirmé la compilación con lo siguiente:

./src/.libs/curl --version

curl 8.4.0-DEV (aarch64-apple-darwin) libcurl/8.4.0-DEV SecureTransport zlib/1.2.11
Release-Date: [unreleased]

Después, puedes colocar este curl recién compilado en un directorio local ~/bin o en alguna ubicación anterior a la ruta del curl predeterminado, hasta que tu distribución o sistema operativo publique una actualización. Cuando haya una actualización disponible, te recomendamos usarla y eliminar las copias no oficiales para evitar problemas con futuras vulnerabilidades.

Empieza con los retos de Capture the Flag

Aprende a resolver retos de Capture the Flag viendo nuestro taller virtual de nivel básico a pedido.