COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification

Buffer overflows continue to be the source of a vast majority of software vulnerabilities. Solutions based on runtime checks incur performance overhead, and are inappropriate for safety-critical and mission-critical systems requiring static—that is, prior to deployment—guarantees. Thus, finding overflows statically and effectively remains an important challenge. This report presents COVERT, an automated framework aimed at finding buffer overflows in C programs using state-of-the-art software verification tools and techniques. Broadly, COVERT works in two phases: INSTRUMENTATION and ANALYSIS. The INSTRUMENTATION phase is the core phase of COVERT. During INSTRUMENTATION, the target C program is instrumented such that buffer overflows are transformed to assertion violations. In the ANALYSIS phase, a static software verification tool is used to check for assertion violations in the instrumented code, and to generate error reports. COVERT was implemented and then evaluated it on a set of benchmarks derived from real programs. For the ANALYSIS phase, experiments were conducted with three software verification tools—BLAST, COPPER, and PANA.Results indicate that the COVERT framework is effective at reducing the number of false warnings, while remaining scalable.

PDF [425 KB]

Authors

Sagar Chaki

Arie Gurfinkel

This report is related to the following area(s) of work:

Software Architecture

Technical Report
CMU/SEI-2010-TR-029
August 2010

Cite This Report

SEI:

Chaki, Sagar; & Gurfinkel, Arie. COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification (CMU/SEI-2010-TR-029). Software Engineering Institute, Carnegie Mellon University, 2010. http://www.sei.cmu.edu/library/abstracts/reports/10tr029.cfm

IEEE:

S. Chaki, and A. Gurfinkel, "COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification," Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pennsylvania, Technical Report CMU/SEI-2010-TR-029, 2010. http://www.sei.cmu.edu/library/abstracts/reports/10tr029.cfm

APA:

Chaki, S., & Gurfinkel, A. (2010). COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification (CMU/SEI-2010-TR-029). Retrieved May 22, 2013, from the Software Engineering Institute, Carnegie Mellon University website: http://www.sei.cmu.edu/library/abstracts/reports/10tr029.cfm

CHI:

Chaki, Sagar, and Arie Gurfinkel. COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification (CMU/SEI-2010-TR-029). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2010. http://www.sei.cmu.edu/library/abstracts/reports/10tr029.cfm

MLA:

Chaki, S., & Gurfinkel, A. 2010. COVERT: A Framework for Finding Buffer Overflows in C Programs via Software Verification (Technical Report CMU/SEI-2010-TR-029). Pittsburgh: Software Engineering Institute, Carnegie Mellon University. http://www.sei.cmu.edu/library/abstracts/reports/10tr029.cfm

Find Us Here

Find us on Youtube  Find us on LinkedIn  Find us on twitter  Find us on Facebook

Share This Page

Share on Facebook  Send to your Twitter page  Save to del.ico.us  Save to LinkedIn  Digg this  Stumble this page.  Add to Technorati favorites  Save this page on your Google Home Page 

For more information

Contact Us

info@sei.cmu.edu

412-268-5800

Help us improve

Visitor feedback helps us continually improve our site.

Please tell us what you
think with this short
(< 5 minute) survey.