Skip to main content

Vulnérabilité de gravité élevée détectée dans libcurl et curl (CVE-2023-38545)

Écrit par
Headshot of Hadas Bloom

Hadas Bloom

feature curl vuln

4 octobre 2023

0 minutes de lecture

Mise à jour : 11 octobre 2023

Aujourd’hui, à 06:00 UTC, les responsables de la maintenance de cURL ont publié les versions 8.4.0 de curl et libcurl afin de corriger un dépassement de tampon sur le tas de gravité élevée (preuve de concept et notification initiale) susceptible d’affecter les systèmes répondant à une configuration et à des prérequis spécifiques.

Cette vulnérabilité zero-day est présente dans des packages de plusieurs écosystèmes open source gérés et non gérés, notamment (sans s’y limiter) C/C++, cargo, cocoapods, npm, NuGet, pip et pub, ainsi que dans diverses distributions Linux comme Alpine, Debian, RHEL et d’autres.

Il s’agit de la première vulnérabilité de gravité élevée détectée dans curl depuis plusieurs années (la précédente remontait au début de 2021).

Capture d’écran du tableau des vulnérabilités de cURL et libcurl, avec des barres de gravité en couleur pour les versions récentes et le nombre total.
Capture d’écran du tableau des vulnérabilités de cURL

Les versions de curl/libcurl concernées (depuis mars 2020) sont les suivantes :

  • Versions vulnérables : libcurl de 7.69.0 à 8.3.0 incluses

  • Versions non concernées : libcurl < 7.69.0 et >= 8.4.0

La complexité de l’exploitation est considérée comme high et la vulnérabilité ne peut être déclenchée que dans certains cas. Comme l’explique l’article du responsable de la maintenance, Comment j’ai provoqué un dépassement de tas dans curl, la vulnérabilité nécessite que la bibliothèque vulnérable contacte un serveur non contrôlé ou compromis (pour être exploitée via une redirection HTTP), ou qu’elle utilise une URL contrôlée par l’attaquant via un proxy SOCKS5 avec la résolution des noms d’hôte activée afin de déclencher la condition vulnérable — et même dans ce cas, il s’agit d’un dépassement de tas limité au jeu de caractères. Les dépassements de tas sont extrêmement difficiles à transformer en exécution de code arbitraire (ACE) sur les systèmes modernes ; l’exploitation est donc très complexe.

Maintenant que la vulnérabilité est publiée et suivie, vous pouvez utiliser la fonctionnalité de rapports de Snyk pour trouver les projets concernés. Sélectionnez votre organisation, puis Reports dans la barre latérale. Sélectionnez +Add Filter sous les détails du problème, choisissez CVE, puis saisissez le numéro de CVE : CVE-2023-38545

Rapport détaillé des problèmes Snyk avec le filtre CVE ouvert et CVE-2023-38545 sélectionné dans le menu déroulant
Filtrez votre vue pour afficher uniquement la CVE-2023-38545

Cet article sera mis à jour au fur et à mesure que de nouvelles informations seront disponibles.

Mise à jour : 4 octobre 2023

Le 3 octobre 2023, Daniel Stenberg, responsable de longue date de la maintenance de curl et auteur d’origine, a publié un message sur LinkedIn et X (anciennement Twitter) à propos de la sortie de la version 8.4.0 de curl, qui contiendra un correctif pour « probablement le pire problème de sécurité découvert dans curl depuis longtemps ». Ce problème doit être pris au sérieux, car les responsables de la maintenance de curl ont souvent minimisé les risques liés à la plupart des vulnérabilités signalées dans curl par le passé (un exemple récent : l’article CVE-2020-19909 illustre tout ce qui ne va pas avec les CVE). Dans ce cas particulier, ils attirent explicitement l’attention sur le risque — en ajoutant : « accrochez-vous ».

Selon les responsables de la maintenance, la version corrigée 8.4.0 sera publiée le 11 octobre 2023, vers 06:00 UTC.

Plus tôt dans la journée (le 4 octobre 2023), les CVE qui serviront à documenter les informations sur la vulnérabilité ont été annoncées dans une discussion GitHub.

La CVE-2023-38545 sera attribuée au problème de gravité élevée, qui affecte à la fois libcurl et curl. Un autre problème de gravité faible, associé à la CVE-2023-38546 (qui affecte uniquement libcurl), sera également corrigé.

Que savons-nous pour l’instant ?

cURL est un projet populaire qui fournit la bibliothèque libcurl (utilisée pour les transferts d’URL) et l’outil en ligne de commande curl (utilisé pour récupérer et envoyer des données à l’aide d’URL). cURL a été publié pour la première fois il y a 27 ans et est utilisé partout depuis 1996.

De nombreuses distributions Linux, voire toutes celles prises en charge par Snyk, utilisent libcurl ; l’impact potentiel est donc étendu.

Comment vous préparer à la correction

  • Vérifiez à l’avance l’utilisation des conteneurs et des packages afin d’évaluer votre niveau d’exposition.

  • Identifiez les hôtes sur lesquels curl est installé et déterminez comment il l’a été.

  • Vérifiez la version de curl que vous utilisez avec curl --version

Évaluez votre niveau d’exposition

En attendant la publication de la version corrigée de libcurl, vous pouvez utiliser Snyk pour trouver rapidement les projets open source et les images de conteneurs susceptibles d’être concernés.

Dans la barre latérale de l’interface de l’application Snyk, accédez à Dependencies. Dans la vue Dependencies, développez le filtre Dependencies et saisissez « curl ». Vous pouvez sélectionner des versions individuelles ou cliquer sur le raccourci Select all, puis cliquer en dehors du filtre pour afficher les résultats. Vous verrez ainsi tous les projets contenant les versions de libcurl que vous avez sélectionnées. Vous pouvez ensuite parcourir les projets et les dépendances pour évaluer votre niveau d’exposition et définir les priorités de correction.

Identifiez les hôtes sur lesquels curl est installé

De nombreux systèmes d’exploitation sont livrés avec curl préinstallé. L’emplacement de l’installation dépend du système d’exploitation et de la méthode d’installation. Pour vérifier rapidement si curl est installé et figure dans votre chemin, exécutez : curl --version

Si la commande s’exécute sans erreur, elle affiche la version de curl trouvée en premier dans votre chemin. Notez qu’il peut être installé à plusieurs emplacements. Par exemple, sur les ordinateurs Apple récents, il est préinstallé dans /usr/bin/curl, mais peut également avoir été installé via Homebrew. Pour connaître l’emplacement de la version figurant dans votre chemin, exécutez which curl. Voici quelques autres emplacements à vérifier sur macOS et les systèmes d’exploitation basés sur Linux :

  • /bin/curl

  • /usr/bin/curl

  • /usr/local/bin/curl

  • /opt/homebrew/opt/curl

Veillez à repérer toutes les occurrences à mettre à jour avant la sortie de la nouvelle version.

Comment réagir à la publication de la mise à jour

Le jour de la publication — prévue le 11 octobre 2023 vers 06:00 UTC — préparez-vous à passer à la version 8.4.0. Dès que la nouvelle version sera disponible, Snyk communiquera davantage d’informations et publiera des détails supplémentaires sur la vulnérabilité dans cet article (ainsi que des liens vers tout article de suivi).

Mettez à jour les packages et les conteneurs vulnérables

Utilisez les informations recueillies lors de votre préparation pour mettre à jour vos projets et vos images de conteneurs vers la version corrigée de libcurl. Les différents écosystèmes et distributions Linux ne mettront peut-être à niveau les packages concernés qu’après cette date, et les correctifs seront probablement disponibles à des moments différents. Par exemple, certains responsables de la maintenance peuvent attendre la publication des correctifs en amont avant de mettre à jour leurs images de conteneurs ou leurs packages, tandis que d’autres peuvent appliquer directement le correctif. Dans les deux cas, Snyk peut vous aider à trouver et à corriger les problèmes.

Mettez curl à jour sur vos appareils

Dès qu’une version corrigée du binaire curl sera disponible, mettez à jour les versions que vous avez installées. Nous publierons prochainement un article avec des conseils pratiques pour effectuer la mise à jour : curl peut être installé de différentes façons, et les méthodes de mise à jour varient selon le système d’exploitation.

Que fait Snyk ?

Snyk a publié un avis provisoire sur le problème en amont de gravité élevée. Son contenu sera mis à jour au fur et à mesure que nous en saurons davantage.

Les experts en sécurité de Snyk suivent activement les annonces de publication, les informations sur la vulnérabilité, les discussions sur les réseaux sociaux et bien plus encore, afin de transmettre à nos clients toute nouvelle information. Par ailleurs, des recherches sont menées pour identifier d’autres packages en aval qui pourraient être concernés. Nous mettrons cet article à jour si nécessaire.