Vérification formelle du binaire d'un système d'exploitation par exécution symbolique abstraite

par Olivier Nicole

Projet de thèse en Informatique

Sous la direction de Xavier Rival et de Matthieu Lemerre.

Thèses en préparation à Paris Sciences et Lettres , dans le cadre de Sciences Mathématiques de Paris Centre , en partenariat avec DIENS - Département d'informatique de l'École normale supérieure (laboratoire) et de Ecole normale supérieure (établissement de préparation de la thèse) depuis le 01-09-2018 .


  • Résumé

    La preuve formelle de système d'exploitation est un sujet important industriellement, parce que les OS sont la clé de voûte de la sûreté et de la sécurité de la plupart des systèmes. Mais aussi scientifiquement: le seul système entièrement prouvé, SEL4, a demandé une preuve manuelle titanesque, et était faite au niveau du code source. Notamment, cela demande énormément de compétences et de moyens humains, et doit être accompagné d'autres analyses / arguments (par exemple, sur la chaine de compilation) pour assurer la correction du code exécutable de l'OS. Nous proposons de repousser ces limites de la vérification formelle en concevant et développant un outil de preuve formelle automatique directement sur le binaire de l'OS. Mais la nature bas-niveau des executables rend leur analyse automatique encore plus difficile que celle de code source. Pour cela nous avons esquissé une nouvelle technique d'analyse, appellée exécution symbolique abstraite. Cette analyse combine le raisonnement précis au bit près de l'exécution symbolique, avec la capacité de raisonner sur les boucles et de grand nombre de chemins d'exécution, de l'interprétation abstraite. Le but du sujet est de concevoir, développer, raffiner et d'explorer les possibilités de cette nouvelle famille d'analyses, en l'experimentant sur un ou plusieurs cas industriels concrets de système d'exploitation.

  • Titre traduit

    Formal verification of an operating system binary executable using abstract symbolic execution


  • Résumé

    Formal proof of operating systems is an important industrial topic, as OSes are a key component of safety and security of most systems. But it also matters scientifically: SEL4, the only OS entirely proven, required a gigantic effort of manual proof, and these proofs were made at the source code level. Not only does it require a lot of skills and human resources, but it also necessitates other analyses / arguments (e.g. on the compilation chain) to ensure the correction of the OS executable code. We propose to go further in formal verification by designing and developing a formal proof tool directly on the binary code of the OS. But the low-level nature of executables makes their automatic analysis even harder than that of source code. To perform it, we sketched a new analysis technique, called abstract symbolic execution, that combines the bitwise-precise reasoning of symbolic execution with abstract interpretation's ability to reason on loops and a high number of execution paths. The goal of the PhD is to design, develop, refine and explore the possibilities of this new family of analyses, by experimenting it on one or more concrete, industrial use cases.