Projet ANR-14-CE28-0008 – AJACS : Applications JavaScript: Analyses Certifiées et Sécurité
Programme : Sécurité de la société numérique (DS0706) 2014
Année de financement : 2014
Coordinateur du projet : Monsieur Alan Schmitt (Centre de recherche Inria Rennes - Bretagne Atlantique)
Partenaires : Laboratoire public; Imperial College Department of Computing, Imperial College; Certified Programs, Certified Tools, Certified Floating-Point Computations; Laboratoire public; Laboratoire public
Montant : 573699.0 euros
Date de début : 2014
Durée : 54 mois
Résumé : Nous utilisons de plus en plus des applications web, que ce soit dans notre vie personnelle, professionnelle ou sociale. Nous les utilisons pour communiquer, travailler sur des documents partagés, gérer nos comptes bancaires ou interagir avec des administrations. Dans tous ces cas, nous leur confions des données personnelles. De plus, ces applications sont intrinsèquement distribuées: nous les utilisons au travers d'un navigateur web en téléchargeant et exécutant des scripts qui communiquent avec des services web. Pour des raisons de performances, une part de plus en plus grande de ces applications est exécutée directement par le navigateur. Celui-ci est ainsi devenu une machine virtuelle pour applications web.
La conjonction de ces aspects, c'est à dire l'utilisation massive d'applications manipulant des données personnelles et s'exécutant dans un même environnement, est le point de départ de notre programme de recherche: jusqu'à quel point pouvons-nous faire confiance à ces applications ?
La réponse apportée en pratique est une compartimentation par le navigateur selon la "same origin policy" (SOP): un script envoyé par un site peut seulement accéder à des informations associées à ce site, que ce soit ses données, par exemple des cookies, ou d'autres scripts. Malheureusement, non seulement l'implémentation cohérente de cette compartimentation est particulièrement complexe, elle va également à l'encontre de la construction de "mashups": l'intégration de plusieurs applications web pour fournir un nouveau service, comme l'affichage de critiques de restaurants provenant d'un site sur une carte interactive fournie par un autre site. Une deuxième faiblesse de la SOP est qu'elle fait implicitement confiance au site web visité: l'origine des scripts atteste leur innocuité. Cependant, il arrive parfois qu'un site utilise de tels scripts afin de suivre ses utilisateurs sans les en informer. Un site peut également avoir des failles qui, lorsque exploitées, conduisent à l'injection de scripts illégitimes comme s'ils provenaient du site initial. Cette attaque, connue sous le nom de "cross-site scripting", est une des vulnérabilités les plus communes des applications web, et permet à un attaquant de modifier impunément une page web ou d'accéder à des informations sensibles comme des identifiants de session.
Pour dépasser ces limitations, nous proposons dans le cadre du projet AJACS de certifier les applications web directement du côté de l'utilisateur, un environnement bien plus contrôlable permettant ainsi des analyses plus précises. L'approche que nous préconisons est la suivante: définition formelle de la sémantique de JavaScript, le langage le plus utilisé pour développer la partie client des applications web; développement d'analyses certifiées, en particulier des analyses de flots d'informations; définition de sous-langages pour dériver des analyses plus précises et compilation certifiée vers ces sous-langages; enfin développement de mécanismes garantissant la sécurité et la confidentialité de réelles applications web.