skip to main content
article

Token-based scanning of source code for security problems

Published:01 August 2002Publication History
Skip Abstract Section

Abstract

We describe ITS4, a tool for statically scanning C and C++ source code for security vulnerabilities. Compared to other approaches, our scanning technique stakes out a new middle ground between accuracy and efficiency. This method is efficient enough to offer real-time feedback to developers during coding while producing few false negatives. Unlike other techniques, our method is also simple enough to scan C++ code despite the complexities inherent in the language. Using ITS4, we found new remotely exploitable vulnerabilities in a widely distributed software package as well as in a major piece of e-commerce software.We also describe functionality in more recent tools modeled after ITS4, and discuss algorithms that could easily be used to augment these kinds of tools. Particularly, we describe a solution we have prototyped that allows for more rigorous analysis of C and C++ source code, without failing to analyze parts of the program due to preprocessor conditionals.

References

  1. Aho, A., Sethi, R., and Ullman, J. 1986. Compilers: Principles, Techniques and Tools. Addison Wesley, Reading, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Bishop, M. and Dilger, M. 1996. Checking for race conditions in file accesses. Comput. Syst. 9, 2, 131--152.]]Google ScholarGoogle Scholar
  3. Evans, D., Guttag, J., Horning, J., and Tan, Y. 1994. LCLint: A tool for using specifications to check code. In Proceedings of the ACM SIGSOFT '94 Symposium on the Foundations of Software Engineering. ACM, New York, 87--96.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Garfinkel, S., and Spafford, G. 1996. Practical Unix and Internet Security. O'Reilly and Associates, Cambridge, Mass.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Landi, W. and Ryder, B. 1992. A safe approximation algorithm for interprocedural pointer aliasing. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation. ACM, New York, 235--248.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Larochelle, D. and Evans, D. 2001. Statically detecting likely buffer overflow vulnerabilities. In Proceedings of the 2001 USENIX Security Symposium.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Myers, A. 1999. JFLOW: Practical, mostly-static information flow control. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Antonio, Tex.), 228--241.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Shankar, U., Kunal, T., Foster, J., and Wagner, D. 2001. Detecting format string vulnerabilities with type qualifiers. In Proceedings of the 2001 USENIX Security Symposium.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Viega, J. and Mcgraw, G. 2001. Building Secure Software. Addison-Wesley, Reading, Mass.]]Google ScholarGoogle Scholar
  10. Wagner, D., Foster, J., Brewer, E., and Aiken, A. 2000. A first step towards automated detection of buffer overrun vulnerabilities. In Proceedings of the Year 2000 Network and Distributed System Security Symposium (San Diego, Calif.), 3--17.]]Google ScholarGoogle Scholar

Index Terms

  1. Token-based scanning of source code for security problems

    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

    Full Access

    • Published in

      cover image ACM Transactions on Information and System Security
      ACM Transactions on Information and System Security  Volume 5, Issue 3
      August 2002
      163 pages
      ISSN:1094-9224
      EISSN:1557-7406
      DOI:10.1145/545186
      Issue’s Table of Contents

      Copyright © 2002 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: 1 August 2002
      Published in tissec Volume 5, Issue 3

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader