skip to main content
10.1145/286936.286972acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article
Free Access

A type system for object initialization in the Java bytecode language

Authors Info & Claims
Published:01 October 1998Publication History

ABSTRACT

In the standard Java implementation, a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another site, where it is then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks before code is interpreted. As illustrated by previous attacks on the Java Virtual Machine, these tests, which include type correctness, are critical for system security. In order to analyze existing bytecode verifiers and to understand the properties that should be verified, we develop a precise specification of statically-correct Java bytecode, in the form of a type system. Our focus in this paper is a subset of the bytecode language dealing with object creation and initialization. For this subset, we prove that for every Java bytecode program that satisfies our typing constraints, every object is initialized before it is used. The type system is easily combined with a previous system developed by Stata and Abadi for bytecode subroutines. Our analysis of subroutines and object initialization reveals a previously unpublished bug in the Sun JDK bytecode verifier.

References

  1. AG96.Ken Arnold and James Gosling. The Java Programming Language. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Coh97.Rich Cohen. Defensive Java Virtual Machine Version 0.5 alpha Release. Available from ht tp: / / www. c I i. corn/software / djvm/index, ht m 1, November 1997.]]Google ScholarGoogle Scholar
  3. DE97.S. Drossopoulou and S. Eisenbach. Java is type safe ---probably. In European Conference On Object Oriented Programming, pages 389-418, 1997.]]Google ScholarGoogle ScholarCross RefCross Ref
  4. DFW96.Drew Dean, Edward W. Felten, and Dan S. Wallach. Java security: from Hot Java to netscape and beyond. In Proceedings of the IEEE Computer Society Symposium on Research in Security and Privacy, pages 190-200, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Gol98.Allen Goldberg. A specification of java loading and bytecode verification. In Proceedings of the Fifth A CM Conference on Computer and Communications Security, 1998. Available from http: //www. kest rel.edu/~ goldberg.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. HT98.Masami Hagiya and Akihiko Tozawa. On a new method for dataflow analysis of Java Virtual M achi ne subroutines. Available from http://nicosia.is.s.utokyo.ac.j p/members/hagiya.html. A preliminary version appeared in SIG-Notes, PRO-17-3, Information Processing Society of Japan, 1998.]]Google ScholarGoogle Scholar
  7. Lia97.Sheng Liang. personal communication, November 1997.]]Google ScholarGoogle Scholar
  8. LY96.Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. MCGW98.Greg Morrisett, Karl Crary, Neal Glew, and David Walker. From system F to typed assembly language. In Proc. PSth A CM Symposium on Principles of Pro- 9rammin9 Languages, January 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. NvO98.qbbias Nipkow and David yon Oheimb. Javatight is Type-Safe- Definitely. In Proc. 25th A CM Symposium on Principles of Programming Languages, January 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. PV98.Joachim Posegga and Harald Vogt. Byte code verification for java smart cards based on model checking. In 5th European Symposium on Research in Computer Security (ESORICS), Louvain-la-Neuve, Belgium, 1998. Springer LNCS.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Qia98.Zhenyu Qian. A formal specification of Java Virtual Machine instructions for objects, methods and subroutines. In Jim Alves-Foss, editor, Formal Syntax and Semantics of Java. Springer-Verlag, 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. SA98.Raymie Stata and Martfn Abadi. A type system for Java bytecode subroutines. In Proc. 25th A CM Symposium on Principles o/ Programming Languages, January 1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Sar97.Vijay Saraswat. The Java bytecode verification problem. Available from http://www.research.att.com/'vj, November 1997.]]Google ScholarGoogle Scholar
  15. SMB97.Emin Grin Sirer, Sean McDirmid, and Brian Betshad. Kimera: A java system architecture. Available from http://kimera.cs.washington.edu, November 1997.]]Google ScholarGoogle Scholar
  16. Sym97.Don Syme. Proving Java type soundness. Technical Report 427, University of Cambridge Computer Laboratory Technical Report, 1997.]]Google ScholarGoogle Scholar
  17. TMC+96.D. Tarditi, G. Morrisett, P. Cheng, C. Stone, R. Harper, and P. Lee. TIL: A type-directed optimizing compiler for ML. A CM SIGPLAN Notices, 31(5):181-192, May 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A type system for object initialization in the Java bytecode language

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            OOPSLA '98: Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
            October 1998
            428 pages
            ISBN:1581130058
            DOI:10.1145/286936

            Copyright © 1998 ACM

            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]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 1 October 1998

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • Article

            Acceptance Rates

            Overall Acceptance Rate268of1,244submissions,22%

            Upcoming Conference

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader