Efficient Bytecode Verification Using Immediate Postdominators in Control Flow Graphs: Extended Abstract

Java Virtual Machine (JVM) code (also called bytecode) [11] can be downloaded by untrusted sources and executed directly. A component of the Java security model is the Java bytecode Verifier, which makes sure that the bytecode is safe by static analysis at loading time and prior to execution. The bytecode Verifier checks type correctness, stack overflow or underflow, code containment, registers and objects initialization, access control. The first bytecode verification algorithm is due to Gosling and Yellin. Most JVM instructions are typed and the algorithm is based on an abstract interpreter for the instructions that operates over types instead of values. Almost all existing Verifiers implement this algorithm [4,11,12].