Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/3155562.3155638guideproceedingsArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
Article
Free access

Rethinking pointer reasoning in symbolic execution

Published: 30 October 2017 Publication History
  • Get Citation Alerts
  • Abstract

    Symbolic execution is a popular program analysis technique that allows seeking for bugs by reasoning over multiple alternative execution states at once. As the number of states to explore may grow exponentially, a symbolic executor may quickly run out of space. For instance, a memory access to a symbolic address may potentially reference the entire address space, leading to a combinatorial explosion of the possible resulting execution states. To cope with this issue, state-of-the-art executors concretize symbolic addresses that span memory intervals larger than some threshold. Unfortunately, this could result in missing interesting execution states, e.g., where a bug arises. In this paper we introduce MEMSIGHT, a new approach to symbolic memory that reduces the need for concretization, hence offering the opportunity for broader state explorations and more precise pointer reasoning. Rather than mapping address instances to data as previous tools do, our technique maps symbolic address expressions to data, maintaining the possible alternative states resulting from the memory referenced by a symbolic address in a compact, implicit form. A preliminary experimental investigation on prominent benchmarks from the DARPA Cyber Grand Challenge shows that MEMSIGHT enables the exploration of states unreachable by previous techniques.

    References

    [1]
    R. Baldoni, E. Coppa, D. C. D’Elia, C. Demetrescu, and I. Finocchi, “A survey of symbolic execution techniques,” CoRR, vol. abs/1610.00502. {Online}. Available: http://arxiv.org/abs/1610.00502
    [2]
    B. Elkarablieh, P. Godefroid, and M. Y. Levin, “Precise pointer reasoning for dynamic test generation,” in Proc. of ISSTA 2009. ACM, 2009. {Online}. Available:
    [3]
    S. K. Cha, T. Avgerinos, A. Rebert, and D. Brumley, “Unleashing Mayhem on binary code,” in Proc. of SP 2012.
    [4]
    IEEE Computer Society, 2012. {Online}. Available:
    [5]
    T. Avgerinos, A. Rebert, S. K. Cha, and D. Brumley, “Enhancing symbolic execution with veritesting,” in Proc. of ICSE 2014. ACM, 2014. {Online}. Available:
    [6]
    Y. Shoshitaishvili, R. Wang, C. Salls, N. Stephens, M. Polino, A. Dutcher, J. Grosen, S. Feng, C. Hauser, C. Krügel, and G. Vigna, “SOK: (state of) the art of war: Offensive techniques in binary analysis,” in Proc. of SP 2016. IEEE Computer Society, 2016. {Online}. Available:
    [7]
    C. Cadar, D. Dunbar, and D. Engler, “KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs,” in Proc. of OSDI 2008. USENIX Association, 2008. {Online}. Available: http://dl.acm.org/citation.cfm?id=1855741.1855756
    [8]
    N. Stephens, J. Grosen, C. Salls, A. Dutcher, R. Wang, J. Corbetta, Y. Shoshitaishvili, C. Kruegel, and G. Vigna, “Driller: Augmenting fuzzing through selective symbolic execution,” in NDSS 2016, 2016.
    [9]
    C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. R. Engler, “EXE: Automatically generating inputs of death,” in CCS 2006. ACM, 2006. {Online}. Available:
    [10]
    E. Duesterwald, Ed., Analyzing Memory Accesses in x86 Executables, ser. CC 2004. Springer Berlin Heidelberg, 2004. {Online}. Available: 2
    [11]
    M. Trt´ık and J. Strejˇcek, Symbolic Memory with Pointers, ser. ATVA 2014. Cham: Springer International Publishing, 2014, pp. 380–395. {Online}. Available: 27
    [12]
    R. David, S. Bardin, J. Feist, L. Mounier, M.-L. Potet, T. D. Ta, and J.-Y. Marion, “Specification of concretization and symbolization policies in symbolic execution,” in Proc. of ISSTA 2016. ACM, 2016. {Online}. Available:
    [13]
    C. S. Păsăreanu, N. Rungta, and W. Visser, “Symbolic execution with mixed concrete-symbolic solving,” in Proc. of ISSTA 2011. ACM, 2011. {Online}. Available: Introduction Technique Base Version Memory Loading and Storing State Merging Refinements Address Range Selection Memory Cleanup Symbolic Uninitialized Memory Multi-byte Load and Store Discussion Implementation angr MemSight Prototype Evaluation Experimental Setup and Methodology Case Study Experiments Related Work Conclusion References

    Cited By

    View all
    • (2021)Fuzzing Symbolic ExpressionsProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00071(711-722)Online publication date: 22-May-2021
    • (2020)Relocatable addressing model for symbolic executionProceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3395363.3397363(51-62)Online publication date: 18-Jul-2020
    • (2020)A Shape-inference-based Approach to Enhance Constraint Independence OptimizationProceedings of the 2020 4th International Conference on Cryptography, Security and Privacy10.1145/3377644.3377665(141-145)Online publication date: 10-Jan-2020
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    ASE '17: Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering
    October 2017
    1033 pages
    ISBN:9781538626849

    Sponsors

    Publisher

    IEEE Press

    Publication History

    Published: 30 October 2017

    Author Tags

    1. cybersecurity
    2. fully symbolic memory
    3. program analysis
    4. symbolic execution

    Qualifiers

    • Article

    Acceptance Rates

    Overall Acceptance Rate 82 of 337 submissions, 24%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)72
    • Downloads (Last 6 weeks)13
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Fuzzing Symbolic ExpressionsProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00071(711-722)Online publication date: 22-May-2021
    • (2020)Relocatable addressing model for symbolic executionProceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3395363.3397363(51-62)Online publication date: 18-Jul-2020
    • (2020)A Shape-inference-based Approach to Enhance Constraint Independence OptimizationProceedings of the 2020 4th International Conference on Cryptography, Security and Privacy10.1145/3377644.3377665(141-145)Online publication date: 10-Jan-2020
    • (2019)A segmented memory model for symbolic executionProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338936(774-784)Online publication date: 12-Aug-2019
    • (2019)Static Analysis of ROP CodeProceedings of the 12th European Workshop on Systems Security10.1145/3301417.3312494(1-6)Online publication date: 25-Mar-2019
    • (2018)A Survey of Symbolic Execution TechniquesACM Computing Surveys10.1145/318265751:3(1-39)Online publication date: 23-May-2018

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media