Analyse statique de code dynamique
Résumé
JavaScript est un langage de scripts utilisé sur la majorité des sites web modernes. Plusieurs plateformes permettent à présent de faire interagir différents gadgets JavaScript afin de fournir un contenu plus riche. Le langage JavaScript donne beaucoup de flexibilité aux développeurs et est extrêmement dynamique. Ces atouts viennent au prix d'une sécurité difficile à garantir. JavaScript propose notamment une fonction eval qui permet d'évaluer dynamiquement du code JavaScript à partir d'une chaîne de caractères. Cette fonction en particulier rend l'analyse statique difficile. La littérature propose quelques tentatives d'analyses statique ou dynamique pour traiter, partiellement, cette fonction qui reste un challenge. Cette fonction est un défi car elle demande l'analyse d'un ensemble de programmes possibles, alors que les analyses standards ne s'intéressent qu'à un unique programme. Afin d'attaquer ce défi, nous proposons une sémantique de JavaScript exprimée à l'aide de systèmes de réécriture de termes qui permet de raisonner sur des ensembles de programmes et qui se prête bien à l'analyse statique des états accessibles par ces programmes. Nous montrons comment cette sémantique peut être utilisée en prouvant automatiquement qu'une propriété est vérifiée pour un ensemble donné de programmes.
Loading...