Using Memory Errors to Attack a Virtual Machine

  • Authors:
  • Sudhakar Govindavajhala;Andrew W. Appel

  • Affiliations:
  • -;-

  • Venue:
  • SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present an experimental study showing that softmemory errors can lead to serious security vulnerabilitiesin Java and .NET virtual machines, or in any system thatrelies on type-checking of untrusted programs as a protectionmechanism. Our attack works by sending to the JVMa Java program that is designed so that almost any memoryerror in its address space will allow it to take controlof the JVM. All conventional Java and .NET virtual machinesare vulnerable to this attack. The technique of theattack is broadly applicable against other language-basedsecurity schemes such as proof-carrying code.We measured the attack on two commercial Java VirtualMachines: Sun's and IBM's. We show that a single-biterror in the Java program's data space can be exploitedto execute arbitrary code with a probability ofabout 70%, and multiple-bit errors with a lower probability.Our attack is particularly relevant against smart cardsor tamper-resistant computers, where the user has physicalaccess (to the outside of the computer) and can usevarious means to induce faults; we have successfully usedheat. Fortunately, there are some straightforward defensesagainst this attack.