We present an automated approach for detecting and quantifying side channels in Java programs, which uses symbolic execution, string analysis and model counting to compute information leakage for a single run of a program. We further extend this approach to compute information leakage for multiple runs for a type of side channels called segmented oracles, where the attacker is able to explore each segment of a secret (for example each character of a password) independently. We present an efficient technique for segmented oracles that computes information leakage for multiple runs using only the path constraints generated from a single run symbolic execution. Our implementation uses the symbolic execution tool Symbolic PathFinder (SPF), SMT solver Z3, and two model counting constraint solvers LattE and ABC. Although LattE has been used before for analyzing numeric constraints, in this paper, we present an approach for using LattE for analyzing string constraints. We also extend the string constraint solver ABC for analysis of both numeric and string constraints, and we integrate ABC in SPF, enabling quantitative symbolic string analysis.
CITATION STYLE
Bang, L., Aydin, A., Phan, Q. S., PǍsǍreanu, C. S., & Bultan, T. (2016). String analysis for side channels with segmented oracles. In Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering (Vol. 13-18-November-2016, pp. 193–204). Association for Computing Machinery. https://doi.org/10.1145/2950290.2950362
Mendeley helps you to discover research relevant for your work.