Google a discrètement soumis à nouveau une divulgation d’une vulnérabilité critique d’exécution de code affectant des milliers d’applications individuelles et de cadres logiciels après que sa précédente soumission ait laissé aux lecteurs l’impression erronée que la menace affectait uniquement le navigateur Chrome.
La vulnérabilité provient de la bibliothèque de code libwebp, créée par Google en 2010 pour le rendu des images dans webp, un format alors nouveau qui aboutissait à des fichiers jusqu’à 26 % plus petits que les images PNG. Libwebp est intégré à presque toutes les applications, systèmes d’exploitation ou autres bibliothèques de codes qui restituent des images Webp, notamment le framework Electron utilisé dans Chrome et de nombreuses autres applications qui s’exécutent à la fois sur les appareils de bureau et mobiles.
Il y a deux semaines, Google a publié un avis de sécurité concernant ce qu’il a qualifié de débordement de tampon de tas dans WebP dans Chrome. La description officielle de Google, suivie sous le numéro CVE-2023-4863, désignait le fournisseur concerné comme « Google » et le logiciel concerné comme « Chrome », même si tout code utilisant libwebp était vulnérable. Les critiques ont averti que l’incapacité de Google à remarquer que des milliers d’autres morceaux de code étaient également vulnérables entraînerait des retards inutiles dans la correction de la vulnérabilité, ce qui permettrait aux attaquants d’exécuter du code malveillant lorsque les utilisateurs ne font rien d’autre que de visualiser une image Webp piégée.

Lundi, Google a soumis une nouvelle divulgation classée CVE-2023-5129. La nouvelle entrée répertorie correctement libwebp comme fournisseur concerné et logiciel concerné. Cela augmente également l’indice de gravité de la vulnérabilité, de 8,8 sur 10 possibles à 10.

Le manque d’exhaustivité du premier CVE attribué par Google va bien au-delà d’un simple échec académique. Plus de deux semaines après la révélation de la vulnérabilité, de nombreux logiciels ne sont toujours pas corrigés. Les exemples les plus flagrants sont Microsoft Teams et Visual Studio Code.
La description de la vulnérabilité dans la nouvelle soumission de Google fournit beaucoup plus de détails. La description dans l’ancienne soumission était :
Un dépassement de tampon de tas dans WebP dans Google Chrome avant 116.0.5845.187 permettait à un attaquant distant d’effectuer une écriture de mémoire hors limites via une page HTML contrefaite. (Gravité de sécurité de Chromium : Critique)
La nouvelle description est la suivante :
Avec un fichier sans perte WebP spécialement conçu, libwebp peut écrire des données hors limites dans le tas. La fonction ReadHuffmanCodes() alloue au tampon HuffmanCode une taille provenant d’un tableau de tailles précalculées : kTableSize. La valeur color_cache_bits définit la taille à utiliser. Le tableau kTableSize prend uniquement en compte les tailles pour les recherches de table de premier niveau 8 bits, mais pas les recherches de table de deuxième niveau. libwebp autorise les codes allant jusqu’à 15 bits (MAX_ALLOWED_CODE_LENGTH). Lorsque BuildHuffmanTable() tente de remplir les tables de deuxième niveau, il peut écrire des données hors limites. L’écriture OOB dans le tableau sous-dimensionné se produit dans ReplicateValue.
Qu’elle soit suivie comme CVE-2023-4863 ou CVE-2023-5129, la vulnérabilité de libwebp est sérieuse. Avant d’utiliser des applications, les utilisateurs doivent s’assurer que les versions d’Electron qu’ils utilisent sont la v22.3.24, la v24.8.3 ou la v25.8.1.