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