Aller au contenu
uencoder

Symbolic Execution

L'exécution symbolique exécute un programme avec des variables symboliques au lieu de valeurs concrètes, analyse tous les chemins réalisables et génère automatiquement des entrées qui déclenchent chacun.

Objectif

Analyser précisément le comportement d'un programme en générant automatiquement des tests à haute couverture et des entrées déclenchant des vulnérabilités.

Mécanisme

Les variables sont représentées symboliquement ; les conditions de chemin s'accumulent en contraintes. Aux branchements, elle fork les chemins et vérifie la faisabilité avec un solveur SMT. L'explosion de chemins est le principal goulot d'étranglement. KLEE et angr exécutent symboliquement du C et des binaires.

Cas d’usage

  • Génération de tests
  • Analyse de vulnérabilités
  • Couverture de chemins

References