Voici un article intéressant de la récente conférence USENIX 2022 : Mining Node.js Vulnérabilités via Object Dependence Graph et Query.
Nous allons tricher un peu ici en ne creusant pas et en n’expliquant pas la recherche de base présentée par les auteurs de l’article (certaines mathématiques et la connaissance de la notation sémantique opérationnelle sont souhaitables lors de sa lecture), qui est une méthode pour le statique analyse du code source qu’ils appellent ODGEN, abréviation de Générateur de graphique de dépendance d’objet.
Au lieu de cela, nous voulons nous concentrer sur les implications de ce qu’ils ont pu découvrir dans l’écosystème JavaScript Node Package Manager (NPM), en grande partie automatiquement, en utilisant leurs outils ODGEN dans la vie réelle.
Un fait important ici est, comme nous l’avons mentionné ci-dessus, que leurs outils sont destinés à ce qu’on appelle analyse statique.
C’est là que vous visez à examiner le code source pour les erreurs de codage probables (ou réelles) et les failles de sécurité sans l’exécuter du tout.
Le tester en l’exécutant est un processus beaucoup plus long qui prend généralement plus de temps à mettre en place et plus longtemps à faire.
Comme vous pouvez l’imaginer, cependant, ce qu’on appelle analyse dynamique – construire réellement le logiciel afin que vous puissiez l’exécuter et l’exposer à des données réelles de manière contrôlée – donne généralement des résultats beaucoup plus approfondis, et est beaucoup plus susceptible d’exposer des bogues mystérieux et dangereux que de simplement “le regarder attentivement et deviner comment cela fonctionne “.
Mais l’analyse dynamique prend non seulement du temps, mais est également difficile à bien faire.
Par cela, nous voulons vraiment dire que les tests logiciels dynamiques sont très facile à mal faire, même si vous passez à la tâche, car il est facile de se retrouver avec un nombre impressionnant de tests qui ne sont pourtant pas aussi variés que vous le pensiez, et que votre logiciel est presque certain de réussir, quoi qu’il arrive. Les tests de logiciels dynamiques finissent parfois par ressembler à un enseignant qui pose les mêmes questions d’examen année après année, de sorte que les étudiants qui se sont entièrement concentrés sur la pratique des «dissertations antérieures» finissent par faire aussi bien que les étudiants qui maîtrisent véritablement le sujet.