Thèse soutenue

Contribution à l'analyse de flot multi-variante : application à JavaScript
FR  |  
EN
Accès à la thèse
Auteur / Autrice : Anthony Ferrand
Direction : Roland Ducournau
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 08/09/2020
Etablissement(s) : Montpellier
Ecole(s) doctorale(s) : École Doctorale Information, Structures, Systèmes
Partenaire(s) de recherche : Laboratoire : Laboratoire d'informatique, de robotique et de micro-électronique (Montpellier ; 1992-....)
Jury : Président / Présidente : Anne Laurent
Examinateurs / Examinatrices : Roland Ducournau, Anne Laurent, Thomas Jensen, Jean-Claude Royer, Olivier Zendra, Marianne Huchard
Rapporteurs / Rapporteuses : Thomas Jensen, Jean-Claude Royer

Mots clés

FR  |  
EN

Résumé

FR  |  
EN

La révolution JavaScript est en marche. Originellement conçu en tant que langage de script pour les navigateurs web, ce langage s'est imposé maintenant comme un langage de programmation universel, malgré des spécifications assez peu orthodoxes. JavaScript est à la fois un langage fonctionnel sur un modèle assez proche de Scheme mais aussi un langage à objets sans classes à base de prototypes. Cette thèse poursuit le travail effectué par Rabah Laouadi dans sa thèse sur le développement d'algorithmes d'analyse de flot multi-variante à des fins de sécurité cite{laouadi2016analyse}, en l'appliquant à JavaScript. Alors que la cible des travaux précédents était Java, un langage à classes et à typage statique, l'application à JavaScript a imposé une rétro-ingénierie pour abstraire les modèles conçus pour Java et les étendre à JavaScript en réutilisant au mieux l'essentiel de ce qui avait été fait. Les points clefs du travail ont été : la méta-modélisation du langage, la modélisation des fermetures au travers du système de versions de l'analyse multi-variante et le traitement des accès aux champs calculés des objets sans classes. Cette approche a permis de mettre un point un analyseur statique capable d'assurer une analyse de flot commune à deux paradigmes différents. De plus, l'analyse permet d'analyser le flot de données de deux programmes communiquant écrit dans des langages différents. Les expérimentations effectuées montrent que l'analyse obtenue à la même finesse et efficacité que celle de Java tant que JavaScript est utilisé de façon raisonnable. Par ailleurs, une comparaison avec des logiciels basés sur de l'interprétations abstraites sur des programmes jouets ont permis de mettre en évidence les points forts et faibles de l'approche de l'analyse produit par notre analyseur.