skip to main content
10.1145/2591062.2591199acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Program transformations to fix C buffer overflows

Published:31 May 2014Publication History

ABSTRACT

This paper describes two program transformations to fix buffer overflows originating from unsafe library functions and bad pointer operations. Together, these transformations fixed all buffer overflows featured in 4,505 programs of NIST’s SAMATE reference dataset, making the changes automatically on over 2.3 million lines of C code.

References

  1. D. D. Babic and A. Hu. Calysto: scalable and precise extended static checking. In Proceedings of the 30th international conference on software engineering. ICSE ’08, pages 211-220, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Bulba and Kil3r. Bypassing StackGuard and Stack Shield. Phrack Magazine. 10(56):File 5, 200.Google ScholarGoogle Scholar
  3. J. Condit, M. Harren, S. McPeak, G. Necula, and W. Weimer. CCured in the real world. In Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, PLDI ’03, pages 232-244, New York, NY, USA, 2003. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Cowan, C. Pu, D. Maeir, J. Walpole, P. Bakke, S. Beattie, A. Grier, P. Wagle, Q. Zhang, and H. Hinton. StackGuard: Automatic adaptive detection and prevention of bu ffer-overflow attacks. In Seventh USENIX Security Symposium proceedings: conference proceedings: San Antonio, Texas, January 26–29, 1998. USENIX, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. Dor, M. Rodeh, and S. Sagiv. CSSV: Towards a realistic tool for statically detecting all bu ffer overflows in C. In Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation 2003, San Diego, California, USA, June 9-11, 2003. ACM, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. H. Etoh. GCC extension for protecting applications from stack-smashing attacks. http://www.research.ibm.com/trl/projects/security/ssp/, 2000.Google ScholarGoogle Scholar
  7. D. Evans and D. Larochelle. Improving security using extensible lightweight static analysis. IEEE Software, 19:42–51, January 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. V. Ganapathy, S. Jha, D. Chandler, D. Melski, and D. Vitek. Bu ffer overrun detection using linear programming and static analysis. In Proceedings of the 10th ACM Conference on Computer and Communications Security, CCS 2003, Washington, DC, USA, October 27-30, Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. B. Hackett, M. Das, D. Wang, and Z. Yang. Modular checking for buffer overflows in the large. In Proceedings of the 28th international conference on Software engineering, ICSE ’06, pages 232–241, New York, NY, USA, 2006. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Hafiz, J. Overbey, F. Behrang, and J. Hall. OpenRefactory/C: An infrastructure for building correct and complex C transformations. In Proceeding of the 6th Workshop on Refactoring Tools (WRT ’13), 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Proceedings of the Winter 1992 USENIX Conference, pages 125–136, 1992.Google ScholarGoogle Scholar
  12. E. Haugh and M. Bishop. Testing C programs for bu ffer overflow vulnerabilities. In NDSS. The Internet Society, 2003.Google ScholarGoogle Scholar
  13. B. Johnson, Y. Song, E. Murphy-Hill, R. Bowdidge. Why don’t software developers use static analysis tools to find bugs? In ICSE ’13: Proceedings of the International Conference on Software Engineering, New York, NY, USA, 2013. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. W. Le and M. L. So ffa. Marple: A demand-driven path-sensitive bu ffer overflow detector. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering, SIGSOFT ’08/FSE-16, pages 272–282, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. National Institute of Standards and Technology (NIST). SAMATE - Software Assurance Metrics and Tool Evaluation, 2012.Google ScholarGoogle Scholar
  16. qmail home page. Maintained by Daniel Julius Bernstein. http://cr.yp.to/qmail.html.Google ScholarGoogle Scholar
  17. R. Rugina and M. Rinard. Symbolic bounds analysis of pointers, array indices, and accessed memory regions. In Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, PLDI ’00, pages 182–195, New York, NY, USA, 2000. ACM. {18} R. Seacord. The CERT C secure coding standard. Addison-Wesley, 2009. {19} J. Viega, J. Bloch, T. Kohno, and G. McGraw. ITS4: A static vulnerability scanner for C and C++ code. In 16th Annual Computer Security Applications Conference. ACM, 2000. {20} D. Wagner, J. Foster, E. Brewer, and A. Aiken. A first step toward automated detection of buffer overrun vulnerabilities. In NDSS. The Internet Society, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. Wilander and M. Kamkar. A comparison of publicly available tools for dynamic bu ffer overflow prevention. In Proceedings of the Network and Distributed System Security Symposium, NDSS 2003, San Diego, California, USA. The Internet Society, 2003.Google ScholarGoogle Scholar
  19. Y. Xie, A. Chou, and D. Engler. ARCHER: Using symbolic, path-sensitive analysis to detect memory access errors. SIGSOFT Softw. Eng. Notes, 28:327– 336, September 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

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
    ICSE Companion 2014: Companion Proceedings of the 36th International Conference on Software Engineering
    May 2014
    741 pages
    ISBN:9781450327688
    DOI:10.1145/2591062

    Copyright © 2014 ACM

    Permission to make digital or hard copies of all or part 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 components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 31 May 2014

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • Article

    Acceptance Rates

    Overall Acceptance Rate276of1,856submissions,15%

    Upcoming Conference

    ICSE 2025

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader