소개
ScanDal은 안드로이드 앱의 개인정보 유출을 앱을 실행해보지 않고 자동으로 안전하게 잡아내는 도구입니다.
- 문제 상황: 사용자의 개인정보를 몰래 훔쳐가는 악성 스마트폰 앱이 증가하고 있습니다. 안드로이드에는 앱의 개인정보 접근을 통제하기 위해 기본적으로 권한 체계가 있지만 유명무실합니다. 개발자는 자신의 앱이 접근하는 정보의 수준과 내용에 따라 필요한 권한을 미리 선언해 주도록 되어 있는데, 이것만으로는 실제로 앱이 정보를 읽기만 하는지, 아니면 이 정보를 외부로 유출하는지는 알 수 없기 때문입니다. 또한 많은 개발자들이 개발 편의를 위해 불필요한 권한을 과도하게 선언하는 경향이 있으며, 심지어 사용자들도 권한 정보를 자세히 읽지 않고 앱을 설치하는 경우가 많습니다.
- 해결 방법: ScanDal은 안전한 정적 분석기(static analyzer)입니다.
- 앱을 직접 실행하지 않고도
- 앱 패키지 파일을 입력으로 받아
- 개인정보 유출 여부를 잡아냅니다.
ScanDal은 요약 해석(abstract interpretation) 이론에 따라 디자인된 분석기입니다.
특징
- 개인정보의 흐름을 추적: ScanDal은 개인정보의 출처(source)에서 만들어진 값이 인터넷이나 문자메시지를 통해 새어나가는 곳(sink)이 있는지 잡아냅니다. 추적하는 개인정보는 위치정보, 기기 고유번호(IMEI, IMSI, ICC-ID), 전화번호, 카메라를 통한 사진과 영상, 마이크를 통한 음성 등입니다.
- Dalvik 기계어를 대상으로 분석: ScanDal은 역공학 기법을 이용해 자바 코드를 생성한 뒤 이를 분석하지 않고 Dalvik 기게어를 직접 다룹니다. 이는 dex2jar 등의 역공학 기법이 완전하지 않을 뿐 아니라, 악성 앱의 경우는 코드가 Dalvik 기계어 수준에서도 변조될 수 있기 때문입니다. ScanDal에 Dal이라는 이름이 붙은 이유이기도 합니다.
시연
위 비디오는 ScanDal을 이용하여 Google Wallpapers 앱을 분석해 개인정보 유출을 잡아내는 과정을 보여 줍니다. 분석 결과를 보면, 기기 고유번호가 인터넷을 통해 유출됨을 알 수 있습니다.
실험
- 안드로이드 공식 마켓 앱 대상:
ScanDal을 이용해 공식 마켓의 인기 무료 앱 90개를 (2011년 7월 기준) 분석한 결과,
11개의 앱에서 개인정보 유출이 감지되었습니다.
앱 이름 코드크기 분석시간 메모리소모 검출된 개인정보 유출 상황 Kids Preschool Puzzle 87 1 56 위치정보 → Flurry Job Search 167 1 108 위치정보 → 서버 Kids Shapes 225 1 155 위치정보 → Flurry Kids ABC Phonics 134 3 119 위치정보 → Flurry Backgrounds HD Wallpapers 109 4 141 기기고유번호 → 서버 Bible Quotes 138 8 263 위치정보 → AdSense 서버 ES Task Manager 158 19 423 위치정보 → AdSense 서버 Multi Touch Paint 198 47 727 위치정보 → AdMob 서버 Adao File Manager 255 62 1149 위치정보 → AdMob 서버 (D-Day) The Day Before 293 224 2657 위치정보 → AdMob 서버 프리즘 FreeSMS 387 538 185 위치정보 → Flurry
- 비공식 마켓 앱 대상: 알려진 변조된 앱 6개를 비공식 마켓에서 받아 분석한 결과, 6개 앱 모두에서 위치정보, 기기 고유번호, 전화번호 등 개인정보 유출이 광범위하게 감지되었습니다. 이 앱들은 공식 마켓에서도 받을 수 있으나, 악성 앱 제작자가 이를 악의적으로 변조하여 비공식 마켓에 유포하기도 합니다. 겉으로 보기에는 같은 기능을 하는 것으로 보이지만 변조된 앱은 민감한 정보를 몰래 유출한다는 차이가 있습니다.
앱 이름 | 코드크기 | 분석시간 | 메모리소모 | 검출된 개인정보 유출 상황 |
---|---|---|---|---|
Shot Gun Free | 95 | 36 | 164 | 휴대폰번호, 기기고유번호 위치정보 → 악성 서버 |
Baseball Superstars 2010 | 165 | 61 | 285 | |
Monkey Jump 2 | 169 | 74 | 442 | |
Gold Miner | 191 | 81 | 481 | |
Mini Army | 480 | 174 | 1292 | |
Xing Metro | 253 | 23049 | 1784 |
코드크기는 dex 파일의 크기(KB)입니다. 분석시간은 분석에 걸린 CPU 시간(초)입니다. 메모리소모는 분석 중에 사용하는 최대 메모리 크기(MB)입니다. Flurry는 앱 사용 행태를 분석하는 모듈의 서버이며, AdMob과 AdSense는 광고 모듈 서버입니다. 빠져나가는 곳이 '서버'라고만 되어있는 경우는 앱의 실행에 필요한 데이터들이 들어있는 컨텐츠 서버입니다.
논문
ScanDal: Static Analyzer for Detecting Privacy Leaks in Android Applications, Mobile Security TechnologiesJinyung Kim, Yongho Yoon, Kwangkeun Yi (Seoul National University), Junbum Shin (Samsung Electronics)
MoST 2012: Mobile Security Technologies, May 2012
자료
문의
ScanDal에 관한 문의는 scandal _at_ ropas.snu.ac.kr로 해 주세요.
본 연구는 삼성전자 DMC연구소의 지원과, 교육과학기술부 / 한국연구재단 선도연구센터 육성사업의 지원과, 서울대학교 두뇌한국21 정보사업단의 지원을 받았습니다.