CyberGlossary

Sécurité applicative

Exécution symbolique

Aussi appelé: Analyse symbolique, Exécution concolic

Définition

Technique d'analyse de programme qui exécute le code avec des entrées symboliques au lieu de valeurs concrètes, construisant des contraintes de chemin résolues par un solveur SMT.

Un moteur d'exécution symbolique traite les entrées comme des variables mathématiques et explore les chemins en se branchant sur chaque condition. Chaque chemin accumule des contraintes en logique du premier ordre ; un solveur SMT comme Z3 vérifie leur satisfiabilité et, le cas échéant, produit une entrée concrète qui mène le programme jusque-là. Cela permet de prouver l'atteignabilité de conditions de bug (overflow, division par zéro, taint atteignant un sink), mais souffre d'explosion combinatoire et de complexité des contraintes. Des outils comme KLEE, angr et Manticore assistent les fuzzers, trouvent des vulnérabilités profondes et vérifient des propriétés de sécurité sur des binaires.

Exemples

  • Utiliser KLEE sur une bibliothèque C pour générer des entrées atteignant chaque branche et déclenchant des asserts.
  • Combiner angr et AFL++ pour résoudre des contraintes que le fuzzing seul ne franchit pas.

Termes liés