Increasing the performance of symbolic execution by compiling symbolic handling into binaries - TEL - Thèses en ligne Access content directly
Theses Year : 2020

Increasing the performance of symbolic execution by compiling symbolic handling into binaries

Exécution symbolique haute performance par la compilation du moteur symbolique dans le programme testé

Sebastian Poeplau
  • Function : Author
  • PersonId : 1161986
  • IdRef : 264067495

Abstract

Symbolic execution has the potential to make software more secure by significantly improving automated vulnerability search. In this thesis, we propose a general technique that allows for more efficient implementations of the execution component in symbolic executors. We first examine the state of the art. From the results of this comparison, we derive the idea of accelerating execution by embedding symbolic handling into compiled programs instead of symbolically interpreting a higher-level representation of the program under test. Using this approach, we develop a compiler-based symbolic executor and show that it indeed achieves high execution speed in comparison with state-of-the-art systems. Since the compiler is limited to scenarios where source code of the program under test is available, we then design and implement a complementary solution for symbolic execution of binaries; it uses the same basic idea of embedding symbolic execution into fast machine code but combines the approach with binary translation to handle the challenges of binary-only analysis. We conclude by discussing research directions that could lead to even more practical systems and ultimately enable the use of symbolic execution in mainstream software testing.
L'exécution symbolique a le potentiel de rendre les logiciels plus sûrs en améliorant considérablement la recherche automatisée des vulnérabilités. Nous proposons une technique générale qui permet des implémentations plus efficaces de la composante d'exécution dans les exécuteurs symboliques. Nous examinons d'abord l'état de l'art. A partir des résultats de cette comparaison, nous dérivons l'idée d'accélérer l'exécution en intégrant la manipulation symbolique dans les programmes compilés au lieu d'interpréter symboliquement une représentation de plus haut niveau du programme testé. En utilisant cette approche, nous développons un exécuteur symbolique basé sur le compilateur et nous montrons qu'il atteint effectivement une vitesse d'exécution élevée par rapport aux systèmes actuellement les plus performants. Comme le compilateur est limité aux scénarios où le code source du programme testé est disponible, nous concevons et mettons en œuvre une solution complémentaire pour l'exécution symbolique des binaires ; elle utilise la même idée de base d'intégration de l'exécution symbolique dans un code machine rapide, mais combine l'approche avec la traduction binaire pour relever les défis de l'analyse binaire seule. Nous concluons en discutant des directions de recherche qui pourraient conduire à des systèmes encore plus pratiques.
Fichier principal
Vignette du fichier
POEPLAU_Sebastian_2020.pdf (2.93 Mo) Télécharger le fichier
Origin : Version validated by the jury (STAR)

Dates and versions

tel-03771331 , version 1 (07-09-2022)

Identifiers

  • HAL Id : tel-03771331 , version 1

Cite

Sebastian Poeplau. Increasing the performance of symbolic execution by compiling symbolic handling into binaries. Computer Arithmetic. Sorbonne Université, 2020. English. ⟨NNT : 2020SORUS451⟩. ⟨tel-03771331⟩
51 View
223 Download

Share

Gmail Facebook X LinkedIn More