skip to main content
10.1145/2535838.2535888acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article
Open Access

Sound input filter generation for integer overflow errors

Authors Info & Claims
Published:08 January 2014Publication History

ABSTRACT

We present a system, SIFT, for generating input filters that nullify integer overflow errors associated with critical program sites such as memory allocation or block copy sites. SIFT uses a static pro- gram analysis to generate filters that discard inputs that may trigger integer overflow errors in the computations of the sizes of allocated memory blocks or the number of copied bytes in block copy operations. Unlike all previous techniques of which we are aware, SIFT is sound -- if an input passes the filter, it will not trigger an integer overflow error at any analyzed site. Our results show that SIFT successfully analyzes (and therefore generates sound input filters for) 56 out of 58 memory allocation and block memory copy sites in analyzed input processing modules from five applications (VLC, Dillo, Swfdec, Swftools, and GIMP). These nullified errors include six known integer overflow vulnerabilities. Our results also show that applying these filters to 62895 real-world inputs produces no false positives. The analysis and filter generation times are all less than a second.

Skip Supplemental Material Section

Supplemental Material

d2_right_t9.mp4

mp4

312 MB

References

  1. Hachoir. http://bitbucket.org/haypo/hachoir/wiki/Home..Google ScholarGoogle Scholar
  2. LLVM Basic Alias Analysis Pass. http://llvm.org/docs/AliasAnalysis.html#the-basicaa-pass...Google ScholarGoogle Scholar
  3. The LLVM compiler infrastructure. http://www.llvm.org/.Google ScholarGoogle Scholar
  4. D. Brumley, T. Chiueh, R. Johnson, H. Lin, and D. Song. Rich: Automatically protecting against integer-based vulnerabilities. Department of Electrical and Computing Engineering, page 28, 2007.Google ScholarGoogle Scholar
  5. D. Brumley, H. Wang, S. Jha, and D. Song. Creating vulnerability signatures using weakest preconditions. In Proceedings of the 20th IEEE Computer Security Foundations Symposium, CSF '07', pages 311--325, Washington, DC, USA, 2007. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cadar, D. Dunbar, and D. Engler. Klee: unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th USENIX conference on Operating systems design and implementation, OSDI'08, pages 209--224, Berkeley, CA, USA, 2008. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. E. Ceesay, J. Zhou, M. Gertz, K. Levitt, and M. Bishop. Using type qualifiers to analyze untrusted integers and detecting security flaws in c programs. Detection of Intrusions and Malware & Vulnerability Assessment, pages 1--16, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Chandra, S. J. Fink, and M. Sridharan. Snugglebug: a powerful approach to weakest preconditions. In Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, PLDI '09, pages 363--374, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. Chinchani, A. Iyer, B. Jayaraman, and S. Upadhyaya. Archerr: Runtime environment driven program safety. Computer Security--ESORICS 2004, pages 385--406, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  10. M. Costa, M. Castro, L. Zhou, L. Zhang, and M. Peinado. Bouncer: securing software by blocking bad input. In Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles, SOSP '07. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Costa, J. Crowcroft, M. Castro, A. Rowstron, L. Zhou, L. Zhang, and P. Barham. Vigilante: end-to-end containment of internet worms. In Proceedings of the twentieth ACM symposium on Operating systems principles, SOSP '05. ACM, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. W. Cui, M. Peinado, and H. J.Wang. Shieldgen: Automatic data patch generation for unknown vulnerabilities with informed probing. In Proceedings of 2007 IEEE Symposium on Security and Privacy. IEEE Computer Society, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. W. Dietz, P. Li, J. Regehr, and V. Adve. Understanding integer overflow in c/c++. In Proceedings of the 2012 International Conference on Software Engineering, pages 760--770. IEEE Press, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. C. Flanagan and J. B. Saxe. Avoiding exponential explosion: generating compact verification conditions. In Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL '01', pages 193--205, New York, NY, USA, 2001. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. V. Ganesh, T. Leek, and M. Rinard. Taint-based directed whitebox fuzzing. In ICSE '09: Proceedings of the 31st International Conference on Software Engineering. IEEE Computer Society, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. D. Gao, M. K. Reiter, and D. Song. On gray-box program tracking for anomaly detection. In Proceedings of the 13th conference on USENIX Security Symposium - Volume 13, SSYM'04. USENIX Association, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. P. Godefroid, N. Klarlund, and K. Sen. Dart: directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI '05, pages 213--223, New York, NY, USA, 2005. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. Kling, S. Misailovic, M. Carbin, and M. Rinard. Bolt: on-demand infinite loop escape in unmodified binaries. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, OOPSLA '12', pages 431--450, New York, NY, USA, 2012. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C. Kruegel and G. Vigna. Anomaly detection of web-based attacks. In Proceedings of the 10th ACM conference on Computer and communications security, CCS '03. ACM, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. Lattner, A. Lenharth, and V. Adve. Making context-sensitive points-to analysis with heap cloning practical for the real world. In Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation, PLDI '07, pages 278--289, New York, NY, USA, 2007. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. LeBlanc. Integer handling with the c++ safeint class. http:// msdn. microsoft. com/en-us/library/ms972705, 2004.Google ScholarGoogle Scholar
  22. F. Long, V. Ganesh, M. Carbin, S. Sidiroglou, and M. Rinard. Automatic input rectification. ICSE '12, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. F. Long, S. Sidiroglou, D. Kim, and M. Rinard. Sound input filter generation for integer overflow errors. MIT-CSAIL-TR-2013-018.Google ScholarGoogle Scholar
  24. R. Madhavan and R. Komondoor. Null dereference verification via over-approximated weakest pre-conditions analysis. In Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA '11, pages 1033--1052, New York, NY, USA, 2011. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Molnar, X. C. Li, and D. A. Wagner. Dynamic test generation to find integer bugs in x86 binary linux programs. Usenix Security'09. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. Newsome, D. Brumley, and D. X. Song. Vulnerability-specific execution filtering for exploit prevention on commodity software. In NDSS, 2006.Google ScholarGoogle Scholar
  27. G. Novark, E. D. Berger, and B. G. Zorn. Exterminator: Automatically correcting memory errors with high probability. In In Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, ACM. Press, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan,W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, SOSP '09, pages 87--102, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. M. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S. Beebee. Enhancing server availability and security through failureoblivious computing. In In Proceedings 6 th Symposium on Operating Systems Design and Implementation (OSDI), pages 303--316, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. M. C. Rinard. Living in the comfort zone. In Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, OOPSLA '07. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. D. Sarkar, M. Jagannathan, J. Thiagarajan, and R. Venkatapathy. Flowinsensitive static analysis for detecting integer anomalies in programs. In IASTED, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. R. Seacord. The CERT C secure coding standard. Addison-Wesley Professional, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. W. Tielei, W. Tao, L. Zhiqiang, and Z. Wei. IntScope: Automatically Detecting Integer Overflow Vulnerability In X86 Binary Using Symbolic Execution. In 16th Annual Network & Distributed System Security Symposium, 2009.Google ScholarGoogle Scholar
  34. K.Wang and S. J. Stolfo. Anomalous payload-based network intrusion detection. In RAID, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  35. X.Wang, H. Chen, Z. Jia, N. Zeldovich, and M. Kaashoek. Improving integer security for systems with kint. In OSDI. USENIX Association, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. X. Wang, Z. Li, J. Xu, M. K. Reiter, C. Kil, and J. Y. Choi. Packet vaccine: black-box exploit detection and signature generation. CCS'06. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. C. Zhang, T. Wang, T. Wei, Y. Chen, and W. Zou. Intpatch: Automatically fix integer-overflow-to-buffer-overflow vulnerability at compiletime. Computer Security--ESORICS 2010, pages 71--86, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Sound input filter generation for integer overflow errors

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        POPL '14: Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
        January 2014
        702 pages
        ISBN:9781450325448
        DOI:10.1145/2535838

        Copyright © 2014 Owner/Author

        Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 8 January 2014

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        POPL '14 Paper Acceptance Rate51of220submissions,23%Overall Acceptance Rate824of4,130submissions,20%

        Upcoming Conference

        POPL '25

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader