CVE-2021-45078 identifié par l'équipe de support du cycle de vie étendu de TuxCare.
Lors du backportage des correctifs du paquet binutils pour les anciennes distributions Linux couvertes par l'Extended Lifecycle Support, l'équipe a identifié une vulnérabilité dans la manière dont CVE-2018-12699 a été initialement traitée. Cette nouvelle vulnérabilité permet une corruption de mémoire et un déni de service dans des conditions spécifiques de la fonctionnalité binutils, qui, à son tour, est utilisée par de multiples autres paquets.
La vulnérabilité originale avait un score CVSS (v3) de 9.8, et la vulnérabilité nouvellement identifiée a reçu un score CVSS (v3) de 7.5. La dernière mise à jour de binutils disponible pour les abonnés au service comprend déjà un correctif approprié pour le problème sous-jacent, et le code a été corrigé dans le projet open source en amont après notre rapport.
UN APERÇU DE HAUT NIVEAU DU RISQUE
Il est possible que certains outils binutils se plantent en raison d'une mauvaise gestion de certains types d'informations. Ceci peut à son tour déclencher des défaillances dans d'autres outils ou applications qui dépendent de binutils pour son fonctionnement, comme les débogueurs, les visionneurs de fichiers, etc.
Binutils comprend une fonctionnalité permettant d'analyser différents types de fichiers, comme les fichiers binaires ELF (Linux binary executable files) et les fichiers utilisant le format prédécesseur d'ELF, XCOFF. Le cas spécifique qui déclenche cette vulnérabilité réside dans la fonctionnalité XCOFF. S'il est vrai qu'il s'agit d'un format de fichier relativement ancien qui a depuis été remplacé par ELF, le code pour le gérer est toujours présent dans le paquet binutils.
binutils est un paquet fondamental dans les distributions Linux, et même si vous n'utilisez pas directement des outils de développement logiciel, il est très probable qu'il soit déjà déployé sur les systèmes de production en tant que dépendance d'autres paquets. Il comprend de nombreux outils permettant d'effectuer des tâches telles que la manipulation de fichiers binaires, l'édition de liens, l'assemblage et d'autres fonctionnalités assorties fortement utilisées, entre autres, dans les scénarios de développement et de débogage. Le maintenir à jour permet de garantir la stabilité et la sécurité de ces applications et des fonctionnalités centrales du système.
UN EXAMEN DÉTAILLÉ DES QUESTIONS
Dans la fonction stab_xcoff_builtin_type, située dans le fichier binutils/stab.c, il y a une écriture hors limites dans le tableau 'info-xcoff_types' qui se produit lorsqu'un typenum spécifique est passé (-34). L'opération d'écriture écrase alors le champ adjacent 'info->tags' à la ligne 3668.
À son tour, cela entraînera une erreur de défaut de segmentation lors de l'appel de la fonction finish_stab.
CVE-2021-45078 a été demandé et attribué pour le nouveau problème, et a reçu un score CVSS (v3) de 7,5. Comme il est très récent, il n'est pas impossible que ce score soit modifié au fur et à mesure que la situation est analysée par d'autres développeurs. La version originale de CVE-2018-12699, qui traitait d'une situation similaire ailleurs dans le code et l'omettait dans ce code spécifique, a reçu un score de 9,8 (sur 10). Il est donc reconnu que le plantage de binutils est une situation très sérieuse qui nécessite de la prudence.
"Ils [l'équipe du projet amont] ont une énorme liste de CVEs couverts par un seul correctif qui aurait dû traiter toutes les situations, mais il n'a pas réellement corrigé tous les cas", explique Pavel Mayorov, le membre de l'équipe qui rétroporte les correctifs pour binutils et qui a repéré le correctif manquant. "Le correctif ne touche pas tous les endroits du code source qui pourraient déclencher ce problème". Il est également rare qu'un seul correctif couvre plusieurs CVE, et il est possible que quelque chose ait été oublié.
Le rapport complet est disponible ici et comprend un code de preuve de concept qui déclenche le problème.
Cette vulnérabilité provient d'une correction incomplète de CVE-2018-12699, qui a manqué certains cas qui pourraient déclencher le problème. La situation signalée a été résolue par d'autres développeurs du projet après la soumission de notre rapport, et le problème sera donc résolu sur toutes les versions de binutils à l'avenir. Le problème a également été corrigé sur les anciennes distributions Linux qui ne sont plus prises en charge par le fournisseur d'origine, mais qui sont couvertes par les services de support du cycle de vie étendu, et ces systèmes ont également la version corrigée disponible via le canal de mise à jour habituel.
