Le framework Node.js Fastify renforce la sécurité JSON grâce à un signalement de sécurité
10 mars 2020
0 minutes de lectureLe 9 avril, Francesco Soncina — également connu sous le nom de phra sur la plateforme de bug bounty HackerOne — a signalé une vulnérabilité d’injection de code JavaScript côté serveur au groupe de travail sur la sécurité de Node.js. Cette vulnérabilité, initialement identifiée dans Fastify, un framework d’applications web Node.js, a désigné ce dernier comme cible concernée par le problème de sécurité.
Matteo Collina, l’un des responsables du projet open source Fastify, a été invité à examiner rapidement le signalement et à analyser le code d’exploitation fourni comme preuve de concept. Cette attaque par injection de code JavaScript lançait un shell inversé intégré au schéma JSON lu par le framework.
Ce signalement de sécurité a finalement été jugé relativement inoffensif, car il n’affecte pas Fastify en lui-même. En effet, le schéma JSON est fourni par l’utilisateur en tant qu’élément de configuration de l’application et est donc considéré comme une entrée de confiance.
Il reste néanmoins intéressant, et essentiel, de souligner l’importance de tels signalements de sécurité, qu’ils aboutissent ou non à la confirmation d’une vulnérabilité CVE.
Dans ce cas précis, la discussion sur la sécurité qui a suivi le signalement s’articule autour d’un débat en cours entre le responsable de Fastify et le chercheur en sécurité à l’origine de la divulgation. La collaboration et la détermination de Collina et Soncina sont tout à fait remarquables. Ils s’attachent à identifier toutes les éventuelles failles dans la logique de rendu JSON afin de la rendre aussi résistante que possible aux problèmes de sécurité susceptibles de survenir.
Le plus intéressant, c’est que ce signalement de vulnérabilité a permis :
Un parsing JSON plus robuste et plus sûr dans
fast-json-stringify, mis en œuvre dans cette pull request sur GitHub, puis publié officiellement dans la version 1.15.3.L’ajout d’un avertissement de sécurité dans la documentation, qui expose clairement les risques et les points de vigilance afin que les utilisateurs de la bibliothèque sachent comment traiter les données. Il a été introduit dans cette pull request.
Alors que je terminais ce signalement et préparais sa divulgation, j’ai compris qu’il fallait mieux reconnaître la valeur des signalements de sécurité. Même si le problème signalé n’avait pas d’impact direct sur Fastify ni sur fast-json-stringify,il a suscité une discussion importante. Surtout, il a sensibilisé les responsables de projets aux enjeux de sécurité liés à leur code.
Pour conclure
Si vous êtes chercheur en sécurité ou responsable d’un module, je vous laisse sur cette note tirée du signalement original. Une fois encore, merci pour tout le travail et les efforts que vous déployez pour contribuer à la sécurité de l’écosystème Node.js, JavaScript et open source.




