Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Stack inspection: theory and variants

Published: 01 January 2002 Publication History
  • Get Citation Alerts
  • Abstract

    Stack inspection is a security mechanism implemented in runtimes such as the JVM and the CLR to accommodate components with diverse levels of trust. Although stack inspection enables the fine-grained expression of access control policies, it has rather a complex and subtle semantics. We present a formal semantics and an equational theory to explain how stack inspection affects program behaviour and code optimisations. We discuss the security properties enforced by stack inspection, and also consider variants with stronger, simpler properties.

    References

    [1]
    M. Abadi, B. Lampson, and J.-J. Levy. Analysis and caching of dependencies. In First ACM SIGPLAN International Conference on Functional Programming (ICFP'96), pages 83-91, May 1996.]]
    [2]
    S. Abramsky and L. Ong. Full abstraction in the lazy lambda calculus. Information and Computation, 105:159-267, 1993.]]
    [3]
    A. Banerjee and D. Naumann. A simple semantics and static analysis for Java security. CS Report 2001-1, Stevens Institute of Technology, 2001.]]
    [4]
    A. Banerjee and D. Naumann. Representation independence, confinement, and access control. In 29th ACM Symposium on Principles of Programming Languages (POPL'02), 2002. This volume.]]
    [5]
    M. Bartoletti, P. Degano, and G. Ferrari. Static analysis for stack inspection. In ConCoord: International Workshop on Concurrency and Coordination, volume 54 of ENTCS. Elsevier, 2001.]]
    [6]
    N. Benton, A. Kennedy, and G. Russell. Compiling Standard ML to Java bytecodes. In Third ACM SIG- PLAN International Conference on Functional Programming (ICFP'98), pages 129-140, 1998.]]
    [7]
    F. Besson, T. Jensen, D. L. M~tayer, and T. Thorn. Model checking security properties of control flow graphs. Journal of Computer Security, 9:217-250, 2001.]]
    [8]
    D. Box. Essential .NET Volume I: The Common Language Runtime. Addison Wesley, 2002. To appear.]]
    [9]
    U. Erlingsson and F. Schneider. IRM enforcement of Java stack inspection. In Proceedings 2000 IEEE Symposium on Security and Privacy, pages 246-255. IEEE Computer Society Press, 2000.]]
    [10]
    C. Fournet and A. D. Gordon. Stack inspection: Theory and variants. Technical Report MSR-TR-2001- 103, Microsoft Research, 2001.]]
    [11]
    L. Gong. Inside Java TM 2 Platform Security. Addison Wesley, 1999.]]
    [12]
    A. Gordon and A. Pitts, editors. Higher Order Operational Techniques in Semantics, Publications of the Newton Institute. Cambridge University Press, 1998.]]
    [13]
    D. Grossman, G. Morrisett, and S. Zdancewic. Syntactic type abstraction. ACM Transactions on Programming Languages and Systems, 22(6):1037-1080, 2000.]]
    [14]
    N. Hardy. The confused deputy. ACM Operating Systems Review, 22(4):36-38, Oct 1988. http://www.cis. upenn.edu/KeyKOS/ConfusedDeputy.html.]]
    [15]
    D. J. Howe. Proving congruence of bisimulation in functional programming languages. Information and Computation, 124(2):103-112, 1996.]]
    [16]
    T. Jensen, D. L. Metayer, and T. Thorn. Verification of control flow based security properties. In Proceedings 1999 IEEE Symposium on Security and Privacy, pages 89-103. IEEE Computer Society Press, 1999.]]
    [17]
    G. Karjoth. An operational semantics for Java 2 access control. In 13th Computer Security Foundations Workshop, pages 224-232. IEEE Computer Society Press, 2000.]]
    [18]
    X. Leroy and F. Rouaix. Security properties of typed applets. In J. Vitek and C. Jensen, editors, Secure Internet Programming - Security issues for Mobile and Distributed Objects, volume 1603 of LNCS, pages 147- 182. Springer-Verlag, 1999.]]
    [19]
    T. Lindholm and F. Yellin. The Java TM Virtual Machine Specification. Addison Wesley, 1997.]]
    [20]
    Microsoft Corporation. .NET Framework Developer's Guide: Security Optimizations, 2001. http://msdn.microsoft.com/library/en-us/ cpguidnf/html/cpconsecurityoptimizations.asp.]]
    [21]
    R. Milner. Fully abstract models of typed lambdacalculi. Theoretical Computer Science, 4:1-23, 1977.]]
    [22]
    E. Moggi. Notions of computations and monads. Theoretical Computer Science, 93:55-92, 1989.]]
    [23]
    J. H. Morris. Lambda-Calculus Models of Programming Languages. PhD thesis, MIT, Dec. 1968.]]
    [24]
    A. C. Myers. JFlow: Practical, mostly-static information flow control. In 26th ACM Symposium on Principles of Programming Languages (POPL'99), pages 228- 241, 1999.]]
    [25]
    P. Orbaek and J. Palsberg. Trust in the calculus. Journal of Functional Programming, 3(2):75-85, 1997.]]
    [26]
    G. D. Plotkin. Call-by-name, call-by-value and the calculus. Theoretical Computer Science, 1:125-159, 1975.]]
    [27]
    F. Pottier, C. Skalka, and S. Smith. A systematic approach to access control. In Programming Languages and Systems (ESOP 2001), volume 2028 of LNCS, pages 30-45. Springer, 2001.]]
    [28]
    M. Schinz and M. Odersky. Tail call elimination on the Java Virtual Machine. In SIGPLAN Workshop on Multi-Language Infrastructure and Interoperability (BABEL'01), volume 59(1) of ENTCS, pages 155-168. Elsevier, 2001.]]
    [29]
    C. Skalka and S. Smith. Static enforcement of security with types. In Fifth ACM SIGPLAN International Conference on Functional Programming (ICFP'00), pages 34-45, 2000.]]
    [30]
    D. S. Wallach, A. W. Appel, and E. W. Felten. Safkasi: A security mechanism for language-based systems. ACM Transactions on Software Engineering and Methodology, 9(4):341-378, 2000.]]

    Cited By

    View all

    Index Terms

    1. Stack inspection: theory and variants
      Index terms have been assigned to the content through auto-classification.

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 37, Issue 1
      Jan. 2002
      342 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/565816
      Issue’s Table of Contents
      • cover image ACM Conferences
        POPL '02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
        January 2002
        351 pages
        ISBN:1581134509
        DOI:10.1145/503272
      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: 01 January 2002
      Published in SIGPLAN Volume 37, Issue 1

      Check for updates

      Qualifiers

      • Article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)15
      • Downloads (Last 6 weeks)3

      Other Metrics

      Citations

      Cited By

      View all
      • (2018)Static use-based object confinementInternational Journal of Information Security10.1007/s10207-004-0049-54:1-2(87-104)Online publication date: 24-Dec-2018
      • (2015)The SICILIAN DefenseProceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security10.1145/2810103.2813710(1542-1557)Online publication date: 12-Oct-2015
      • (2009)Security Types for Sessions and PipelinesWeb Services and Formal Methods10.1007/978-3-642-01364-5_11(175-190)Online publication date: 30-Apr-2009
      • (2008)Execution monitoring enforcement under memory-limitation constraintsInformation and Computation10.1016/j.ic.2007.07.009206:2-4(158-184)Online publication date: 1-Feb-2008
      • (2007)CSchemaJournal of Computer Science and Technology10.1007/s11390-007-9012-z22:1(44-53)Online publication date: 1-Jan-2007
      • (2004)Channel dependent types for higher-order mobile processesACM SIGPLAN Notices10.1145/982962.96401439:1(147-160)Online publication date: 1-Jan-2004
      • (2004)Channel dependent types for higher-order mobile processesProceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/964001.964014(147-160)Online publication date: 14-Jan-2004
      • (2023)With or Without You: Programming with Effect ExclusionProceedings of the ACM on Programming Languages10.1145/36078467:ICFP(448-475)Online publication date: 31-Aug-2023
      • (2018)Propositional Dynamic Logic for Higher-Order Functional ProgramsComputer Aided Verification10.1007/978-3-319-96145-3_6(105-123)Online publication date: 18-Jul-2018
      • (2017)Inference of Security-Sensitive Entities in Libraries2017 IEEE Security and Privacy Workshops (SPW)10.1109/SPW.2017.26(102-109)Online publication date: May-2017
      • Show More Cited By

      View Options

      Get Access

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media