Curl 8.9.0 publié : nouvelles fonctionnalités, corrections de bugs et comment l’installer
Daniel Stenberg, le développeur open source suédois et mainteneur de Curl, a annoncé la sortie de Curl 8.9.0. Cette version marque une étape importante dans l'histoire du projet, avec pas moins de 260 corrections de bugs, 11 modifications et 2 correctifs de sécurité.
Statistiques de sortie de Curl 8.9.0
Curl est l'un des logiciels les plus anciens et matures de l'écosystème open source.
Curl 8.9.0 est la 258e version du logiciel, démontrant l'engagement continu du projet envers l'amélioration et l'innovation.
La nouvelle version intègre 11 changements et un impressionnant total de 260 corrections de bugs, établissant un record pour le projet. Ces améliorations sont venues à travers 423 commits d'un groupe diversifié de 80 contributeurs, dont 38 nouveaux. La version a également vu des contributions de 47 auteurs, avec 16 contributeurs pour la première fois, mettant en valeur la communauté croissante du projet.
Cela porte le nombre total de contributeurs à un impressionnant 3 209, avec 1 288 auteurs ayant contribué au projet jusqu'à présent.
Voici le résumé concis des statistiques de la version 8.9.0 de Curl :
- 258ème version,
- 11 changements mis en œuvre,
- 260 corrections de bugs ajoutées,
- 423 commits effectués,
- 80 contributeurs, dont 38 nouveaux,
- 47 auteurs, dont 16 contributeurs pour la première fois.
Améliorations de la sécurité
La sécurité reste une priorité absolue pour Curl. La version 8.9.0 traite deux vulnérabilités : CVE-2024-6197 et CVE-2024-6874. Ces correctifs renforcent encore le profil de sécurité de Curl.
Le premier, CVE-2024-6197, est un problème de gravité moyenne dans le parseur ASN1. Cette vulnérabilité implique la libération d'un tampon de pile dans la fonction utf8asn1str.
Le problème survient dans le parseur ASN1 de libcurl lorsque la fonction utf8asn1str détecte un champ invalide et renvoie une erreur. Malheureusement, elle appelle également free() sur un tampon local de 4 octets sur la pile.
Le second, CVE-2024-6874, est un problème de faible gravité lié aux conversions punycode dans l'API URL.
Le problème se produit dans la fonction API URL de libcurl curl_url_get() qui offre des conversions punycode vers et depuis l'IDN. Lors de la conversion d'un nom qui fait exactement 256 octets, libcurl lit en dehors d'un tampon basé sur la pile lorsqu'il est compilé pour utiliser le backend IDN macidn. La fonction de conversion remplit alors exactement le tampon fourni mais ne termine pas la chaîne par un caractère nul.
Nouvelles fonctionnalités
Curl 8.9.0 introduit plusieurs nouvelles options en ligne de commande pour améliorer sa fonctionnalité. Les utilisateurs peuvent désormais définir le type de service IP/classe de trafic avec l'option --ip-tos.
L'option --mptcp active le Multipath TCP pour les connexions, améliorant potentiellement la performance du réseau.
Pour la gestion du réseau local, l'option --vlan-priority permet de définir le champ de priorité VLAN pour le trafic IP.
Enfin, l'option --keepalive-cnt permet aux utilisateurs de spécifier le nombre de sondes keepalive avant de déclarer une connexion comme morte.
Améliorations
La mise à jour apporte diverses améliorations aux capacités de Curl. GnuTLS et WolfSSL prennent désormais en charge le cache CA, ce qui peut accélérer considérablement les connexions TLS en série.
MbedTLS ajoute la prise en charge de CURLOPT_CERTINFO, permettant aux applications de récupérer des informations sur les certificats.
L'API URL introduit CURLU_NO_GUESS_SCHEME pour une meilleure détection du schéma. De plus, les utilisateurs peuvent désormais lier une connexion à la fois à une interface et à une adresse IP simultanément, offrant ainsi plus de flexibilité dans les configurations réseau.
Nouvelles options
Curl 8.9.0 introduit une nouvelle option curl_easy_setopt() et quatre nouvelles options en ligne de commande. Ces ajouts étendent la fonctionnalité de Curl, offrant aux utilisateurs plus d'outils et de flexibilité.
Corrections de bugs notables
Cette version inclut un nombre record de 260 corrections de bugs, le plus jamais atteint dans la longue histoire de Curl. Les améliorations couvrent divers domaines, y compris de nombreuses améliorations des scripts CMake et configure.
Les fonctionnalités de documentation et d'aide ont été améliorées pour une meilleure expérience utilisateur. L'équipe a corrigé des fuites de mémoire et des plantages dans les implémentations de DNS sur HTTPS (DoH).
La gestion des connexions HTTPS, QUIC et TLS a été améliorée. La version inclut également un meilleur support pour différents systèmes d'exploitation et bibliothèques SSL, rendant Curl plus polyvalent sur diverses plateformes.
Voici une liste des corrections de bugs notables dans cette version :
- cmake : 26 corrections de bugs distinctes.
- configurer : 10 corrections de bogues distinctes.
- Nettoyage des catégories d'aide : Amélioration de la sortie
--helpen listant les catégories et en améliorant la présentation. - Réponses 3xx :
etagetcontent-dispositionautorisés pour les réponses 3xx. - Documentation : D'innombrables corrections, améliorations et ajustements.
- Résumé du test : Afficher les noms et les mots-clés des tests échoués dans le résumé.
- GetAddrInfoExW : Évitez d'utiliser ceci avec l'usurpation d'identité.
- AWS Sigv4 : encoder l’URL du chemin canonique.
- DoH (DNS sur HTTPS) : Divers correctifs incluant le nettoyage, la résolution de fuites de mémoire et les correctifs de plantage des RR HTTPS de longueur zéro.
- AppleIDN : Correction de la gestion de
ß. - OpenSSL 1.x : Problèmes de compilation résolus avec
md4désactivé. - Mises à jour de progression : Ajout d'une mise à jour finale sur l'échec de connexion.
- Multi : pollset corrigé pendant la phase RESOLVING.
- QUIC : Activation de l'agrégation de paquets UDP (GRO) et ajout du support de l'arrêt, OpenSSL 3.3 étant désormais requis.
- Conversion d'entrée : Conversion CRLF de l'entrée corrigée.
- SMTP : Correction de
starttlspour SMTP. - TCP keepalive : Passé de millisecondes à secondes sur DragonFly BSD et paramètres pris en charge sur Solaris <11.4.
- TLS et TCP : Arrêt amélioré.
- GnuTLS : Nom SNI passé au lieu du nom d'hôte lors de la vérification des certificats, et correction des vérifications de version TLS pour QUIC.
- mbedTLS v3.6.0 : Ajout de solutions de contournement.
- Analyseur X509 ASN.1 : Plusieurs corrections.
Avec de nombreuses corrections de bugs, de nouvelles options et des améliorations de sécurité, cette version garantit que Curl reste un outil puissant et fiable pour le transfert de données.
Télécharger et installer Curl 8.9.0
Vous pouvez télécharger la nouvelle version de Curl depuis curl.se comme toujours. Comme cette version est nouvelle, elle n'est pas encore empaquetée pour la plupart des distributions Linux. Mais ne vous inquiétez pas. Vous pouvez installer la dernière version de Curl à partir des sources en utilisant GNU Stow.
1. Assurez-vous que la base de données des paquets de votre système est à jour.
sudo apt update # For Debian/Ubuntu-based systems
sudo yum update # For CentOS/RHEL systems
sudo dnf update # For Fedora systems
sudo pacman -Syu # For Arch Linux systems2. Installez les outils de développement nécessaires s'ils ne sont pas déjà installés.
sudo apt install build-essential # Debian/Ubuntu
sudo yum groupinstall "Development Tools" # CentOS/RHEL
sudo dnf groupinstall "Development Tools" # Fedora
sudo pacman -S base-devel # Arch LinuxVous devrez également installer les bibliothèques de développement OpenSSL si vous souhaitez compiler Curl avec le backend OpenSSL. Par exemple, sur les systèmes basés sur Debian, vous pouvez installer les bibliothèques de développement OpenSSL en utilisant la commande :
sudo apt install libssl-devSi vous voulez compiler Curl avec le backend GnuTLS, installez ce qui suit sur un système basé sur Debian :
sudo apt install libgnutls28-dev libgnutls303. Installez GNU Stow.
sudo pacman -S stow # Arch Linux
sudo apt install stow # Debian/Ubuntu
sudo yum install stow # Older CentOS/RHEL
sudo dnf install stow # Latest Fedora/RHEL/AlmaLinux/Rocky Linux4. Téléchargez le dernier code source de Curl depuis sa page officielle des releases et extrayez-le.
wget https://github.com/curl/curl/releases/download/curl-8_9_0/curl-8.9.0.tar.gz
tar xvf curl-8.9.0.tar.gz5. Configurez la construction avec le préfixe.
Accédez au répertoire extrait :
cd curl-8.9.0Configurez la compilation avec le backend TLS et le répertoire d'installation à gérer par GNU Stow.
./configure --with-ssl --prefix=/usr/local/stow/curl-8.9.0Si vous voulez configurer Curl avec GnuTLS, utilisez plutôt cette commande :
./configure --with-gnutls --prefix=/usr/local/stow/curl-8.9.06. Compiler le logiciel.
make7. Installer Curl 8.9.0
sudo make install8. Utilisez GNU Stow pour ajouter Curl à votre PATH.
Changez pour le répertoire stow et utilisez stow pour gérer l'installation.
cd /usr/local/stow
sudo stow curl-8.9.09. Vérifiez que Curl est correctement installé et accessible.
curl --versionExemple de sortie :
curl 8.9.0 (x86_64-pc-linux-gnu) libcurl/8.9.0 GnuTLS/3.7.1 zlib/1.2.11 libidn2/2.3.0
Release-Date: 2024-07-24
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IDN IPv6 Largefile libz NTLM SSL threadsafe TLS-SRP UnixSocketsRegard vers l'avenir : Curl 8.10.0
En raison du cycle de publication prolongé de Curl 8.9.0, le développeur indique que la prochaine version 8.10.0 aura un cycle raccourci.
Il a également ajouté que la fenêtre de fonctionnalités pour Curl 8.10.0 ne sera que de deux semaines, ce qui pourrait affecter le nombre de nouvelles fonctionnalités et de modifications pouvant être intégrées.
Malgré cela, il y a déjà un grand nombre de demandes de fusion en attente de fusion, attendant l'ouverture de la fenêtre de publication.
Si tout se passe bien, Curl 8.10.0 devrait être publié le 11 septembre 2024. Cette prochaine version continuera la tradition d'amélioration et d'innovation pour laquelle Curl est reconnu.
Pour plus de détails, veuillez consulter les notes de version officielles :
- Notes de version de Curl 8.9.0
Lecture Connexe:
- Wcurl : un wrapper Curl convivial pour des téléchargements de fichiers faciles
- Debian Curl prend désormais en charge HTTP3 : ce que vous devez savoir
- Comment installer Curl avec le backend GnuTLS sur Debian
