Skip to main content

Débordement de tampon dans Chromium touchant plusieurs packages

Écrit par
Blog illustrations vul profile

23 novembre 2020

0 minutes de lecture

Bienvenue dans le profil mensuel des vulnérabilités de Snyk. Dans cette série, Snyk revient sur les vulnérabilités découvertes par notre équipe de recherche en sécuritéou qui lui ont été signalées. Nous sélectionnons une vulnérabilité marquante du mois écoulé et racontons son histoire : sa découverte, les recherches menées et sa divulgation. Nous mettons en lumière les chercheurs, les développeurs et les utilisateurs qui contribuent à repérer et à corriger les vulnérabilités au sein de la communauté open source.

Ce mois-ci, nous nous intéressons à une vulnérabilité de type débordement de tampon découverte dans le package FreeType utilisé par Chromium, ainsi qu’aux recherches menées par Snyk pour repérer les packages open source concernés par l’intégration de composants Chromium vulnérables.


Vulnérabilité : débordement de tampon dans FreeType

CVE attribués : CVE-2020-15999

Analyste Snyk : plusieurs

Découverte par : Sergei Glazunov, de Google Project Zero

Le 2 novembre 2020, la CVE-2020-15999 a été publiée dans la National Vulnerability Database. Elle concerne une vulnérabilité de type débordement de tampon découverte dans le package de rendu de polices FreeType utilisé par le navigateur Chromium. Selon un article de blog publié sur le site du projet Chromium, la vulnérabilité a été signalée pour la première fois le 19 octobre 2020. Sa description initiale indique :

Une vulnérabilité existe dans la fonction `Load_SBit_Png`, qui traite les images PNG intégrées aux polices. Cette fonction :

1) Récupère la largeur et la hauteur de l’image dans l’en-tête sous forme d’entiers 32 bits.

2) Tronque les valeurs obtenues à 16 bits et les stocke dans une structure `TT_SBit_Metrics`.

3) Utilise les valeurs tronquées pour calculer la taille du bitmap.

4) Alloue une zone mémoire de cette taille.

5) Transmet `png_struct` et la zone mémoire à une fonction libpng.

Le problème est que libpng utilise les valeurs originales sur 32 bits, stockées dans `png_struct`. Par conséquent, si la largeur et/ou la hauteur d’origine dépasse 65 535, le tampon alloué ne peut pas contenir le bitmap.

Les vulnérabilités de type débordement de tampon peuvent permettre à un attaquant de corrompre ou de manipuler la mémoire du tas. Il peut alors concevoir une charge malveillante qui entraîne l’exécution de code arbitraire sur le système vulnérable.

Comprendre l’impact sur l’open source

L’équipe de recherche en sécurité de Snyk surveille régulièrement les signalements de vulnérabilités et, lorsqu’ils peuvent avoir un impact sur la communauté open source, en étudie les conséquences. Dans le cas du navigateur Chromium, les composants publiés par le projet Chromium sont couramment utilisés dans des packages open source pour fournir des fonctionnalités Web. Dès la divulgation de la vulnérabilité de type débordement de tampon, l’équipe de recherche de Snyk s’est donc mise à rechercher les packages open source qui contenaient les versions vulnérables du composant Chromium.

Grâce à ces recherches, l’équipe Snyk a finalement identifié six packages de différents écosystèmes concernés par la vulnérabilité du package FreeType. Ils sont répertoriés dans le tableau ci-dessous :

Package

Écosystème (gestionnaire de packages)

ID de vulnérabilité Snyk

cefsharp.wpf.hwndhost

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWPFHWNDHOST-1023310

cefsharp.wpf

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWPF-1023309

cefsharp.winforms

.Net (NuGet)

SNYK-DOTNET-CEFSHARPWINFORMS-1023307

cefsharp.common

.Net (NuGet)

SNYK-DOTNET-CEFSHARPCOMMON-1023308

electron 

JavaScript (npm)

SNYK-JS-ELECTRON-1021884

org.webjars.npm:electron

Java (Maven)

SNYK-JAVA-ORGWEBJARSNPM-1021885

Les quatre composants .Net identifiés sont des contrôles disponibles directement auprès du projet Chromium. Des versions mises à jour ont été publiées pour corriger les vulnérabilités. Les développeurs qui utilisent ces composants dans leurs applications ou services doivent toutefois passer à ces nouvelles versions pour corriger la vulnérabilité.

Snyk a également découvert que les versions JavaScript et Java du framework Electron utilisent elles aussi des composants vulnérables de Chromium. Electron est un framework populaire, utilisé dans de nombreuses applications de premier plan, notamment Discord. Le framework Electron a été mis à jour et de nouvelles versions ont été publiées fin octobre. Là encore, les développeurs qui utilisent ce framework doivent passer à la nouvelle version pour supprimer la vulnérabilité de leurs logiciels.

Avec le recul

La découverte de cette vulnérabilité de type débordement de tampon illustre une nouvelle fois la manière dont l’équipe de recherche en sécurité de Snyk contribue à améliorer le niveau de sécurité global de la communauté open source. Rechercher les projets qui utilisent comme dépendances des packages vulnérables très répandus, tels que Chromium, permet de mettre ces failles au jour et aux responsables de la maintenance des projets open source de les corriger dans leurs logiciels.

Cela permet également à Snyk de veiller à ce que notre base de données des vulnérabilités contienne les informations les plus complètes possible, afin que les développeurs puissent sécuriser leurs logiciels open source et être avertis lorsque leurs dépendances présentent des vulnérabilités.

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.