Security monitor inlining and certification for multithreaded Java']Java

被引:1
|
作者
Dam, Mads [1 ]
Jacobs, Bart [2 ]
Lundblad, Andreas [1 ]
Piessens, Frank [2 ]
机构
[1] Royal Inst Technol KTH, SE-10044 Stockholm, Sweden
[2] Katholieke Univ Leuven, B-3001 Louvain, Belgium
关键词
ENFORCEMENT;
D O I
10.1017/S0960129512000916
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Security monitor inlining is a technique for security policy enforcement whereby monitor functionality is injected into application code in the style of aspect-oriented programming. The intention is that the injected code enforces compliance with the policy (security), and otherwise interferes with the application as little as possible (conservativity and transparency). Such inliners are said to be correct. For sequential Java-like languages, inlining is well understood, and several provably correct inliners have been proposed. For multithreaded Java one difficulty is the need to maintain a shared monitor state. We show that this problem introduces fundamental limitations in the type of security policies that can be correctly enforced by inlining. A class of race-free policies is identified that precisely characterizes the inlineable policies by showing that inlining of a policy outside this class is either not secure or not transparent, and by exhibiting a concrete inliner for policies inside the class which is secure, conservative and transparent. The inliner is implemented for Java and applied to a number of practical application security policies. Finally, we discuss how certification in the style of proof-carrying code could be supported for inlined programs by using annotations to reduce a potentially complex verification problem for multithreaded Java bytecode to sequential verification of just the inlined code snippets.
引用
收藏
页码:528 / 565
页数:38
相关论文
共 50 条
  • [21] Static analysis of Java']Java multithreaded and distributed applications
    Demartini, C
    Sisto, R
    [J]. SOFTWARE ENGINEERING FOR PARALLEL AND DISTRIBUTED SYSTEMS - INTERNATIONAL SYMPOSIUM PROCEEDINGS, 1998, : 215 - 222
  • [22] Compiling multithreaded Java']Java bytecode for distributed execution
    Antoniu, G
    Bougé, L
    Hatcher, P
    MacBeth, M
    McGuigan, K
    Namyst, R
    [J]. EURO-PAR 2000 PARALLEL PROCESSING, PROCEEDINGS, 2000, 1900 : 1039 - 1052
  • [23] Specifying multithreaded Java']Java semantics for program verification
    Roychoudhury, A
    Mitra, T
    [J]. ICSE 2002: PROCEEDINGS OF THE 24TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 2002, : 489 - 499
  • [24] A thread monitoring system for multithreaded Java']Java programs
    Moon, Sewon
    Chang, Byeong-Mo
    [J]. ACM SIGPLAN NOTICES, 2006, 41 (05) : 21 - 29
  • [25] Interprocedural slicing of multithreaded programs with applications to Java']Java
    Nanda, Mangala Gowri
    Ramesh, S.
    [J]. ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2006, 28 (06): : 1088 - 1144
  • [26] Inductive Proof Outlines for Exceptions in Multithreaded Java']Java
    Abraham, Erika
    de Boer, Frank S.
    de Roever, Willem-Paul
    Steffen, Martin
    [J]. ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2006, 159 : 281 - 297
  • [27] Multithreaded dependence graphs for concurrent Java']Java programs
    Zhao, JJ
    [J]. INTERNATIONAL SYMPOSIUM ON SOFTWARE ENGINEERING FOR PARALLEL AND DISTRIBUTED SYSTEMS, PROCEEDINGS, 1999, : 13 - 23
  • [28] A deductive proof system for multithreaded Java']Java with exceptions
    Abraham, Erika
    de Roever, Willem-Paul
    de Boer, Frank S.
    Steffen, Martin
    [J]. FUNDAMENTA INFORMATICAE, 2008, 82 (04) : 391 - 463
  • [29] A generic static analyzer for multithreaded Java']Java programs
    Ferrara, P.
    [J]. SOFTWARE-PRACTICE & EXPERIENCE, 2013, 43 (06): : 663 - 684
  • [30] Calm Energy Accounting for Multithreaded Java']Java Applications
    Babakol, Timur
    Canino, Anthony
    Mahmoud, Khaled
    Saxena, Rachit
    Liu, Yu David
    [J]. PROCEEDINGS OF THE 28TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '20), 2020, : 976 - 988