Vulnérabilité dans l’implémentation de TLS au sein de l’outil curl

Date de publication :

CVE-2021-22901 [Score CVSS v3 : 8.1]
Libcurl peut être amené à utiliser de la mémoire déjà libérée lorsqu'une nouvelle session TLS est négociée ou qu'un certificat client est demandé sur une connexion existante.

Par exemple lorsqu'un serveur TLS demande un certificat client sur une connexion qui a été établie sans certificat. OpenSSL peut déclarer une "nouvelle session" pour différentes raisons, y compris l'achèvement de la poignée de main TLS initiale, la renégociation TLS 1.2 (ou antérieure), ou les demandes de certificat client TLS 1.3.

Plus précisément, lorsque libcurl, au moment de l'exécution, met en place le support pour la mise en cache de l'ID de session sur une connexion utilisant OpenSSL, il stocke les pointeurs vers l'objet de transfert en mémoire pour une récupération ultérieure lorsque OpenSSL considère qu'une nouvelle session est établie. Cependant, si la connexion est utilisée par plusieurs transferts (comme dans le cas d'une connexion HTTP/1.1 réutilisée ou d'une connexion HTTP/2 multiplexée), le premier objet de transfert peut être libéré avant que la nouvelle session ne soit établie sur cette connexion et la fonction accède alors à un tampon mémoire qui a pu être libéré. Lors de l'utilisation de cette mémoire, libcurl pourrait même appeler un pointeur de fonction dans l'objet, ce qui rendrait possible une exécution de code à distance si le serveur parvenait d'une manière ou d'une autre à placer le contenu de la mémoire altérée au bon endroit dans la mémoire.

Dans certaines circonstances donc , un attaquant distant et non authentifié peut exploiter cette faille afin d’exécuter du code arbitraire sur le dispositif client.

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Exécution de code arbitraire

Criticité

  • Score CVSS v3 : 8.1

Existence d’un code d’exploitation

  • Aucun code d’exploitation n’est disponible publiquement à l’heure actuelle.

Composants vulnérables

  • Les versions de Curl de 7.75.0 à 7.76.1 sont impactées par cette vulnérabilité.

CVE

Solutions ou recommandations

Mise en place de correctifs de sécurité

  • Mettre à jour l’outil curl vers les versions 7.77.0 ou ultérieures.

Solution de contournement

  • Aucune solution de contournement n’est disponible publiquement à l’heure actuelle.