Carnegie Mellon University
Browse (116.35 kB)

Redemption: A Prototype for Automated Repair of Static Analysis Alerts

Download (116.35 kB)
online resource
posted on 2024-06-10, 23:02 authored by David SvobodaDavid Svoboda

Heuristic static analysis (SA) tools are a critical component of software development. These tools use pattern matching and other heuristic techniques to analyze a program’s source code and alert users to potential errors and vulnerabilities. Unfortunately, SA tools produce a high number of false positives: they can produce one alert for every three lines of code.  By our analysis, it would take a user more than 15 person-years to manually repair all the alerts in a typical large codebase of two million lines of code. Currently, most software engineers filter alerts and only fix the ones they deem most critical, but this approach risks overlooking real issues. False positives create a barrier to the adoption and utility of heuristic SA tools, increasing the possibility of security vulnerabilities.

Our new open source tool Redemption leverages automated code repair (ACR) technology to automatically repair SA alerts in C/C++ source code. By reducing the number of false positives, we estimate organizations can save around seven and one-half person-years in identifying and repairing security alerts.  In this post, I give an overview of how Redemption uses ACR technology, the kinds of errors Redemption can fix, how the tool works, and what’s next for its development.


Publisher Statement

This material is based upon work funded and supported by the Department of Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center. The view, opinions, and/or findings contained in this material are those of the author(s) and should not be construed as an official Government position, policy, or decision, unless designated by other documentation. References herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by Carnegie Mellon University or its Software Engineering Institute. This report was prepared for the SEI Administrative Agent AFLCMC/AZS 5 Eglin Street Hanscom AFB, MA 01731-2100. NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT. [DISTRIBUTION STATEMENT A] This material has been approved for public release and unlimited distribution. Please see Copyright notice for non-US Government use and distribution.

Copyright Statement

Copyright 2024 Carnegie Mellon University.

Usage metrics


    Ref. manager