Introduction
Libxml2 est une bibliothèque largement utilisée pour la manipulation des fichiers XML et HTML. Récemment, une vulnérabilité de sécurité, identifiée sous le nom de [CVE-2023-29469], a été découverte dans la fonction de hachage des chaînes de dictionnaire vides de libxml2. Cette faille pouvait entraîner des résultats incohérents lors du hachage de telles chaînes, pouvant causer divers problèmes logiques ou de mémoire. Heureusement, cette vulnérabilité a été corrigée grâce à des modifications apportées au code source.
Détails de la vulnérabilité
Le problème résidait dans la fonction xmlDictComputeFastKey
, qui est responsable du calcul du hachage des chaînes de dictionnaire vides. Voici le code avant la correction :
xmlDictComputeFastKey(const xmlChar *name, int namelen, int seed) {
unsigned long value = seed;
if (name == NULL) return(0);
value += *name;
value <<= 5;
if (namelen > 10) {
// ...
Le code d’origine présentait une lacune dans la gestion des chaînes de dictionnaire vides. Lorsque la fonction recevait une chaîne vide, elle effectuait une opération de hachage en utilisant le premier octet de la chaîne (*name
). Cependant, il n’y avait pas de vérification pour s’assurer que la chaîne était terminée par un caractère nul, ce qui pouvait entraîner des résultats incohérents.
Solution apportée
La vulnérabilité a été résolue grâce à des modifications apportées au code de la fonction xmlDictComputeFastKey
.
Voici le code corrigé :
xmlDictComputeFastKey(const xmlChar *name, int namelen, int seed) {
unsigned long value = seed;
if ((name == NULL) || (namelen <= 0))
return(value);
value += *name;
value <<= 5;
if (namelen > 10) {
// ...
La correction introduit une vérification supplémentaire pour s’assurer que la chaîne est valide avant d’effectuer le calcul du hachage. Si la chaîne est vide ou si la longueur est inférieure ou égale à zéro, la fonction retourne immédiatement la valeur du hachage actuelle (value
), évitant ainsi toute opération inutile.
Conclusion
La vulnérabilité de sécurité [CVE-2023-29469] dans libxml2, liée à la fonction de hachage des chaînes de dictionnaire vides, a été corrigée grâce à des ajustements apportés au code source. Les développeurs de libxml2 ont pris des mesures pour vérifier la validité des chaînes avant d’effectuer le hachage, assurant ainsi la déterminisme et l’intégrité des résultats. Il est essentiel de mettre à jour votre version de libxml2 pour bénéficier de cette correction de sécurité