Projet ANR-12-INSE-0002 – BINSEC : Analyse de code binaire pour la sécurité
Programme : Ingénierie Numérique & Sécurité (INS) 2012
Année de financement : 2012
Coordinateur du projet : Monsieur BARDIN Sebastien (CEA SACLAY)
Partenaires : Commissariat à l'énergie atomique et aux énergies alternatives; Commissariat à l'énergie atomique et aux énergies alternatives; EADS IW EADS France Innovation Works Department; Inria Centre Rennes - Bretagne Atlantique; Laboratoire Lorrain de Recherche en Informatique et ses Applications; Laboratoire Verimag; VUPEN SECURITY
Montant : 925971.0 euros
Date de début : 2013
Durée : 48 mois
Résumé : La sécurité logicielle est une préoccupation majeure des sociétés modernes. En effet, un système vulnérable peut avoir des incidences 
sur les personnes, les entreprises et même les états. Certaines analyses de sécurité logicielle doivent être 
réalisées à partir du code exécutable du programme plutôt que de son code source. C'est le cas par exemple de la détection de 
vulnérabilités et de la détection de codes malicieux (malware). Ce type d'analyse bas niveau n'est pris en compte 
que de manière peu satisfaisante par les outils commerciaux actuels. Par exemple, la détection de vulnérabilité tient beaucoup 
 à l'intuition de l'expert sécurité, qui ne peut que se baser sur des outils aussi basiques qu'un débogueur ou un désassembleur. 
De même, les techniques actuelles de reconnaissance de virus (basées sur des signatures syntaxiques) sont très simples à contourner, 
et demandent donc des bases de signatures de plus en plus volumineuses. 
Le but général de BINSEC est de combler en partie le fossé actuel entre d'une part de très récents progrès en analyse formelle de code exécutable, 
et d'autre part la pratique effective de l'analyse de sécurité au niveau binaire. Nous proposons de développer des concepts, modèles et algorithmes  
pour assister (voir automatiser) les analyses de sécurité bas niveau. De plus, une partie des résultats sera implantée dans des prototypes, et nous mènerons des expérimentations contre les techniques standards sur des benchmarks représentatifs. Nous visons deux domaines principaux: la détection de vulnérabilités  et la détection de malware. Deux domaines liés seront aussi explorés : la désobfuscation et l'analyse de crash. 
Les défis scientifiques et techniques principaux de BINSEC sont d'étendre les (rares) techniques d'analyse formelle de code exécutable 
dans trois directions nécessaires aux analyses de sécurité: à  des programmes plus réalistes (typiquement issus de source C++), 
à des programmes obfusqués ("camouflés") ou auto-modifiant, et enfin aux besoins spécifiques des domaines sécuritaires  ciblés.   
Concernant ces applications, nous voulons améliorer les techniques de détection de vulnérabilité en comprenant comment trouver des failles exploitables plutôt que de simples bugs, nous voulons concevoir des analyses capables de retrouver en partie le comportement de programmes (malware) obfusqués, et finalement nous voulons définir des techniques de détection de virus robustes. 
Bien qu'a priori différents, nous pensons que ces différents domaines font face à des difficultés communes, plus fondamentales (par exemple, la reconstruction du graphe de flot d'un exécutable). Le projet vise à étudier ces problèmes communs, et à partir de ces résultats développer des analyses dédiées. Nous développerons une plate-forme libre pour faciliter le développement d'analyseurs niveau binaire et leur coopération. 
L'analyse de code exécutable dans un cadre sécuritaire est un domaine récent et très prometteur de recherche, nécessitant 
aussi bien des travaux théoriques que des développements logiciels et des évaluations expérimentales poussées. 
Le consortium s'appuie sur des résultats antérieurs solides (dont des prototypes) et complémentaires (analyses statiques et dynamiques, expérience en malware et vulnérabilités) pour mener à bien ses objectifs ambitieux. Les retombées potentielles du projet BINSEC se situent à trois niveaux :  à court terme fournir  des outils plus efficaces pour l'industrie de la sécurité (compétitivité), à plus long terme fournir une brique de base indispensable à une meilleure sécurisation des infrastructures numériques  pour les citoyens (e-commerce, e-vote) et améliorer les capacités de cyberdéfense des états.