2 points par GN⁺ 2023-10-12 | 1 commentaires | Partager sur WhatsApp
  • Article sur la faille de sécurité critique CVE-2023-38545 découverte dans curl 8.4.0, considérée comme le problème de sécurité le plus grave de curl depuis longtemps
  • Le problème est un dépassement de tas, causé par un défaut dans la fonction de connexion à un proxy SOCKS5
  • Cette faille a été introduite au début de 2020, lorsque la fonction a été convertie d’un appel bloquant en une machine à états non bloquante, afin d’améliorer les performances des transferts massivement parallèles via SOCKS5
  • Le défaut se situe dans l’état INIT de la machine à états, où une variable locale est définie et où curl décide s’il doit résoudre l’hôte localement ou transmettre le nom au proxy. Si le nom d’hôte est trop long, le code bascule en mode de résolution locale, ce qui peut provoquer un dépassement mémoire si le nom d’hôte est plus long que le tampon cible
  • Le dépassement peut se produire si la taille du tampon est définie à moins de 65541 octets et que le nom d’hôte est plus long que la taille du tampon. Cela exige qu’un acteur malveillant fournisse un nom d’hôte extrêmement long pour déclencher la faille
  • Un attaquant qui contrôle un serveur HTTPS auquel un client utilisant libcurl accède via un proxy SOCKS5 peut provoquer un dépassement du tampon du tas en renvoyant à l’application une redirection manipulée via une réponse HTTP 30x
  • Le problème a été corrigé dans curl 8.4.0 en faisant renvoyer une erreur par curl lorsque le nom d’hôte est trop long, au lieu de basculer de la résolution distante à la résolution locale. Un cas de test dédié a également été ajouté pour ce scénario
  • L’auteur reconnaît que cette faille ne se serait pas produite si curl avait été écrit dans un langage sûr du point de vue mémoire plutôt qu’en C, mais indique qu’un portage complet vers un autre langage n’est pas prévu actuellement
  • L’auteur suggère qu’une approche viable consiste à autoriser, utiliser et soutenir davantage de dépendances écrites dans des langages sûrs du point de vue mémoire, et qu’il pourrait être possible de remplacer progressivement certaines parties de curl
  • L’auteur reconnaît son erreur et présente ses excuses, en indiquant que cette faille aurait pu être détectée avec une meilleure suite de tests. Il mentionne également les analyseurs statiques de code qui n’ont pas repéré le problème dans cette fonction
  • L’auteur conclut qu’expédier un dépassement de tas dans un code installé sur plus de 20 milliards d’instances n’est pas une expérience qu’il recommande

1 commentaires

 
GN⁺ 2023-10-12
Avis Hacker News
  • Article sur un problème de dépassement de tampon sur le tas dans la bibliothèque Curl, utilisée sur de nombreux appareils et majoritairement écrite par une seule personne.
  • Daniel, l’auteur de Curl, présente ses excuses pour une erreur due à un défaut resté non détecté dans le code pendant 1315 jours.
  • L’article suggère que les problèmes de sécurité mémoire auraient pu être évités si Curl avait été écrit dans un langage sûr pour la mémoire plutôt qu’en C.
  • L’auteur envisage la possibilité de remplacer progressivement certaines parties de Curl par un langage plus sûr pour la mémoire, tout en reconnaissant la lenteur d’un tel développement.
  • L’auteur affirme que 41 % des vulnérabilités de sécurité de Curl auraient pu être évitées avec un langage sûr pour la mémoire.
  • L’article est salué pour son écriture claire et franche, qui explique la logique et le point de vue derrière le problème.
  • Certains commentaires remettent en question la gravité du problème, affirmant que le vecteur d’attaque est très réduit et nécessite des conditions très spécifiques pour être exploité.
  • Un commentaire critique une partie du code qui pourrait divulguer l’identité des utilisateurs via le DNS pour les personnes utilisant des outils anti-censure.
  • Un autre commentaire souligne que l’auteur a ignoré les restrictions sur les noms d’hôte DNS spécifiées dans la RFC1123, ce qui a pu contribuer au problème.
  • Il est mentionné que la dernière mise à jour de sécurité de Windows 10 n’incluait pas la nouvelle version de Curl.