Symbolische Ausführung
Was ist Symbolische Ausführung?
Symbolische AusführungProgrammanalyse-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
- 01
KLEE auf einer C-Bibliothek ausführen, um Eingaben zu erzeugen, die jeden Branch erreichen und Asserts auslösen.
- 02
angr und AFL++ kombinieren, um Constraints zu lösen, die Fuzzing allein nicht knackt.
● Häufige Fragen
Was ist Symbolische Ausführung?
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. Es gehört zur Kategorie Anwendungssicherheit der Cybersicherheit.
Was bedeutet Symbolische Ausführung?
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.
Wie schützt man sich gegen Symbolische Ausführung?
Schutzmaßnahmen gegen Symbolische Ausführung kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Symbolische Ausführung?
Übliche alternative Bezeichnungen: Symbolische Analyse, Concolic Execution.