Les années se succèdent, les technologies open source évoluent, mais de nouvelles vulnérabilités apparaissent, gardant la question des vulnérabilités de la sécurité de l’open source toujours au cœur de la communauté. Alors que nous sommes dans une nouvelle année, l’équipe de WhiteSource – une plateforme de gestion de la sécurité et de la conformité des licences open source – s’est plongée dans la base de données des vulnérabilités de sa plateforme pour dresser sa liste Top 10 des nouvelles vulnérabilités de sécurité de l’open source pour l’année 2019, afin de tenir informée la communauté.
Selon le rapport de WhiteSource, la base de données de la plateforme a enregistré en 2019 près de 3,5 millions de fichiers et de paquets vulnérables regroupés à partir de dizaines de sources, dont la NVD (National Vulnerability Database), les avis de sécurité et autres bases de données de suivi des problèmes liés à l’open source, afin de garantir la couverture la plus complète possible des vulnérabilités open source. La liste des dix principales vulnérabilités de sécurité open source connues, selon WhiteSource, comprend des problèmes dans des projets écrits dans des langages populaires comme JavaScript, Java, Go, C et Ruby. Les projets vulnérables comprennent tout, de l’orchestration des conteneurs aux systèmes d’exploitation, des environnements de serveurs web pour Java aux services d’hébergement Ruby, et plus encore.
La nouvelle liste 2019 des nouvelles vulnérabilités open source comporte des vulnérabilités avec un identifiant qui commence par WS, différent du préfixe CVE plus familier qui identifie les vulnérabilités répertoriées par la NVD. En effet, selon le rapport du WhiteSource, la NVD n’inclut pas les vulnérabilités open source publiées en dehors du dictionnaire des informations publiques relatives aux vulnérabilités de sécurité. En raison de la nature collaborative et non centralisée de la communauté du logiciel libre, certaines vulnérabilités du logiciel libre sont publiées en dehors du CVE, sur les bases de données de suivi des problèmes liés aux projets open source ou autres. WhiteSource recueille ces vulnérabilités open sources et leur affecte un numéro d’index de préfixe WS plutôt qu’un préfixe CVE.
Voici, ci-dessous, les premiers éléments du Top 10 des vulnérabilités open source publié en 2019 par la plateforme, qu’il s’agisse d’une vulnérabilité WS ou CVE :
1- Lodash
Précédemment connue sous l’identifiant WS-2018-0210, cette vulnérabilité open source dans la bibliothèque Lodash – dans les versions qui ont précédé 4.17.11 – est un nouveau CVE. Maintenant nommée CVE-2018-16487, c’est une vulnérabilité de score critique 9,8 qui a été sous le radar de WhiteSource, et dans sa base de données, pendant un certain temps. Publiée en 2019 dans le NVD, en raison de la popularité du projet et du score de vulnérabilité élevé, WhiteSource a décidé de l’inclure dans son Top 10 des nouvelles vulnérabilités open source les plus importantes en 2019.
Ce prototype de vulnérabilité a été découvert dans quelques-unes des fonctions du module du nœud Lodash, d’après le rapport. Plus précisément, les fonctions merge, mergeWith et defaultsDeep peuvent être utilisées pour ajouter ou modifier les propriétés du prototype Object. Lodash est un projet open source extrêmement populaire qui contribue à faciliter le JavaScript en simplifiant le travail avec des tableaux, des nombres, des objets, des chaînes de caractères, etc. Les développeurs utilisent les méthodes modulaires de Lodash pour itérer les tableaux, les objets et les chaînes, manipuler et tester les valeurs et créer des fonctions composites.
2- JS-YAML
Les versions de JS-YAML antérieures à la version 3.13.1 se sont avérées vulnérables à une attaque par injection de code en 2019, et, selon le rapport, ce composant JavaScript très populaire a connu une difficile année de mise au jour de sécurité, à cause de ce problème et d’autres. C’est une vulnérabilité WS nommée WS-2019-0063 et de score élevé égal à 8. Selon l’avis de sécurité de npm, la fonction load() pourrait exécuter un code arbitraire injecté par un fichier YAML malveillant.
JS-YAML est un analyseur et éditeur de YAML 1.2 pour JavaScript. C’est une implémentation de YAML, un standard de sérialisation de données convivial pour tous les langages de programmation, selon le rapport. Selon la documentation de JS-YAML sur GitHub et npm, le projet a commencé comme port PyYAML, et a été complètement réécrit pour devenir très rapide, et supporter la spécification 1.2. Selon WhiteSource, les plus de 14 millions de téléchargements hebdomadaires et plus de 9 400 personnes dépendantes présentes sur la page npm de JS-YAML montrent à quel point le projet est populaire et largement utilisé.
3- fstream
Cette vulnérabilité nommée CVE-2019-13173 et de score élevé égal à 7,5 est présente dans les versions de fstream antérieures à la version 1.0.12. Selon l’avis de sécurité de npm, la fonction fstream.DirWriter() est vulnérable. L’extraction de tarballs contenant un lien dur vers un fichier qui existe déjà dans le système et un fichier qui correspond au lien dur écrasera le fichier du système avec le contenu du fichier extrait.
Fstream est un projet open source extrêmement populaire, qui compte actuellement plus de 4,7 millions de téléchargements hebdomadaires sur npm, selon whiteSource. Le projet offre un service de streaming FS avancé pour Node. La documentation du projet sur GitHub le décrit comme similaire aux flux FS, mais avec des statuts dessus, et des répertoires et des liens symboliques de support, ainsi que des fichiers normaux. Ils peuvent également être utilisés pour définir les statistiques d’un fichier, même si les utilisateurs ne modifient pas son contenu, ou pour créer un lien symbolique. Selon l’avis de sécurité de npm, la mise à niveau vers la version 1.0.12 ou ultérieure devrait résoudre le problème.
4- Python
Ce numéro, CVE-2019-16056 de score élevé 7,5, est présent dans les versions 2.7.16, 3.x à 3.5.7, 3.6.x à 3.6.9, et 3.7.x à 3.7.4. Ce problème a été trouvé dans des versions vulnérables du module de messagerie électronique complexe de Python. Les versions vulnérables peuvent analyser les adresses électroniques de manière incorrecte si elles contiennent plusieurs caractères @. Un attaquant pourrait exploiter ce problème pour tromper une application vulnérable et lui faire accepter une adresse électronique qui devrait être refusée.
5- Noyau Linux
Selon le rapport, 2019 n’était pas différent par rapport aux années pour le noyau Linux. De nombreuses vulnérabilités, dont CVE-2019-15292 de score critique 9,8, publiées et corrigées par l’équipe du noyau Linux ont été découvertes. Compte de la taille de la communauté et du volume de code, il est tout à fait naturel que la communauté s’investisse beaucoup pour trouver et résoudre les problèmes de ce projet open source, qui fait vivre une grande partie de notre industrie, selon le rapport.
Ce numéro est l’une des vulnérabilités les plus critiques publiées en août dernier, selon WhiteSource. L’avis de sécurité d’Ubuntu signalait que l’implémentation du pilote de périphérique USB EM28xx DVB d’Empia contenait une vulnérabilité “use-after-free” lors de la déconnexion du périphérique. L’avis expliquait ensuite, selon le rapport, qu’un pirate informatique pouvait exploiter cette vulnérabilité pour provoquer un déni de service (crash du système).
6- Apache Tomcat
Dans les versions du projet qui contiennent la vulnérabilité CVE-2019-0232 de score 8,1, lorsqu’il tourne sous Windows avec enableCmdLineArguments activé, le servlet Common Gateway Interface (CGI) dans Apache Tomcat est ouvert à l’exécution de code à distance en raison d’une faille dans la façon dont le JRE transmet les arguments de la ligne de commande à Windows.
Selon le Whitesource, ce problème ne peut être exploité que si la cible s’exécute sous Windows dans une configuration non par défaut, en conjonction avec des fichiers batch. Lorsque ces conditions se produisent, la vulnérabilité pourrait conduire à une vulnérabilité de validation d’entrée (CWE-20).
7- cURL
Deux nouvelles vulnérabilités de score critique 9,8 ont été découvertes dans cURL et 2019. Le numéro CVE-2019-5481, trouvé dans les versions allant de 7.52.0 à 7.65.3, est une vulnérabilité doublement libre dans le code FTP-kerberos, selon WhiteSource. Selon l’avis de sécurité de curl, « les versions vulnérables de libcurl peuvent se voir demander d’utiliser kerberos par FTP vers un serveur, comme défini avec l’option CURLOPT_KRBLEVEL ».
Tandis que la vulnérabilité CVE-2019-5481 qui concerne les versions allant 7.19.4 à 7.65.3 est une vulnérabilité de débordement de tampon de tas critique dans le gestionnaire de protocole TFTP de curl.
curl est utilisé dans pratiquement toutes les technologies qui nécessitent un transfert sur Internet. Cela s’applique aux voitures, aux routeurs, aux imprimantes, aux équipements audio, aux appareils mobiles, aux lecteurs multimédia et bien d’autres encore. Selon l’équipe WhiteSource, comme curl prend en charge des milliers d’applications logicielles qui touchent des milliards d’êtres humains chaque jour, il est préférable de vérifier dès que possible quelle version de curl vous utilisez et de la mettre à jour.
8- RubyGems
Cette vulnérabilité connue sous le nom de CVE-2019-8320 de score élevé 7,4 cible tous les fans de Ruby. Un problème de traversée de répertoire a été découvert dans les versions vulnérables de RubyGems – de 2.7.6 à 3.0.2 –, le service d’hébergement populaire de cette grande communauté Ruby. Le problème a été signalé à l’équipe de RubyGems par l’intermédiaire de l’opérateur de primes de bugs HackerOne, et RubyGems a publié le patch, d’après WhiteSource.
L’avis de sécurité de RubyGems, annoncé en mars dernier, précise que les versions vulnérables de RubyGems doivent supprimer la destination cible « avant de créer de nouveaux répertoires ou de toucher à des fichiers (qui incluent désormais un code de vérification du chemin d’accès pour les liens symboliques) » : « Si cette destination était cachée derrière un lien symbolique, une gemme malveillante pourrait supprimer des fichiers arbitraires sur la machine de l’utilisateur ». L’avis a averti les développeurs que, « étant donné la fréquence à laquelle la gemme est exécutée en tant que sudo, et la prévisibilité des chemins sur les systèmes modernes (/tmp, /usr, etc.), cela pourrait probablement conduire à la perte de données ou à un système inutilisable ».
9- Kubernetes
Nommée CVE-2019-11253, cette nouvelle vulnérabilité de score élevé 7,5 a été découverte dans les versions v1.0-1.12 et les versions antérieures à v1.13.12, v1.14.8, v1.15.5 et v1.16.2.
Selon Whitesource, un problème de validation des entrées dans les versions vulnérables du serveur API permet aux utilisateurs autorisés d’envoyer des charges utiles YAML ou JSON malveillantes. Cela entraîne une consommation excessive de CPU ou de mémoire par le serveur, qui peut alors se bloquer et devenir indisponible. Les conteneurs deviennent un élément clé de l’environnement DevSecOps, et comme leur popularité ne cesse de croître, les Kubernetes et autres projets open source attirent de plus en plus l’attention de la communauté de la sécurité, les aidant à découvrir, corriger et publier davantage de problèmes de sécurité.
10- Sudo
Selon WhiteSource, le 14 octobre 2019, l’équipe de Sudo a publié une alerte de sécurité concernant CVE-2019-14287, un nouveau problème de sécurité découvert par Joe Vennix d’Apple Information Security de score élevé 8,8, dans toutes les versions de Sudo antérieures à la version 1.8.28. La faille de sécurité pourrait permettre à un utilisateur malveillant d’exécuter des commandes arbitraires en tant qu’utilisateur root, même dans les cas où l’accès à ce dernier est interdit. Compte tenu de l’utilisation répandue de Sudo parmi les utilisateurs de Linux, il n’est pas surprenant qu’un grand nombre ait parlé de la faille de sécurité en peut de temps.
Mention spéciale : SQLite
Une mention spéciale a été attribuée à une vulnérabilité open source de score 9,8 dans SQLite, dans les versions de 3.6.0 à 3.27.2. Cette mention s’explique par le fait que l’équipe de SQLite a corrigé de nombreux problèmes de sécurité en 2019, y compris une faille de sécurité critique découverte dans les versions vulnérables de SQLite3.
SQLite est une bibliothèque en langage C qui met en œuvre un moteur de base de données SQL et se targue d’être le moteur de base de données le plus largement déployé dans le monde, selon le rapport. Comme c’est le cas pour de nombreux projets open source importants et populaires, le code fait l’objet d’une attention particulière en matière de sécurité, ce qui entraîne la publication fréquente de nouvelles vulnérabilités de sécurité et de leurs correctifs.
Selon l’équipe de WhiteSource, bien qu’elle se soit efforcée de réduire le nombre à dix plus une mention spéciale, des milliers de nouvelles vulnérabilités de sécurité de l’open source sont publiées chaque année, la majorité d’entre elles avec une correction. Cette grande variété des projets montre que tout projet open source, récent ou ancien, léger ou massif, peut avoir une version vulnérable qui nécessite une mise à jour. WhiteSource recommande de suivre les composants open source et de s’occuper des versions vulnérables dès que de nouvelles vulnérabilités sont publiées dans la communauté.