Skip to main content

Comment mettre à jour cURL

11 octobre 2023

0 minutes de lecture

Le 3 octobre 2023, l’équipe curl a annoncé à l’avance la prochaine publication d’un correctif pour une vulnérabilité critique touchant à la fois libcurl et curl. 

Les produits Snyk vous aident à identifier et à corriger les packages et les conteneurs vulnérables. Toutefois, cette vulnérabilité touche curl, un outil en ligne de commande utilisé quotidiennement par de nombreux développeurs. Il est également distribué avec de nombreux systèmes d’exploitation. Nous avons donc pensé qu’il serait utile de vous donner quelques conseils pour le mettre à jour sur votre système.

Mettre à jour cURL sur votre système d’exploitation

Dans cette section, nous vous expliquons comment vérifier la version et la mettre à jour sur différents systèmes d’exploitation. En vous y prenant à l’avance, vous pourrez effectuer la mise à niveau dès la sortie de la version 8.4.0.

Mettre à jour cURL sur macOS

Remarque : cette section explique comment utiliser la dernière version de curl sur la dernière version de macOS, exécutée sur des Mac M1. Les résultats peuvent varier sur les Mac Intel ou les versions antérieures de macOS.

curl est installé par défaut sur macOS Ventura (13.5.2) et les versions ultérieures. Il s’agit toutefois d’une ancienne version de curl (8.1.2). Snyk recommande d’installer une version plus récente et de la définir par défaut, car la version de curl intégrée présente des vulnérabilités connues.

Bonne nouvelle : si vous installez la dernière version en suivant ces instructions, vous serez prêt à effectuer une nouvelle mise à jour dès la sortie de curl 8.4.0.

Le gestionnaire de packages tiers le plus populaire sur macOS est Homebrew. La dernière version de curl proposée par Homebrew est la 8.3.0, publiée à la mi-septembre.

Pour installer curl avec Homebrew, exécutez la commande suivante :

brew install curl

Ce n’est pas encore terminé. On appelle cela une installation « keg only ». Homebrew veille à ne pas écraser ni remplacer les utilitaires fournis par défaut avec macOS. Vous devez donc indiquer explicitement que vous souhaitez utiliser la version de curl installée par Homebrew plutôt que celle du système par défaut. Pour cela, vérifiez que le chemin de l’exécutable Homebrew figure en premier dans le chemin système. Sur macOS, Homebrew s’installe par défaut dans /opt/homebrew (vous pouvez vérifier son chemin avec la commande brew --prefix). Vous pouvez placer la version Homebrew en tête du chemin à l’aide de la commande suivante (en utilisant le préfixe brew) :

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

Remarque : les versions précédentes de Homebrew utilisaient un autre chemin, et les anciennes versions de macOS utilisaient bash au lieu de zsh.

Pour vérifier que vous utilisez la bonne version de curl, ouvrez une nouvelle fenêtre de terminal et exécutez :

curl --version

Vous devriez obtenir un résultat similaire à celui-ci :

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

Lorsque Homebrew proposera la version 8.4.0 de curl, il vous suffira de relancer la commande brew install curl pour installer la dernière version. 

Nous mettrons cet article à jour lorsque la version 8.4.0 sera disponible dans Homebrew.

Mettre à jour cURL sur Windows

curl est préinstallé sur Windows 10 (build 1803) et les versions ultérieures, mais il s’agit d’une ancienne version. Pour vérifier que curl est installé et connaître la version utilisée, ouvrez l’invite de commandes. Cliquez sur le menu Démarrer et saisissez cmd au clavier. Dans l’invite de commandes, saisissez curl --version pour vérifier si curl est installé et connaître sa version. Toute version antérieure à 8.4.0 doit être mise à jour.

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

Vérifiez également si vous utilisez la version de curl préinstallée sur Windows ou une installation distincte. Pour cela, saisissez where curl dans l’invite de commandes. Si le chemin affiché dans le résultat contient C:\Windows\System32, il s’agit de la version préinstallée de curl :

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

Une fois que vous avez déterminé si curl est installé, quelle version vous utilisez et s’il s’agit de la version préinstallée ou d’une installation distincte, vous disposez de toutes les informations nécessaires pour passer à la dernière version. La version de curl préinstallée est fournie et gérée par Microsoft. Par conséquent, le seul moyen de la mettre à jour sans risque est d’installer une mise à jour Windows publiée par Microsoft. Pour rechercher une mise à jour officielle de Windows, cliquez sur le menu Démarrer, saisissez « Windows Update », puis sélectionnez « Rechercher des mises à jour ». L’application Paramètres s’ouvre sur la page Windows Update. Cliquez sur le bouton « Rechercher des mises à jour » pour récupérer les dernières mises à jour publiées par Microsoft. L’une d’elles devrait inclure la version corrigée de curl.

En dehors d’une mise à jour officielle de Windows, vous avez plusieurs options pour installer la dernière version et l’utiliser à la place de celle préinstallée. Toutes nécessitent de modifier les variables d’environnement PATH. Si vous n’êtes pas à l’aise avec cette manipulation, attendez la mise à jour officielle de Windows, comme indiqué ci-dessus.

Vous pouvez installer une version plus récente de curl sur Windows de plusieurs façons : 

La façon la plus rapide et la plus simple d’installer ou de mettre à jour curl sur Windows consiste à utiliser Winget.

Installer cURL avec Winget

Dans l’invite de commandes, exécutez winget install curl.curl. curl sera installé dans le répertoire des packages natifs de winget et ajouté à votre variable d’environnement User Path. Toutefois, lorsque vous exécuterez curl --version,, la commande utilisera par défaut la version de curl préinstallée sur votre système, et non celle que vous venez d’installer. 

Recherchez la valeur curl ajoutée par Winget à votre variable User Path et copiez-la. Ajoutez-la ensuite à votre variable System Path, en lui attribuant la priorité la plus élevée (au-dessus de « C:\Windows\system32 »). Elle devrait ressembler à ceci :

Boîte de dialogue Windows « Modifier la variable d’environnement » affichant les entrées PATH, avec un dossier d’installation de cURL sélectionné.

Une fois cette opération terminée, retournez dans l’invite de commandes et exécutez refreshenv pour appliquer les modifications à vos variables d’environnement. Ensuite, exécutez curl --version pour vérifier que vous utilisez maintenant la dernière version de curl installée par Winget.

Installer cURL avec Chocolatey

Commencez par installer Chocolatey si ce n’est pas déjà fait. Pour en savoir plus, consultez la documentation de Chocolatey. Une fois l’installation terminée et l’outil prêt à l’emploi, exécutez la commande suivante dans l’invite de commandes ou le terminal en tant qu’administrateur :

choco install curl
Invite de commandes de l’administrateur Windows affichant l’installation de curl par Chocolatey et invitant à exécuter le script d’installation du package

Mais ce n’est pas encore terminé. Si vous exécutez curl --version, vous constaterez que l’ancienne version est toujours indiquée. Pour résoudre ce problème, vous devez mettre à jour les variables d’environnement système. Cliquez sur le menu Démarrer, saisissez Modifier les variables d’environnement système, puis sélectionnez la première option. Lorsque la fenêtre Propriétés système s’ouvre, cliquez sur le bouton Variables d’environnement… pour ouvrir une nouvelle fenêtre intitulée Variables d’environnement. Dans cette fenêtre, repérez la section Variables système, puis l’entrée Path dans la colonne Variable.

Fenêtre des variables système Windows, avec la variable Path sélectionnée et sa valeur composée d’éléments séparés par des points-virgules.

Cliquez sur le bouton Modifier… pour modifier la valeur, puis recherchez l’entrée Chocolatey C:\ProgramData\chocolatey\bin. Sélectionnez cette entrée et cliquez sur le bouton Monter pour la placer en tête de liste, puis cliquez sur OK.

De retour dans l’invite de commandes ou le terminal, saisissez refreshenv pour appliquer les modifications apportées aux variables d’environnement. Exécutez ensuite de nouveau curl --version : vous devriez constater que la version mise à jour est maintenant utilisée. Vous pouvez aussi exécuter where curl pour afficher les deux instances de curl installées sur votre machine : la première devrait correspondre à l’emplacement de la nouvelle version, et la seconde à celui de la version système. Vous pouvez maintenant utiliser la nouvelle version de curl.

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

Mettre à jour cURL sur Linux

Si la commande curl --version révèle que vous utilisez une version vulnérable, vous pourrez la mettre à jour sur votre système dès que la version corrigée sera disponible.

La mise à jour de curl sur Linux dépend en grande partie du gestionnaire de packages utilisé par votre distribution. Ces commandes vous donneront néanmoins une idée de la marche à suivre selon votre distribution. En général, vous devrez demander au gestionnaire de packages d’actualiser le cache d’index des packages, puis d’installer la nouvelle version. Voici les commandes à utiliser selon la distribution :

  • Pour les distributions basées sur apt, comme Debian ou Ubuntu :

    • Mettre à jour les index : apt-get update

    • Installer la dernière version : apt-get upgrade curl

  • Pour les packages snap (principalement Ubuntu) :

    • Installer la dernière version : snap install curl

  • Pour les distributions utilisant dnf, comme RHEL, Rocky et Fedora :

    • Rechercher les mises à jour : dnf check-update

    • Installer la dernière version : dnf install curl

  • Et pour apk sur Alpine :

    • Mettre à jour les index : apk update

    • Installer la dernière version : apk add curl

Pour obtenir une version mise à jour, il faut que les différentes distributions actualisent leurs dépôts de packages. Si, après avoir exécuté la commande correspondant à votre distribution, curl --version, n’indique pas la version 8.4.0, vérifiez votre chemin pour vous assurer qu’aucune autre version ne la précède. Vous pouvez également consulter curl - Download pour trouver un binaire compilé pour votre plateforme.

$ 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 …

Dans l’exemple ci-dessus, une copie de l’ancienne version se trouve dans ~/bin/curl. Comme ce chemin figure en premier dans mon PATH, c’est cette version qui est utilisée. Supprimez l’ancienne version ou retirez-la de votre PATH pour résoudre le problème.

Envie de tenter l’aventure ? Compilez curl vous-même !

La dernière compilation à partir du code source donne la version 8.4.0-DEV. Rien ne garantit que le code le plus récent contienne le correctif de la vulnérabilité critique, mais si vous savez compiler le code source, vous pourrez obtenir la toute dernière version dès le 11 octobre.

Dans cette section, nous allons voir comment compiler curl sur un Mac M1 exécutant macOS Ventura. L’équipe de développement, dirigée par Daniel Stenberg (badger sur GitHub), a remarquablement bien simplifié la compilation de curl sur différents systèmes d’exploitation.

La documentation d’installation comporte une section sur la compilation et l’installation sur Mac qui a fonctionné immédiatement pour nous. Remarque : vous devez avoir installé les outils de ligne de commande Xcode pour que cela fonctionne.

J’ai exécuté les commandes suivantes pour compiler 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

J’ai ensuite vérifié la compilation à l’aide de la commande suivante :

./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]

Vous pouvez ensuite placer ce curl nouvellement compilé dans un répertoire local ~/bin, ou dans un répertoire qui précède le curl par défaut dans votre PATH, jusqu’à ce que votre distribution ou votre système d’exploitation fournisse une mise à jour. Dès qu’une mise à jour sera disponible, nous vous recommandons de l’adopter et de supprimer les copies non officielles, afin de vous protéger contre de futures vulnérabilités.

Lancez-vous dans les challenges Capture The Flag

Apprenez à résoudre des challenges Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.