Reverse engineering Java']Java Card and vulnerability exploitation: a shortcut to ROM

被引:0
|
作者
Mesbah, Abdelhak [1 ]
Lanet, Jean-Louis [2 ]
Mezghiche, Mohamed [1 ]
机构
[1] Univ Boumerdes, Independence Ave, Boumerdes 35000, Algeria
[2] INRIA, LHS PEC, 263 Ave Gen Leclerc, F-35042 Rennes, France
关键词
Smart card; !text type='Java']Java[!/text] Card; Reverse engineering; Native calls; Vulnerability exploitation;
D O I
10.1007/s10207-018-0401-9
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Secure elements store and manipulate assets in a secure way. The most attractive assets are the cryptographic keys stored into the memory that can be used to provide secure services to a system. For this reason, secure elements are prone to attacks. But retrieving assets inside such a highly secure device is a challenging task. This paper presents the process we used to gain access to the assets in the particular case of Java Card secure element. In a Java Card, the assets are stored securely, i.e., respecting confidentiality and integrity attributes. Only the native layers can manipulate these sensitive objects. Thus, the Java interpreter, the API and the run time act as a firewall between the assets and the Java applications that one can load into the device. Finding a vulnerability into this piece of software is of a prime importance. Finding a vulnerability into a software is often not enough to develop a complete exploit. Here, we demonstrate at the end that a Java Card applet can call the hidden native functions used to decipher the secure container that encapsulates a key. Some previous attacks have shown the ability to get access to the application code area. But the Java Card intermediate byte code detected in the dumps has shown several differences with regard to the specification, which prevents the reverse engineering of the applicative code. Thus, to avoid the execution of shell code by a hostile applet, a part of the byte code stored into the card is unknown. The transformation is done on-the-fly during the upload of an application. We present in this article a new approach for reversing the unknown instruction set of the intermediate byte code which in turn has led to reverse engineering of the Java classes of the attacked card. We discovered during the reverse that some method calls have an unusual signature. Without having access to the native code, we have inferred the semantics of the called methods and their calling convention. These methods have access to the assets of the card without being restricted by security mechanisms like the firewall. We exploit this knowledge to set up a new attack that provides a full access to the cryptographic material and allows to reset the state of the card to the initial configuration. We demonstrate the ability to call these methods at the Java level in an application to retrieve sensitive assets whatever the protections are. Then, we suggest several possibilities to mitigate these attacks.
引用
收藏
页码:85 / 100
页数:16
相关论文
共 50 条
  • [1] Reverse engineering Java Card and vulnerability exploitation: a shortcut to ROM
    Abdelhak Mesbah
    Jean-Louis Lanet
    Mohamed Mezghiche
    International Journal of Information Security, 2019, 18 : 85 - 100
  • [2] Reverse engineering a Java']Java Card memory management algorithm
    Mesbah, Abdelhak
    Lanet, Jean-Louis
    Mezghiche, Mohamed
    COMPUTERS & SECURITY, 2017, 66 : 97 - 114
  • [3] Reverse engineering Java']Java card applets using power analysis
    Vermoen, Dennis
    Witteman, Marc
    Gaydadjiev, Georgi N.
    INFORMATION SECURITY THEORY AND PRACTICES: SMART CARDS, MOBILE AND UBIQUITOUS COMPUTING SYSTEMS, PROCEEDINGS, 2007, 4462 : 138 - +
  • [4] Reverse engineering a Java Card memory management algorithm
    LIMOSE Laboratory, University of Boumerdes, Independence Avenue, 35000, Algeria
    不详
    35042, France
    Comput Secur, (97-114):
  • [5] A Security Vulnerability of Java']Java Card on Array Access in Financial System
    Xu, Jiang-pei
    Wu, Li-ji
    Yang, Xiang-jun
    Wang, Yu-zhong
    Zhang, Xiang-min
    2013 22ND WIRELESS AND OPTICAL COMMUNICATIONS CONFERENCE (WOCC 2013), 2013, : 707 - 710
  • [6] Shimba -: an environment for reverse engineering Java']Java software systems
    Systä, T
    Koskimies, K
    Müller, H
    SOFTWARE-PRACTICE & EXPERIENCE, 2001, 31 (04): : 371 - 394
  • [7] 8-bit Java']Java: the Java']Java card
    Grehan, R
    COMPUTER DESIGN, 1997, 36 (05): : 80 - 80
  • [8] Formalizing the safety of Java']Java, the Java']Java virtual machine, and Java']Java card
    Hartel, PH
    Moreau, L
    ACM COMPUTING SURVEYS, 2001, 33 (04) : 517 - 558
  • [9] Data model reverse engineering in migrating a legacy system to Java']Java
    Ceccato, Mariano
    Dean, Thomas Roy
    Tonella, Paolo
    Marchignoli, Davide
    FIFTEENTH WORKING CONFERENCE ON REVERSE ENGINEERING, PROCEEDINGS, 2008, : 177 - +
  • [10] A Patterns based reverse engineering approach for Java']Java source code
    Couto, Rui
    Ribeiro, Antonio Nestor
    Campos, Jose Creissac
    PROCEEDINGS OF THE 2012 IEEE 35TH SOFTWARE ENGINEERING WORKSHOP (SEW 2012), 2012, : 140 - 147