A subscriber identity module or subscriber identification module (SIM) is a small plastic card, which is mounted on the back of the phone. The SIM plays a role of identification by providing a user authentication, and it also securely stores personal information such as a short message service (SMS) and contacts, device-specific data, and key files needed for registering mobile networks. Recently, with Android’s growing popularity, it has begun to draw the attention of new attacks. As a result, the service providers began to use Universal Subscriber Identity Module (USIM) as a hardware-based security device, which securely stores important data such as certificates, credit cards, transportation cards, and so on. Therefore, the data inside USIM is known to be secure against attacks rather than a normal application because only authorized applications can access the data. For that reason, USIM has become crucial for the service providers to maintain the security of their services.
This thesis investigates security mechanisms associated with USIM wholistically in the current Android smartphone, starting from the USIM upto Android Applications. More specifically, we looked at 1) USIM itself, 2) devise-specific USIM framework that connects USIM and operator-specific framework, 3) operator-specific framework that sits between device-specific framework and Android applications. We first investigated the security problems of the communication process between USIM and a system framework on Android. And, we analyzed entities communicating with USIM and the framework for each layer, and also analyzed data, which are transferred during the communication. As a result, we found several vulnerabilities associated with USIM service an adversary has access to. Due to the inappropriate implementation of the device and operator’s USIM framework, we could send arbitrary commands to the USIM without proper permission. This can be accomplished by using an Android application or a modem, which is registered when connecting a mobile device to a personal computer.
By using this vulnerability, an adversary can perform all of USIM related operations including reading data such as SMSs, contacts, mobile device information, network context, and even accessing applets that store certificates and transportation cards. Furthermore, we investigated the fundamental problems of the vulnerabilities, which can be occurred in major manufacturers and operators. Based on these problems, we demonstrated that the attacks against USIM are feasible in the real world environment. Finally, we suggested mitigations in each layer, which can prevent all types of USIM related attacks.
USIM은 모바일 기기 뒷면에 장착된 작은 플라스틱 카드로 사용자를 인증하는 일종의 신분증 역할을 해왔다. 그뿐만 아니라 저장 장치의 기능도 있어 SMS, 주소록과 같은 개인 정보나 기기 고유의 데이터, 그리고 모바일 네트워크에 등록하는 데 필요한 키들을 파일 형태로 가지고 있다. 최근 들어 안드로이드의 보안성이 이슈가 되자 서비스 제작자들은 USIM을 하드웨어 기반 보안 장치로서 주목하기 시작했고, 내부에 공인증서, 신용카드, 교통 카드 등의 중요한 데이터를 담게 되었다. 이 데이터들은 통신사에게 인가받은 애플리케이션 만이 접근 할 수 있어 일반적인 애플리케이션 보다 해킹의 위협에서 멀리 떨어져 있다고 알려졌다.
USIM의 활용도 및 중요성이 높아지고 있는 이 시점에서 우리는 실제로 USIM 내부에 담긴 데이터가 안전하게 관리되고 있는지 점검하고자 한다. 안드로이드 기기 내 애플리케이션부터 USIM까지 각 개체가 어떻게 통신하고 어떤 데이터를 주고받는지 계층별로 분석한 결과, 통신과정에서 몇 가지 취약점을 발견할 수 있었다. 제조사, 통신사의 잘못된 USIM 프레임워크 구현으로 발생한 이 취약점은 안드로이드 애플리케이션 혹은 모바일 기기를 PC에 연결했을 때 등록되는 모뎀을 사용해서 발현될 수 있으며 최종적으로 공격자는 별도의 권한 없이 USIM으로 임의의 명령어를 내릴 수 있다.
이를 이용하면 공격자는 시스템에서 내리는 모든 USIM 관련 작업을 수행할 수 있는데, 저장된 SMS나 주소록, 모바일 기기 정보, 네트워크 등록 정보를 읽는 것부터 USIM 내의 공인인증서나 교통카드 등을 사용하는 어플렛들까지 접근할 수 있다.
본 논문에서는 국내 주요 제조사와 통신사들에게서 발생할 수 있는 이 취약점의 근본적인 원인을 밝히고, 해당 문제점을 이용한 공격들이 실제로 가능함을 보인다. 더 나아가 본문의 후반부에서는 이러한 공격들에 대응할 수 있는 방어법들을 계층별로 제시한다.