Symbolic Execution Flashcards

1
Q

What are the steps of symbolic execution?

A

Replacing inputs with symbolic values
Executing along a path using the symbolic values to build a formula over the input symbols
Solve for the symbolic symbols to find inputs that yield the path

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

______ symbolic execution works over traces. In this one, it’s driven by one program execution

A

dynamic

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

CBMC is an example of _________ symbolic execution

A

Static

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Using symbolic execution can also determine satisfiable inputs in one program but not the other. This represents a _______

A

regression

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What do SMT solvers do? What are some examples?

A

They solve constraints.
SAT
SMTLIB2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are 2 ways to traverse the execution tree? Describe them

A

Concolic (dynamic symbolic): Given a first input, construct the symbolic formula while execution. It’s essentially depth first search. After finishing a branch, negate the very last conjunct to take the other path.

Execution Generated Testing: Set some inputs to be symbolic, then execute forward. At the next split, solve the formula for each branch to create a frontier of explored paths

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are some applications for symbolic execution?

A

Creating test suites via path and branch coverage
Targeted tests: ask for inputs that drive execution through areas of interest
Automated exploit discovery: Extension of the above point. You could encode the constraints of an error in the program path. You could inject shell code into your initial inputs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are some challenges with symbolic execution?

A
Path explosion (loops, many ifs)
Challenging constraints (we cannot solve all constraints, ex password hashes)
Constraint representation on domain knowledge (how can we represent memory?)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

How can we alleviate the issues of path explosion?

A

Search heuristics

Memoization

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How can we alleviate the issues of challenging constraints?

A

Observe the actual values of variables in runs we have and reuse these values

How well did you know this?
1
Not at all
2
3
4
5
Perfectly