Proceedings of the 21st International Symposium on Principles and Practice of Declarative Programming 2019
DOI: 10.1145/3354166.3354175
|View full text |Cite
|
Sign up to set email alerts
|

Relational Symbolic Execution

Abstract: Symbolic execution is a classical program analysis technique used to show that programs satisfy or violate given specifications. In this work we generalize symbolic execution to support program analysis for relational specifications in the form of relational properties -these are properties about two runs of two programs on related inputs, or about two executions of a single program on related inputs. Relational properties are useful to formalize notions in security and privacy, and to reason about program opt… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1

Citation Types

0
34
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
5
3

Relationship

1
7

Authors

Journals

citations
Cited by 27 publications
(34 citation statements)
references
References 55 publications
0
34
0
Order By: Relevance
“…Relational symbolic execution. Relational symbolic execution [36] offers a more precise analysis than other techniques such as tainting. For instance, Pitchfork [5], which is based on tainting, reports a violation in Listing 7, line 2 because toLeak is tainted with secret data, whereas the program is secure because toLeak is set to 0 before being leaked.…”
Section: Related Workmentioning
confidence: 99%
See 1 more Smart Citation
“…Relational symbolic execution. Relational symbolic execution [36] offers a more precise analysis than other techniques such as tainting. For instance, Pitchfork [5], which is based on tainting, reports a violation in Listing 7, line 2 because toLeak is tainted with secret data, whereas the program is secure because toLeak is set to 0 before being leaked.…”
Section: Related Workmentioning
confidence: 99%
“…A symbolic array is a function (Array I V) mapping each index i ∈ I to a value v ∈ V with operations: Relational Symbolic Execution (RelSE). RelSE [16], [36] is a promising approach to extend SE for analyzing security properties of two execution traces such as SCT 1 . It symbolically executes two versions of a program in the same symbolic execution instance and maximizes sharing between them.…”
Section: Introductionmentioning
confidence: 99%
“…One extra benefit of this approach based on randomness alignment is that the transformed program can also be analyzed by standard symbolic executors. This appears to be an important property in light of recent work on detecting counterexamples for buggy programs [12,18,24,25]. Producing a transformed program that can be used for verification of correct programs and bug-finding for incorrect programs is arXiv:1903.12254v2 [cs.PL] 1 Jul 2019 one aspect that is of independent interest (however, we leave this application of transformed programs to future work).…”
Section: Introductionmentioning
confidence: 99%
“…Although recent work on relational symbolic execution [22] aims for simpler versions of this task (like detecting incorrect calculations of sensitivity), it is not yet powerful enough to reason about probabilistic computations. Hence, it cannot detect counterexamples in sophisticated algorithms like the sparse vector technique [19], which satisfies differential privacy but is notorious for having many incorrect published variations [12,28].…”
mentioning
confidence: 99%