CyberGlossary

Anwendungssicherheit

Symbolische Ausführung

Auch bekannt als: Symbolische Analyse, Concolic Execution

Definition

Programmanalyse-Technik, die Code mit symbolischen Eingaben statt mit konkreten Werten ausführt und Pfadbedingungen aufbaut, die ein SMT-Solver löst, um Bugs zu finden.

Eine Symbolic-Execution-Engine behandelt Programmeingaben als mathematische Variablen und verzweigt an jeder Bedingung in mehrere Pfade. Jeder Pfad sammelt Constraints in Prädikatenlogik; ein SMT-Solver wie Z3 prüft die Erfüllbarkeit und liefert ggf. eine konkrete Eingabe, die das Programm den jeweiligen Pfad gehen lässt. Damit lässt sich die Erreichbarkeit von Bug-Bedingungen (Overflow, Division durch null, Taint-Erreichen) formal beweisen – allerdings unter Pfadexplosion und komplexen Constraints. Tools wie KLEE, angr und Manticore unterstützen Fuzzer, finden tief liegende Schwachstellen und verifizieren Sicherheitseigenschaften von Binaries.

Beispiele

  • KLEE auf einer C-Bibliothek ausführen, um Eingaben zu erzeugen, die jeden Branch erreichen und Asserts auslösen.
  • angr und AFL++ kombinieren, um Constraints zu lösen, die Fuzzing allein nicht knackt.

Verwandte Begriffe