Optimizing Property-Preserving Compilation

Afin d’assurer des garanties sécuritaires des applications binaires, des analyses et vérifications doivent avoir lieu au niveau binaire. Ces analyses et vérifications nécessitent des propriétés de sécurité ou fonctionnelles des applications. Il est donc nécessaire de transporter et transposer ces pr...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: Vu, Son Tuan
Format: Dissertation
Sprache:eng
Schlagworte:
Online-Zugang:Volltext bestellen
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Beschreibung
Zusammenfassung:Afin d’assurer des garanties sécuritaires des applications binaires, des analyses et vérifications doivent avoir lieu au niveau binaire. Ces analyses et vérifications nécessitent des propriétés de sécurité ou fonctionnelles des applications. Il est donc nécessaire de transporter et transposer ces propriétés portant sur le code source au niveau du code compilé. La préservation de propriétés tout au long du flot de compilation est un problème difficile à cause des optimisations qui réorganisent les calculs ou éliminent les variables inutiles. Cette thèse présente des approches permettant de propager et préserver des propriétés tout au long d’un flot de compilation optimisant sans modifier les passes d’optimisation du compilateur. Dans l’implémentation dans LLVM, les propriétés sont émises dans le code binaire sous forme d’information de débug DWARF permettant leur utilisation par des outils d’analyse binaire. Les mécanismes proposés peuvent être utilisés pour préserver des protections insérées dans le code source tout en activant les optimisations du compilateur. In order to ensure security guarantees of binary applications, program analyses and verifications have to be performed at the binary level. These analyses and verifications require various security or functional properties about the program being analyzed. It is thus necessary to propagate these properties,usually expressed in the source level, down to binary code. However, preserving these properties throughout the optimizing compilation flow is hard due to code optimizations which reorder computations or eliminate unused variables. This thesis presents different approaches to preserve and propagate program properties throughout the optimizing compilation flow with minimal changes to individual transformation passes. In the implementations in LLVM, properties are emitted into executable binaries as DWARF debug information, which can next beused by binary analysis tools. Our mechanisms can be applied to address the problem of preserving security protections inserted at the source level, compiled with optimizations enabled.