Des versions correctives du système de contrôle de version distribué Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 et 2.30.7 ont été publiées, corrigeant deux vulnérabilités permettant l'exécution de code sur le système utilisateur lors de l'utilisation de la commande « git archive » et lors de l'interaction avec des dépôts externes non fiables. Ces vulnérabilités proviennent d'erreurs dans le formatage des messages de commit et l'analyse du fichier « .gitattributes », qui peuvent mener à l'écriture en dehors de la mémoire allouée et à la lecture de données arbitraires en mémoire.
Les deux vulnérabilités ont été découvertes à la suite d'un audit de sécurité de la base de code de Git, réalisé par la société X41 pour le compte de la fondation OSTIF (Open Source Technology Improvement Fund), créée pour renforcer la sécurité des projets open source. En plus des deux problèmes critiques mentionnés ci-dessous, l'audit a également révélé une vulnérabilité dangereuse, une vulnérabilité de gravité moyenne et quatre problèmes sans gravité. 27 recommandations ont également été fournies pour améliorer la sécurité de la base de code.
- CVE-2022-41903 : un débordement d'entier dans le code de formatage des informations de commit, se produisant lors du traitement de grandes valeurs d'offset dans des spécificateurs de format, tels que « %<( », « %( », « %>> ( » et « %><( ) ». Le débordement d'entier se produit dans la fonction format_and_pad_commit() en raison de l'utilisation du type int pour la variable size_t, qui participe à la définition de la taille de la zone de copie lors de l'appel de memcpy().
La vulnérabilité se manifeste tant lors d'appels directs avec des paramètres de formatage spécialement conçus (par exemple, lors de l'exécution de « git log —format=… ») que par une utilisation indirecte du formatage lors de l'exécution de la commande « git archive » dans un dépôt contrôlé par l'attaquant. Dans ce second cas, les modificateurs de formatage sont spécifiés via le paramètre export-subst dans le fichier « .gitattributes », qui peut être placé par l'attaquant dans son propre dépôt. Le problème peut être exploité pour lire et écrire dans des zones arbitraires de la mémoire, entraînant l'exécution de code malveillant lors de l'utilisation de dépôts non vérifiés.
- CVE-2022-23521 : débordements d'entiers lors de l'analyse du contenu des fichiers « .gitattributes » dans le dépôt, se manifestant lors du traitement d'un très grand nombre de modèles de chemins de fichiers ou d'un grand nombre d'attributs avec un seul modèle, ainsi que lors de l'analyse de noms d'attributs très longs. Ce problème peut être utilisé pour lire et écrire dans des zones arbitraires de la mémoire et entraîner l'exécution de code malveillant lors du travail avec un dépôt non vérifié, où un attaquant peut placer un fichier .gitattributes spécialement formaté et s'assurer qu'il entre dans l'index.
La publication des mises à jour des paquets dans les distributions peut être suivie sur les pages : Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Pour réduire le risque d'attaque lorsqu'il n'est pas possible d'installer les mises à jour à temps, il est recommandé de s'abstenir de travailler avec des dépôts non fiables et d'utiliser la commande « git archive ». Il est important de noter que la commande « git archive » peut être exécutée implicitement, par exemple, à partir de git daemon. Pour désactiver l'exécution de « git archive » dans git daemon, il faut changer le paramètre daemon.uploadArch avec la commande « git config —global daemon.uploadArch false ».
On peut également noter une autre vulnérabilité (CVE-2022-41953) dans le produit Git pour Windows, permettant l'exécution de code lors de la clonage via l'interface graphique de dépôts externes non vérifiés. Le problème est dû au fait que Git GUI pour Windows exécute automatiquement certaines commandes post-traitement après l'opération « checkout », comme l'exécution du programme de vérification orthographique, alors que les chemins de recherche des fichiers de vérification orthographique incluent également l'arborescence de travail clonée (l'attaque consiste à ajouter la vérification orthographique à l'arborescence de travail du dépôt).
Source : opennet.ru
