Automated Patch Transplantation
Autor: | Shin Hwei Tan, Abhik Roychoudhury, Mingyuan Gao, Ridwan Shariffdeen |
---|---|
Rok vydání: | 2020 |
Předmět: |
Computer science
business.industry Vulnerability 020207 software engineering 02 engineering and technology Symbolic execution Transplantation Workflow Software 020204 information systems 0202 electrical engineering electronic engineering information engineering Dynamic program analysis Differential testing Software engineering business Implementation |
Zdroj: | ACM Transactions on Software Engineering and Methodology. 30:1-36 |
ISSN: | 1557-7392 1049-331X |
Popis: | Automated program repair is an emerging area that attempts to patch software errors and vulnerabilities. In this article, we formulate and study a problem related to automated repair, namely automated patch transplantation. A patch for an error in a donor program is automatically adapted and inserted into a “similar” target program. We observe that despite standard procedures for vulnerability disclosures and publishing of patches, many un-patched occurrences remain in the wild. One of the main reasons is the fact that various implementations of the same functionality may exist and, hence, published patches need to be modified and adapted. In this article, we therefore propose and implement a workflow for transplanting patches. Our approach centers on identifying patch insertion points, as well as namespaces translation across programs via symbolic execution. Experimental results to eliminate five classes of errors highlight our ability to fix recurring vulnerabilities across various programs through transplantation. We report that in 20 of 24 fixing tasks involving eight application subjects mostly involving file processing programs, we successfully transplanted the patch and validated the transplantation through differential testing. Since the publication of patches make an un-patched implementation more vulnerable, our proposed techniques should serve a long-standing need in practice. |
Databáze: | OpenAIRE |
Externí odkaz: |