L’outil ODGen a été présenté au Usenix Security Symposium de cette année
Des chercheurs de l’Université Johns Hopkins ont développé un outil d’analyse de code basé sur des graphiques qui peut détecter un large éventail de vulnérabilités dans les programmes JavaScript.
Appelé ODGen, l’outil a été présenté au Usenix Security Symposium de cette année et aborde certains des défis qui ont limité l’utilisation d’outils de sécurité basés sur des graphes dans l’analyse des programmes JavaScript.
Les chercheurs ont prouvé l’efficacité d’ODGen en l’appliquant à des milliers de bibliothèques Node.js, où il a découvert 180 vulnérabilités zero-day et reçu 70 CVE.
Méthodes basées sur les graphiques
Les scanners basés sur des graphes analysent les fichiers de code source pour créer une structure de graphe qui représente les différentes propriétés et branches d’exécution d’une application. Ce graphe peut ensuite être utilisé pour modéliser et trouver des vulnérabilités dans le code source.
Les approches basées sur des requêtes graphiques se sont avérées très efficaces pour détecter les vulnérabilités dans certains langages de programmation. Une technique en particulier, Code Property Graph (CPG), s’est avérée efficace pour sécuriser le code C/C++ et PHP.
CONSEILLÉ Vulnérabilité critique d’injection de commande découverte dans Bitbucket Server et Data Center
Inspirés par le succès des méthodes de graphes – notamment CPG – les chercheurs de l’université Johns Hopkins ont tenté de les appliquer à JavaScript. Bien qu’il existe différents outils pour trouver des vulnérabilités spécifiques dans le code JavaScript, les outils basés sur des graphiques promettent de fournir un cadre général pour détecter toutes sortes de vulnérabilités.
“JavaScript, en particulier Node.js, devient une communauté vitale avec des millions de packages ces jours-ci”, a déclaré Yinzhi Cao, co-auteur de l’article et professeur adjoint d’informatique à l’Université Johns Hopkins. La gorgée quotidienne.
“Dans le même temps, bon nombre de ces packages NPM sont moins maintenus et les vulnérabilités sont répandues dans l’écosystème NPM. C’est pourquoi nous avons décidé de réaliser l’étude pour faire de l’écosystème un environnement sûr.
Cependant, leurs premières découvertes ont montré que CPG n’est pas très efficace en JavaScript en raison de la structure dynamique du langage, ce qui rend beaucoup plus difficile l’analyse et l’analyse des relations d’objet et des branches de programme avant l’exécution.
“CPG ne modélise pas les relations d’objet détaillées, y compris (i) les chaînes de prototypes et (ii) les flux de données au niveau de l’objet. Par conséquent, il est difficile d’appliquer CPG pour détecter les vulnérabilités spécifiques à JavaScript, telles que la pollution du prototype et la falsification des propriétés internes. Et il est difficile de modéliser des flux de données au niveau objet à grain fin dans CPG », a déclaré Cao.
Graphique de dépendance d’objet
Dans leur article, les chercheurs proposent un Objective Dependence Graph (ODG) comme nouvelle méthode pour construire des graphes à partir de code JavaScript. ODG utilise certains des composants de CPG, tels que les arbres de syntaxe abstraite (AST), et ajoute des fonctionnalités spécifiques à JavaScript, notamment une dépendance de données fine entre les objets. En conséquence, les chercheurs ont créé ODGen, un outil de création et d’interrogation d’ODG.
“Notre ODGen proposé interprète de manière abstraite le code JavaScript et génère un soi-disant graphique de dépendance d’objet pour capturer ces fonctionnalités dynamiques, y compris les relations d’objet, afin qu’une approche basée sur une requête graphique puisse facilement obtenir ces informations et détecter les vulnérabilités”, a déclaré Cao.
En savoir plus sur les dernières nouvelles de la recherche infosec
Les chercheurs ont conçu ODGen pour détecter les vulnérabilités au niveau des applications et des packages. Ils ont testé l’outil sur 330 vulnérabilités documentées couvrant 16 catégories, y compris les scripts intersites (XSS), la falsification de requête côté serveur et côté client (SSRF/CSRF), l’injection SQL, la pollution de prototype et l’injection de commande.
L’outil a pu détecter 13 types de vulnérabilités avec une très grande précision, découvrant 302 des 330 bogues.
Ils ont étendu leur test en explorant 300 000 packages NPM et en appliquant ODGen avec des requêtes graphiques pour détecter les requêtes. ODGen a signalé près de 3 000 bogues de sécurité, dont les chercheurs ont vérifié 264 qui appartenaient à des bibliothèques avec plus de 1 000 téléchargements hebdomadaires. Ils ont pu confirmer et signaler 180 bogues de sécurité, dont beaucoup se trouvaient dans des bibliothèques largement utilisées dans les applications Web. Parmi les vulnérabilités découvertes, 70 se sont vu attribuer des CVE.
ODGen montre combien il reste encore à faire pour sécuriser l’écosystème JavaScript open source et comment l’adaptation des outils existants peut aider à développer des approches holistiques pour sécuriser les bibliothèques Node.js.
À l’avenir, a déclaré Cao, l’équipe pourrait étendre ODGen à d’autres langages de programmation utilisés dans les applications Web, notamment PHP et Java.
TU POURRAIS AIMER La Fondation Ethereum offre des paiements de primes de bugs de 1 million de dollars avec un multiplicateur de migration de preuve de participation