skip to main content
10.1145/1141277.1141708acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
Article

Java bytecode specification and verification

Authors Info & Claims
Published:23 April 2006Publication History

ABSTRACT

We propose a framework for establishing the correctness of untrusted Java bytecode components w.r.t. to complex functional and/or security policies. To this end, we define a bytecode specification language (BCSL) and a weakest precondition calculus for sequential Java bytecode. BCSL and the calculus are expressive enough for verifying non-trivial properties of programs, and cover most of sequential Java bytecode, including exceptions, subroutines, references, object creation and method calls. Our approach does not require that bytecode components are provided with their source code. Nevertheless, we provide a means to compile JML annotations into BCSL annotations by defining a compiler from the Java Modeling Language (JML) to BCSL. Our compiler can be used in combination with most Java compilers to produce extended class files from JML-annotated Java source programs. All components, including the verification condition generator and the compiler are implemented and integrated in the Java Applet Correctness Kit (JACK).

References

  1. A. V. Aho, R. Sethi, and J. D. Ullman. Compilers-Principles, Techniques and Tools. Addison-Wesley: Reading, 1986.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Meyer. Object-Oriented Software Construction. Prentice Hall, 2 revised edition, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R. Bornat. Proving pointer programs in Hoare Logic. In MPC, pages 102--126, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. L. Burdy, A. Requet, and J.-L. Lanet. Java applet correctness: A developer-oriented approach. In K. Araki, S. Gnesi, and D. Mandrioli, editors, FME 2003: Formal Methods: ISFME, volume 2805 of LNCS, pages 422--439. Springer, 2003.]]Google ScholarGoogle Scholar
  5. A. Courbot, M. Pavlova, G. Grimaud, and J.-J. Vandewalle. A low-footprint java-to-native compilation scheme using formal methods. submitted to Cardis06.]]Google ScholarGoogle Scholar
  6. K. K. Dhara and G. T. Leavens. Forcing behavioral subtyping through specification inheritance. In 18th International Conference on Software Engineering, Berlin, Germany, pages 258--267, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. G. T. Leavens, E. Poll, C. Clifton, Y. Cheon, C. Ruby, D. Cok, and J. Kiniry. JML Reference Manual. Department of Computer Science, Iowa State University. Available from http://www.jmlspecs.org.]]Google ScholarGoogle Scholar
  8. B. Jacobs, J. Kiniry, and M. Warnier. Java program verification challenges. In F. S. de Boer, M. M. Bonsangue, S. Graf, and W.-P. de Roever, editors, Formal Methods for Components and Objects, volume 2852, Incs, pages 202--219. Springer, Berlin, 2003.]]Google ScholarGoogle Scholar
  9. X. Leroy. Java bytecode verification: an overview. In G. Berry, H. Comon, and A. Finkel, editors, Computer Aided Verification, CAV 2001, volume 2102 of Incs, pages 265--285. Springer-Verlag, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. T. Lindholm and F. Yellin. Java Virtual Machine Specification. Addison-Wesley Longman Publishing Co., Inc., 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. G. C. Necula and P. Lee. The design and implementation of a certifying compiler. In ACM SIGPLAN'98 Conference on Programming Language Design and Implementation (PLDI), pages 333--344, 17--19 June 1998. Montreal, Canada.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Pavlova. Java bytecode logic and specification. Preliminary version. Available from http://www.inria.fr/everest/Mariela.Pavlova.]]Google ScholarGoogle Scholar
  13. M. Pavlova, G. Barthe, L. Burdy, M. Huisman, and J.-L. Lanet. Enforcing high-level security properties for applets. In CARDIS 2004. Springer-Verlag, 2004.]]Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Java bytecode specification and verification

                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
                  SAC '06: Proceedings of the 2006 ACM symposium on Applied computing
                  April 2006
                  1967 pages
                  ISBN:1595931082
                  DOI:10.1145/1141277

                  Copyright © 2006 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: 23 April 2006

                  Permissions

                  Request permissions about this article.

                  Request Permissions

                  Check for updates

                  Qualifiers

                  • Article

                  Acceptance Rates

                  Overall Acceptance Rate1,650of6,669submissions,25%

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader