Symbolic Execution
Die symbolische Ausführung führt ein Programm mit symbolischen statt konkreten Werten aus, analysiert alle realisierbaren Pfade und erzeugt automatisch Eingaben, die jeden Pfad auslösen.
Zweck
Das Programmverhalten präzise analysieren und automatisch Testfälle mit hoher Abdeckung sowie sicherheitsrelevante Eingaben generieren.
Mechanismus
Variablen werden symbolisch dargestellt; Pfadbedingungen sammeln sich als Constraints. An Verzweigungen werden Pfade geforkt und mit einem SMT-Solver auf Zulässigkeit geprüft. Die Pfadexplosion ist der Hauptflaschenhals. KLEE und angr führen symbolische Ausführung von C/Binaries durch.
Anwendungsfälle
- Testgenerierung
- Schwachstellenanalyse
- Pfadabdeckung