Modeling the Java Bytecode Verifier
Reynolds, Mark C.
MetadataShow full item record
Citation (published version)Reynolds, Mark. "Modeling the Java Bytecode Verifier", Technical Report BUCS-TR-2009-036, Computer Science Department, Boston University, December 30, 2009. [Available from: http://hdl.handle.net/2144/1729]
The Java programming language has been widely described as secure by design. Nevertheless, a number of serious security vulnerabilities have been discovered in Java, particularly in the Bytecode Verifier, a critical component used to verify class semantics before loading is complete. This paper describes a method for representing Java security constraints using the Alloy modeling language. It further describes a system for performing a security analysis on any block of Java bytecodes by converting the bytes into relation initializers in Alloy. Any counterexamples found by the Alloy analyzer correspond directly to insecure code. Analysis of the approach in the context of known security exploits is provided. This type of analysis represents a significant departure from standard malware analysis methods based on signatures or anomaly detection.