Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1629575.1629585acmconferencesArticle/Chapter ViewAbstractPublication PagessospConference Proceedingsconference-collections
research-article

Automatically patching errors in deployed software

Published: 11 October 2009 Publication History

Abstract

We present ClearView, a system for automatically patching errors in deployed software. ClearView works on stripped Windows x86 binaries without any need for source code, debugging information, or other external information, and without human intervention.
ClearView (1) observes normal executions to learn invariants thatcharacterize the application's normal behavior, (2) uses error detectors to distinguish normal executions from erroneous executions, (3) identifies violations of learned invariants that occur during erroneous executions, (4) generates candidate repair patches that enforce selected invariants by changing the state or flow of control to make the invariant true, and (5) observes the continued execution of patched applications to select the most successful patch.
ClearView is designed to correct errors in software with high availability requirements. Aspects of ClearView that make it particularly appropriate for this context include its ability to generate patches without human intervention, apply and remove patchesto and from running applications without requiring restarts or otherwise perturbing the execution, and identify and discard ineffective or damaging patches by evaluating the continued behavior of patched applications.
ClearView was evaluated in a Red Team exercise designed to test its ability to successfully survive attacks that exploit security vulnerabilities. A hostile external Red Team developed ten code injection exploits and used these exploits to repeatedly attack an application protected by ClearView. ClearView detected and blocked all of the attacks. For seven of the ten exploits, ClearView automatically generated patches that corrected the error, enabling the application to survive the attacks and continue on to successfully process subsequent inputs. Finally, the Red Team attempted to make Clear-View apply an undesirable patch, but ClearView's patch evaluation mechanism enabled ClearView to identify and discard both ineffective patches and damaging patches.

References

[1]
ANAGNOSTAKIS, K., SIDIROGLOU, S., AKRITIDIS, P., XINIDIS, K., MARKATOS, E., AND KEROMYTIS, A.D. Detecting targeted attacks using shadow honeypots. In USENIX Security (Aug. 2005).
[2]
AUSTIN, T., BREACH, S., AND SOHI, G. Efficient detection of all pointer and array access errors. In PLDI (June 2004).
[3]
BALIGA, A., GANAPATHY, V., AND IFTODE, L. Automatic inference and enforcement of kernel data structure invariants. In ACSAC (Dec. 2008), pp. 77--86.
[4]
BERGER, E., AND ZORN, B. DieHard: probabilistic memory safety for unsafe languages. In PLDI (June 2006).
[5]
BRUENING, D. Efficient, Transparent, and Comprehensive Runtime Code Manipulation. Ph.D., MIT Department of Electrical Engineering and Computer Science, Cambridge, MA, Sep. 2004.
[6]
CANDEA, G., AND FOX, A. Recursive restartability: Turning the reboot sledgehammer into a scalpel. In HotOS (Schloss Elmau, Germany, May 2001).
[7]
CONDIT, J., HARREN, M., MCPEAK, S., NECULA, G.C., AND WEIMER, W. CCured in the real world. In PLDI (June 2003).
[8]
COSTA, M., CASTRO, M., ANTONY, ZHOU, L., ZHANG, L., AND PEINADO, M. Bouncer: securing software by blocking bad input. In SOSP (Oct. 2007).
[9]
COSTA, M., CROWCROFT, J., CASTRO, M., ROWSTRON, A., ZHOU, L., ZHANG, L., AND BARHAM, P. Vigilante: End-to-end containment of Internet worms. In SOSP (Oct. 2005).
[10]
COWAN, C., PU, C., MAIER, D., WALPOLE, J., BAKKE, P., BEATTIE, S., GRIER, A., WAGLE, P., ZHANG, Q., AND HINTON, H. StackGuard: Automatic adaptive detection and prevention of buffer-overflow attacks. In USENIX Security (January 1998).
[11]
CRANDALL, J., AND CHONG, F. Minos: Control data attack prevention orthogonal to memory model. In MICRO (Dec. 2004).
[12]
CUI, W., PEINADO, M., WANG, H.J., AND LOCASTO, M.E. ShieldGen: Automatic data patch generation for unknown vulnerabilities with informed probing. In IEEE S&P (May 2007).
[13]
DEMSKY, B., ERNST, M.D., GUO, P.J., MCCAMANT, S., PERKINS, J.H., AND RINARD, M. Inference and enforcement of data structure consistency specifications. In ISSTA (July 2006).
[14]
DEMSKY, B., AND RINARD, M. Automatic detection and repair of errors in data structures. In 18th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (Oct. 2003).
[15]
DEMSKY, B., AND RINARD, M. Data structure repair using goal-directed reasoning. In ICSE (May 2005).
[16]
ERNST, M.D., COCKRELL, J., GRISWOLD,W.G., AND NOTKIN, D. Dynamically discovering likely program invariants to support program evolution. IEEE TSE 27, 2 (Feb. 2001).
[17]
ERNST, M.D., PERKINS, J.H., GUO, P.J., MCCAMANT, S., PACHECO, C., TSCHANTZ, M.S., AND XIAO, C. The Daikon system for dynamic detection of likely invariants. Science of Computer Programming 69, 1-3 (Dec. 2007).
[18]
FORREST, S., WEIMER, W., NGUYEN, T., AND GOUES, C.L. A genetic programming approach to automated software repair. In GECCO (July 2009).
[19]
GRAY, J., AND REUTER, A. Transaction Processing: Concepts and Techniques. Morgan Kaufmann, 1993.
[20]
JIM, T., MORRISETT, G., GROSSMAN, D., HICKS, M., CHENEY, J., AND WANG, Y. Cyclone: A safe dialect of C. In USENIX (June 2002).
[21]
JONES, R., AND KELLY, P. Backwards-compatible bounds checking for arrays and pointers in C programs. In AADEBUG (May 1997).
[22]
JULA, H., TRALAMAZZA, D., ZAMFIR, C., AND CANDEA, G. Deadlock immunity: Enabling systems to defend against deadlocks. In OSDI (Dec. 2008), pp. 295--308.
[23]
KENDALL, S.C. Bcc: Run-time checking for C programs. In USENIX Summer (1983).
[24]
KIRIANSKY, V., BRUENING, D., AND AMARASINGHE, S. Secure execution via program shepherding. In USENIX Security (Aug. 2002).
[25]
LIN, L., AND ERNST, M.D. Improving adaptability via program steering. In ISSTA (July 2004).
[26]
LITZKOW, M., AND SOLOMON, M. The evolution of condor checkpointing. In Mobility: processes, computers, and agents (1999), ACM Press/Addison-Wesley.
[27]
LOCASTO, M.E., SIDIROGLOU, S., AND KEROMYTIS, A.D. Software self-healing using collaborative application communities. In SNDSS (Feb. 2005).
[28]
LORENZOLI, D., MARIANI, L., AND PEZZÈ, M. Towards self-protecting enterprise applications. In ISSRE (Nov. 2007), pp. 39--48.
[29]
NEWSOME, J., AND SONG, D. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In NDSS (Feb. 2005).
[30]
NOVARK, G., BERGER, E., AND ZORN, B. Exterminator: Automatically correcting memory errors with high probability. Communications of the ACM 51, 12 (Dec. 2008).
[31]
PERKINS, J.H., AND ERNST, M.D. Efficient incremental algorithms for dynamic detection of likely invariants. In FSE (Nov. 2004).
[32]
QIN, F., TUCEK, J., SUNDARESAN, J., AND ZHOU, Y. Rx: treating bugs as allergies--a safe method to survive software failures. SIGOPS Oper. Syst. Rev. 39, 5 (2005), 235--248.
[33]
RINARD, M. Acceptability-oriented computing. In OOPSLA Companion (Oct. 2003).
[34]
RINARD, M., CADAR, C., DUMITRAN, D., ROY, D.M., AND LEU, T. A dynamic technique for eliminating buffer overflow vulnerabilities (and other memory errors). In ACSAC (Dec. 2004).
[35]
RINARD, M., CADAR, C., DUMITRAN, D., ROY, D.M., LEU, T., AND WILLIAM S. BEEBEE, J. Enhancing server availability and security through failure-oblivious computing. In OSDI (December 2004).
[36]
RINARD, M., CADAR, C., AND NGUYEN, H.H. Exploring the acceptability envelope. In OOPSLA Companion (Oct. 2005).
[37]
RUWASE, O., AND LAM, M.S. A practical dynamic buffer overflow detector. In NDSS (February 2004).
[38]
SHACHAM, H., PAGE, M., PFAFF, B., GOH, E.-H., MODADUGU, N., AND BONEH, D. On the effectiveness of address-space randomization. In ACM CCS (Oct. 2004).
[39]
SIDIROGLOU, S., GIOVANIDIS, G., AND KEROMYTIS, A.D. A dynamic mechanism for recovering from buffer overflow attacks. In ISC (Sep. 2005).
[40]
SIDIROGLOU, S., LAADAN, O., KEROMYTIS, A.D., AND NIEH, J. Using rescue points to navigate software recovery. In IEEE S&P (May 2007).
[41]
SIDIROGLOU, S., LAADAN, O., PEREZ, C., VIENNOT, N., NIEH, J., AND KEROMYTIS, A.D. Assure: automatic software self-healing using rescue points. In ASPLOS '09 (2009).
[42]
SIDIROGLOU, S., LOCASTO, M.E., BOYD, S.W., AND KEROMYTIS, A.D. Building a reactive immune system for software services. In USENIX (Apr. 2005).
[43]
SMIRNOV, A., AND CHIUEH, T. DIRA: Automatic detection, identification and repair of control-hijacking attacks. In NDSS (Feb. 2005).
[44]
SPITZNER, L. Honeypots: Tracking Hackers. Addison-Wesley, 2002.
[45]
Stackshield. www.angelfire.com/sk/stackshield.
[46]
SUH, G., LEE, J., ZHANG, D., AND DEVADAS, S. Secure program execution via dynamic information flow tracking. In ASPLOS (Oct. 2004).
[47]
Symantech Internet security threat report. www.symantec.com, Sep. 2006.
[48]
TUCEK, J., NEWSOME, J., LU, S., HUANG, C., XANTHOS, S., BRUMLEY, D., ZHOU, Y., AND SONG, D. Sweeper: A lightweight end-to-end system for defending against fast worms. In EuroSys (Mar. 2007).
[49]
YONG, S.H., AND HORWITZ, S. Protecting C programs from attacks via invalid pointer dereferences. In ESEC/FSE (2003).

Cited By

View all
  • (2024)RepFTI: Representation-Fused Function-Type Inference for Vehicular Secure Software SystemsApplied Sciences10.3390/app1411450214:11(4502)Online publication date: 24-May-2024
  • (2024)Toward Systematizing Hot Fixing for Production SoftwareCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3664456(677-679)Online publication date: 10-Jul-2024
  • (2024)How the Training Procedure Impacts the Performance of Deep Learning-based Vulnerability PatchingProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661200(150-159)Online publication date: 18-Jun-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SOSP '09: Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles
October 2009
346 pages
ISBN:9781605587523
DOI:10.1145/1629575
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 October 2009

Permissions

Request permissions for this article.

Check for updates

Author Tag

  1. self healing

Qualifiers

  • Research-article

Conference

SOSP09
Sponsor:

Acceptance Rates

Overall Acceptance Rate 131 of 716 submissions, 18%

Upcoming Conference

SOSP '24

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)69
  • Downloads (Last 6 weeks)3
Reflects downloads up to 24 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)RepFTI: Representation-Fused Function-Type Inference for Vehicular Secure Software SystemsApplied Sciences10.3390/app1411450214:11(4502)Online publication date: 24-May-2024
  • (2024)Toward Systematizing Hot Fixing for Production SoftwareCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3664456(677-679)Online publication date: 10-Jul-2024
  • (2024)How the Training Procedure Impacts the Performance of Deep Learning-based Vulnerability PatchingProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661200(150-159)Online publication date: 18-Jun-2024
  • (2024)Benchmarking Automated Program Repair: An Extensive Study on Both Real-World and Artificial BugsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652140(440-452)Online publication date: 11-Sep-2024
  • (2024)CORE: Resolving Code Quality Issues using LLMsProceedings of the ACM on Software Engineering10.1145/36437621:FSE(789-811)Online publication date: 12-Jul-2024
  • (2024)Software Engineering Research in a World with Generative Artificial IntelligenceProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3649399(1-5)Online publication date: 20-May-2024
  • (2024)FSmell: Recognizing Inline Function in Binary CodeComputer Security – ESORICS 202310.1007/978-3-031-51476-0_24(487-506)Online publication date: 11-Jan-2024
  • (2023)Run-Time Prevention of Software Integration Failures of Machine Learning APIsProceedings of the ACM on Programming Languages10.1145/36228067:OOPSLA2(264-291)Online publication date: 16-Oct-2023
  • (2023)How Effective Are Neural Networks for Fixing Security VulnerabilitiesProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598135(1282-1294)Online publication date: 12-Jul-2023
  • (2023)CirFix: Automated Hardware Repair and its Real-World ApplicationsIEEE Transactions on Software Engineering10.1109/TSE.2023.326989949:7(3736-3752)Online publication date: Jul-2023
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media