Hardening Java']Java's Access Control by Abolishing Implicit Privilege Elevation

被引:8
|
作者
Holzinger, Philipp [1 ]
Hermann, Ben [2 ]
Lerch, Johannes [2 ]
Bodden, Eric [3 ,4 ]
Mezini, Mira [2 ]
机构
[1] Fraunhofer SIT, Darmstadt, Germany
[2] Tech Univ Darmstadt, Darmstadt, Germany
[3] Fraunhofer IEM, Paderborn, Germany
[4] Paderborn Univ, Paderborn, Germany
关键词
STACK INSPECTION;
D O I
10.1109/SP.2017.16
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
While the Java runtime is installed on billions of devices and servers worldwide, it remains a primary attack vector for online criminals. As recent studies show, the majority of all exploited Java vulnerabilities comprise incorrect or insufficient implementations of access-control checks. This paper for the first time studies the problem in depth. As we find, attacks are enabled by shortcuts that short-circuit Java's general principle of stack-based access control. These shortcuts, originally introduced for ease of use and to improve performance, cause Java to elevate the privileges of code implicitly. As we show, this creates many pitfalls for software maintenance, making it all too easy for maintainers of the runtime to introduce blatant confused-deputy vulnerabilities even by just applying normally semantics-preserving refactorings. How can this problem be solved? Can one implement Java's access control without shortcuts, and if so, does this implementation remain usable and efficient? To answer those questions, we conducted a tool-assisted adaptation of the Java Class Library (JCL), avoiding (most) shortcuts and therefore moving to a fully explicit model of privilege elevation. As we show, the proposed changes significantly harden the JCL against attacks: they effectively hinder the introduction of new confused-deputy vulnerabilities in future library versions, and successfully restrict the capabilities of attackers when exploiting certain existing vulnerabilities. We discuss usability considerations, and through a set of large-scale experiments show that with current JVM technology such a faithful implementation of stack-based access control induces no observable performance loss.
引用
收藏
页码:1027 / 1040
页数:14
相关论文
共 45 条
  • [1] Aspectizing Java']Java Access Control
    Toledo, Rodolfo
    Nunez, Angel
    Tanter, Eric
    Noye, Jacques
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2012, 38 (01) : 101 - 117
  • [2] A distributed access control model for Java']Java
    Molva, R
    Roudier, Y
    COMPUTER SECURITY - ESORICS 2000, PROCEEDINGS, 2000, 1895 : 291 - 308
  • [3] Security Enhanced Java']Java: Mandatory Access Control for the Java']Java Virtual Machine
    Venelle, Benjamin
    Briffaut, Jeremy
    Clevy, Laurent
    Toinard, Christian
    2013 IEEE 16TH INTERNATIONAL SYMPOSIUM ON OBJECT/COMPONENT/SERVICE-ORIENTED REAL-TIME DISTRIBUTED COMPUTING (ISORC), 2013,
  • [4] Access Control of Web and Java']Java Based Applications
    Tso, Kam S.
    Pajevski, Michael J.
    Johnson, Bryan
    2011 IEEE 17TH PACIFIC RIM INTERNATIONAL SYMPOSIUM ON DEPENDABLE COMPUTING (PRDC), 2011, : 320 - 325
  • [5] An operational semantics of Java']Java 2 access control
    Karjoth, G
    13TH IEEE COMPUTER SECURITY FOUNDATIONS WORKSHOP, PROCEEDINGS, 2000, : 224 - 232
  • [6] Extending Java']Java for package based access control
    Papa, M
    Bremer, O
    Chandia, R
    Hale, J
    Shenoi, S
    16TH ANNUAL COMPUTER SECURITY APPLICATIONS CONFERENCE, PROCEEDINGS, 2000, : 67 - 76
  • [7] Java']Java's RAD route to data access
    Grehan, R
    BYTE, 1997, 22 (02): : 192 - 192
  • [8] A Formalization of Java']Java's Concurrent Access Modes
    Bender, John
    Palsberg, Jens
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (OOPSLA):
  • [9] Access Control in Java']JavaScript
    Toledo, Rodolfo
    Tanter, Eric
    IEEE SOFTWARE, 2011, 28 (05) : 76 - 84
  • [10] A flexible access control service for Java']Java mobile code
    Corradi, A
    Montanari, R
    Lupu, E
    Sloman, M
    Stefanelli, C
    16TH ANNUAL COMPUTER SECURITY APPLICATIONS CONFERENCE, PROCEEDINGS, 2000, : 356 - 365